do not send mouse tracking when ctrl/shift are pressed. Closes T39, T535
Do just like xterm. It uses them to show some popups. Ctrl+mouse makes box selection.
This commit is contained in:
parent
f6e8a42d9a
commit
e5efdabd27
|
@ -2608,15 +2608,13 @@ _rep_mouse_down(Termio *sd, Evas_Event_Mouse_Down *ev, int cx, int cy)
|
|||
}
|
||||
else
|
||||
{
|
||||
int shift = evas_key_modifier_is_set(ev->modifiers, "Shift") ? 4 : 0;
|
||||
int meta = evas_key_modifier_is_set(ev->modifiers, "Alt") ? 8 : 0;
|
||||
int ctrl = evas_key_modifier_is_set(ev->modifiers, "Control") ? 16 : 0;
|
||||
|
||||
if (btn > 2) btn = 0;
|
||||
buf[0] = 0x1b;
|
||||
buf[1] = '[';
|
||||
buf[2] = 'M';
|
||||
buf[3] = (btn | shift | meta | ctrl) + ' ';
|
||||
buf[3] = (btn | meta) + ' ';
|
||||
buf[4] = cx + 1 + ' ';
|
||||
buf[5] = cy + 1 + ' ';
|
||||
buf[6] = 0;
|
||||
|
@ -2627,16 +2625,14 @@ _rep_mouse_down(Termio *sd, Evas_Event_Mouse_Down *ev, int cx, int cy)
|
|||
break;
|
||||
case MOUSE_EXT_UTF8: // ESC.[.M.BTN/FLGS.XUTF8.YUTF8
|
||||
{
|
||||
int shift = evas_key_modifier_is_set(ev->modifiers, "Shift") ? 4 : 0;
|
||||
int meta = evas_key_modifier_is_set(ev->modifiers, "Alt") ? 8 : 0;
|
||||
int ctrl = evas_key_modifier_is_set(ev->modifiers, "Control") ? 16 : 0;
|
||||
int v, i;
|
||||
|
||||
if (btn > 2) btn = 0;
|
||||
buf[0] = 0x1b;
|
||||
buf[1] = '[';
|
||||
buf[2] = 'M';
|
||||
buf[3] = (btn | shift | meta | ctrl) + ' ';
|
||||
buf[3] = (btn | meta) + ' ';
|
||||
i = 4;
|
||||
v = cx + 1 + ' ';
|
||||
if (v <= 127) buf[i++] = v;
|
||||
|
@ -2659,25 +2655,21 @@ _rep_mouse_down(Termio *sd, Evas_Event_Mouse_Down *ev, int cx, int cy)
|
|||
break;
|
||||
case MOUSE_EXT_SGR: // ESC.[.<.NUM.;.NUM.;.NUM.M
|
||||
{
|
||||
int shift = evas_key_modifier_is_set(ev->modifiers, "Shift") ? 4 : 0;
|
||||
int meta = evas_key_modifier_is_set(ev->modifiers, "Alt") ? 8 : 0;
|
||||
int ctrl = evas_key_modifier_is_set(ev->modifiers, "Control") ? 16 : 0;
|
||||
|
||||
snprintf(buf, sizeof(buf), "%c[<%i;%i;%iM", 0x1b,
|
||||
(btn | shift | meta | ctrl), cx + 1, cy + 1);
|
||||
(btn | meta), cx + 1, cy + 1);
|
||||
termpty_write(sd->pty, buf, strlen(buf));
|
||||
ret = EINA_TRUE;
|
||||
}
|
||||
break;
|
||||
case MOUSE_EXT_URXVT: // ESC.[.NUM.;.NUM.;.NUM.M
|
||||
{
|
||||
int shift = evas_key_modifier_is_set(ev->modifiers, "Shift") ? 4 : 0;
|
||||
int meta = evas_key_modifier_is_set(ev->modifiers, "Alt") ? 8 : 0;
|
||||
int ctrl = evas_key_modifier_is_set(ev->modifiers, "Control") ? 16 : 0;
|
||||
|
||||
if (btn > 2) btn = 0;
|
||||
snprintf(buf, sizeof(buf), "%c[%i;%i;%iM", 0x1b,
|
||||
(btn | shift | meta | ctrl) + ' ',
|
||||
(btn | meta) + ' ',
|
||||
cx + 1, cy + 1);
|
||||
termpty_write(sd->pty, buf, strlen(buf));
|
||||
ret = EINA_TRUE;
|
||||
|
@ -2694,7 +2686,7 @@ _rep_mouse_up(Termio *sd, Evas_Event_Mouse_Up *ev, int cx, int cy)
|
|||
{
|
||||
char buf[64];
|
||||
Eina_Bool ret = EINA_FALSE;
|
||||
int shift, meta, ctrl;
|
||||
int meta;
|
||||
|
||||
if ((sd->pty->mouse_mode == MOUSE_OFF) ||
|
||||
(sd->pty->mouse_mode == MOUSE_X10))
|
||||
|
@ -2702,9 +2694,7 @@ _rep_mouse_up(Termio *sd, Evas_Event_Mouse_Up *ev, int cx, int cy)
|
|||
if (sd->mouse.button == ev->button)
|
||||
sd->mouse.button = 0;
|
||||
|
||||
shift = evas_key_modifier_is_set(ev->modifiers, "Shift") ? 4 : 0;
|
||||
meta = evas_key_modifier_is_set(ev->modifiers, "Alt") ? 8 : 0;
|
||||
ctrl = evas_key_modifier_is_set(ev->modifiers, "Control") ? 16 : 0;
|
||||
|
||||
switch (sd->pty->mouse_ext)
|
||||
{
|
||||
|
@ -2714,7 +2704,7 @@ _rep_mouse_up(Termio *sd, Evas_Event_Mouse_Up *ev, int cx, int cy)
|
|||
buf[0] = 0x1b;
|
||||
buf[1] = '[';
|
||||
buf[2] = 'M';
|
||||
buf[3] = (3 | shift | meta | ctrl) + ' ';
|
||||
buf[3] = (3 | meta) + ' ';
|
||||
buf[4] = cx + 1 + ' ';
|
||||
buf[5] = cy + 1 + ' ';
|
||||
buf[6] = 0;
|
||||
|
@ -2729,7 +2719,7 @@ _rep_mouse_up(Termio *sd, Evas_Event_Mouse_Up *ev, int cx, int cy)
|
|||
buf[0] = 0x1b;
|
||||
buf[1] = '[';
|
||||
buf[2] = 'M';
|
||||
buf[3] = (3 | shift | meta | ctrl) + ' ';
|
||||
buf[3] = (3 | meta) + ' ';
|
||||
i = 4;
|
||||
v = cx + 1 + ' ';
|
||||
if (v <= 127) buf[i++] = v;
|
||||
|
@ -2753,7 +2743,7 @@ _rep_mouse_up(Termio *sd, Evas_Event_Mouse_Up *ev, int cx, int cy)
|
|||
case MOUSE_EXT_SGR: // ESC.[.<.NUM.;.NUM.;.NUM.m
|
||||
{
|
||||
snprintf(buf, sizeof(buf), "%c[<%i;%i;%im", 0x1b,
|
||||
(3 | shift | meta | ctrl), cx + 1, cy + 1);
|
||||
(3 | meta), cx + 1, cy + 1);
|
||||
termpty_write(sd->pty, buf, strlen(buf));
|
||||
ret = EINA_TRUE;
|
||||
}
|
||||
|
@ -2761,7 +2751,7 @@ _rep_mouse_up(Termio *sd, Evas_Event_Mouse_Up *ev, int cx, int cy)
|
|||
case MOUSE_EXT_URXVT: // ESC.[.NUM.;.NUM.;.NUM.M
|
||||
{
|
||||
snprintf(buf, sizeof(buf), "%c[%i;%i;%iM", 0x1b,
|
||||
(3 | shift | meta | ctrl) + ' ',
|
||||
(3 | meta) + ' ',
|
||||
cx + 1, cy + 1);
|
||||
termpty_write(sd->pty, buf, strlen(buf));
|
||||
ret = EINA_TRUE;
|
||||
|
@ -2778,7 +2768,7 @@ _rep_mouse_move(Termio *sd, Evas_Event_Mouse_Move *ev, int cx, int cy)
|
|||
{
|
||||
char buf[64];
|
||||
Eina_Bool ret = EINA_FALSE;
|
||||
int btn, shift, meta, ctrl;
|
||||
int btn, meta;
|
||||
|
||||
if ((sd->pty->mouse_mode == MOUSE_OFF) ||
|
||||
(sd->pty->mouse_mode == MOUSE_X10) ||
|
||||
|
@ -2789,9 +2779,7 @@ _rep_mouse_move(Termio *sd, Evas_Event_Mouse_Move *ev, int cx, int cy)
|
|||
return EINA_FALSE;
|
||||
|
||||
btn = sd->mouse.button - 1;
|
||||
shift = evas_key_modifier_is_set(ev->modifiers, "Shift") ? 4 : 0;
|
||||
meta = evas_key_modifier_is_set(ev->modifiers, "Alt") ? 8 : 0;
|
||||
ctrl = evas_key_modifier_is_set(ev->modifiers, "Control") ? 16 : 0;
|
||||
|
||||
switch (sd->pty->mouse_ext)
|
||||
{
|
||||
|
@ -2802,7 +2790,7 @@ _rep_mouse_move(Termio *sd, Evas_Event_Mouse_Move *ev, int cx, int cy)
|
|||
buf[0] = 0x1b;
|
||||
buf[1] = '[';
|
||||
buf[2] = 'M';
|
||||
buf[3] = (btn | shift | meta | ctrl | 32) + ' ';
|
||||
buf[3] = (btn | meta | 32) + ' ';
|
||||
buf[4] = cx + 1 + ' ';
|
||||
buf[5] = cy + 1 + ' ';
|
||||
buf[6] = 0;
|
||||
|
@ -2818,7 +2806,7 @@ _rep_mouse_move(Termio *sd, Evas_Event_Mouse_Move *ev, int cx, int cy)
|
|||
buf[0] = 0x1b;
|
||||
buf[1] = '[';
|
||||
buf[2] = 'M';
|
||||
buf[3] = (btn | shift | meta | ctrl | 32) + ' ';
|
||||
buf[3] = (btn | meta | 32) + ' ';
|
||||
i = 4;
|
||||
v = cx + 1 + ' ';
|
||||
if (v <= 127) buf[i++] = v;
|
||||
|
@ -2842,7 +2830,7 @@ _rep_mouse_move(Termio *sd, Evas_Event_Mouse_Move *ev, int cx, int cy)
|
|||
case MOUSE_EXT_SGR: // ESC.[.<.NUM.;.NUM.;.NUM.M
|
||||
{
|
||||
snprintf(buf, sizeof(buf), "%c[<%i;%i;%iM", 0x1b,
|
||||
(btn | shift | meta | ctrl | 32), cx + 1, cy + 1);
|
||||
(btn | meta | 32), cx + 1, cy + 1);
|
||||
termpty_write(sd->pty, buf, strlen(buf));
|
||||
ret = EINA_TRUE;
|
||||
}
|
||||
|
@ -2851,7 +2839,7 @@ _rep_mouse_move(Termio *sd, Evas_Event_Mouse_Move *ev, int cx, int cy)
|
|||
{
|
||||
if (btn > 2) btn = 0;
|
||||
snprintf(buf, sizeof(buf), "%c[%i;%i;%iM", 0x1b,
|
||||
(btn | shift | meta | ctrl | 32) + ' ',
|
||||
(btn | meta | 32) + ' ',
|
||||
cx + 1, cy + 1);
|
||||
termpty_write(sd->pty, buf, strlen(buf));
|
||||
ret = EINA_TRUE;
|
||||
|
@ -3022,23 +3010,28 @@ _smart_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUS
|
|||
Evas_Event_Mouse_Down *ev = event;
|
||||
Termio *sd;
|
||||
int cx, cy;
|
||||
int shift, ctrl;
|
||||
|
||||
shift = evas_key_modifier_is_set(ev->modifiers, "Shift");
|
||||
ctrl = evas_key_modifier_is_set(ev->modifiers, "Control");
|
||||
|
||||
sd = evas_object_smart_data_get(data);
|
||||
if (!sd) return;
|
||||
_smart_xy_to_cursor(data, ev->canvas.x, ev->canvas.y, &cx, &cy);
|
||||
sd->didclick = EINA_FALSE;
|
||||
if ((ev->button == 3) && evas_key_modifier_is_set(ev->modifiers, "Control"))
|
||||
if ((ev->button == 3) && ctrl)
|
||||
{
|
||||
evas_object_smart_callback_call(data, "options", NULL);
|
||||
return;
|
||||
}
|
||||
if ((ev->button == 3) && evas_key_modifier_is_set(ev->modifiers, "Shift"))
|
||||
if ((ev->button == 3) && shift)
|
||||
{
|
||||
termio_debugwhite_set(data, !sd->debugwhite);
|
||||
printf("debugwhite %i\n", sd->debugwhite);
|
||||
return;
|
||||
}
|
||||
if (_rep_mouse_down(sd, ev, cx, cy)) return;
|
||||
if (!shift && !ctrl)
|
||||
if (_rep_mouse_down(sd, ev, cx, cy)) return;
|
||||
if (ev->button == 1)
|
||||
{
|
||||
if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK)
|
||||
|
@ -3050,7 +3043,7 @@ _smart_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUS
|
|||
}
|
||||
else if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
|
||||
{
|
||||
if (evas_key_modifier_is_set(ev->modifiers, "Shift") &&
|
||||
if (shift &&
|
||||
sd->backup_sel.available)
|
||||
{
|
||||
_sel_set(data, EINA_TRUE);
|
||||
|
@ -3140,8 +3133,7 @@ _smart_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUS
|
|||
{
|
||||
sd->moved = EINA_FALSE;
|
||||
sd->pty->selection.is_box =
|
||||
(evas_key_modifier_is_set(ev->modifiers, "Shift") ||
|
||||
evas_key_modifier_is_set(ev->modifiers, "Control") ||
|
||||
(ctrl ||
|
||||
evas_key_modifier_is_set(ev->modifiers, "Alt"));
|
||||
sd->pty->selection.start.x = cx;
|
||||
sd->pty->selection.start.y = cy - sd->scroll;
|
||||
|
@ -3172,11 +3164,16 @@ _smart_cb_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED
|
|||
Evas_Event_Mouse_Up *ev = event;
|
||||
Termio *sd;
|
||||
int cx, cy;
|
||||
int shift, ctrl;
|
||||
|
||||
shift = evas_key_modifier_is_set(ev->modifiers, "Shift");
|
||||
ctrl = evas_key_modifier_is_set(ev->modifiers, "Control");
|
||||
|
||||
sd = evas_object_smart_data_get(data);
|
||||
if (!sd) return;
|
||||
_smart_xy_to_cursor(data, ev->canvas.x, ev->canvas.y, &cx, &cy);
|
||||
if (_rep_mouse_up(sd, ev, cx, cy)) return;
|
||||
if (!shift && !ctrl)
|
||||
if (_rep_mouse_up(sd, ev, cx, cy)) return;
|
||||
if (sd->link.down.dnd) return;
|
||||
if (sd->pty->selection.makesel)
|
||||
{
|
||||
|
@ -3265,6 +3262,10 @@ _smart_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUS
|
|||
int cx, cy;
|
||||
Evas_Coord ox, oy;
|
||||
Eina_Bool scroll = EINA_FALSE;
|
||||
int shift, ctrl;
|
||||
|
||||
shift = evas_key_modifier_is_set(ev->modifiers, "Shift");
|
||||
ctrl = evas_key_modifier_is_set(ev->modifiers, "Control");
|
||||
|
||||
sd = evas_object_smart_data_get(data);
|
||||
if (!sd) return;
|
||||
|
@ -3304,7 +3305,8 @@ _smart_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUS
|
|||
|
||||
sd->mouse.cx = cx;
|
||||
sd->mouse.cy = cy;
|
||||
if (_rep_mouse_move(sd, ev, cx, cy)) return;
|
||||
if (!shift && !ctrl)
|
||||
if (_rep_mouse_move(sd, ev, cx, cy)) return;
|
||||
if (sd->link.down.dnd)
|
||||
{
|
||||
sd->pty->selection.makesel = EINA_FALSE;
|
||||
|
|
Loading…
Reference in New Issue