[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Input for TTY menus
From: |
Eli Zaretskii |
Subject: |
Re: Input for TTY menus |
Date: |
Fri, 18 Oct 2013 12:13:45 +0300 |
> From: Darren Hoo <address@hidden>
> Date: Fri, 18 Oct 2013 15:37:06 +0800
>
> I am not quite handy on this code, but I'll give it a try, is what follows
> helpul?
Yes, it's very helpful: I failed to notice that GPM mouse clicks are
reported as a different event kind, and are handled by separate code
(boy, do I hate this kind of segregation by platform-specific
conditions!).
Can you try the patch below, and see if it fixes the menu-bar issue
with GPM, and does not cause any adverse effects on the rest of GPM
mouse functionality?
=== modified file 'src/keyboard.c'
--- src/keyboard.c 2013-10-18 04:27:34 +0000
+++ src/keyboard.c 2013-10-18 09:05:24 +0000
@@ -5547,6 +5547,9 @@ make_lispy_event (struct input_event *ev
/* A mouse click. Figure out where it is, decide whether it's
a press, click or drag, and build the appropriate structure. */
case MOUSE_CLICK_EVENT:
+#ifdef HAVE_GPM
+ case GPM_CLICK_EVENT:
+#endif
#ifndef USE_TOOLKIT_SCROLL_BARS
case SCROLL_BAR_CLICK_EVENT:
#endif
@@ -5560,7 +5563,11 @@ make_lispy_event (struct input_event *ev
position = Qnil;
/* Build the position as appropriate for this mouse click. */
- if (event->kind == MOUSE_CLICK_EVENT)
+ if (event->kind == MOUSE_CLICK_EVENT
+#ifdef HAVE_GPM
+ || event->kind == GPM_CLICK_EVENT
+#endif
+ )
{
struct frame *f = XFRAME (event->frame_or_window);
int row, column;
@@ -6025,55 +6032,6 @@ make_lispy_event (struct input_event *ev
case CONFIG_CHANGED_EVENT:
return list3 (Qconfig_changed_event,
event->arg, event->frame_or_window);
-#ifdef HAVE_GPM
- case GPM_CLICK_EVENT:
- {
- struct frame *f = XFRAME (event->frame_or_window);
- Lisp_Object head, position;
- Lisp_Object *start_pos_ptr;
- Lisp_Object start_pos;
- int button = event->code;
-
- if (button >= ASIZE (button_down_location))
- {
- ptrdiff_t incr = button - ASIZE (button_down_location) + 1;
- button_down_location = larger_vector (button_down_location,
- incr, -1);
- mouse_syms = larger_vector (mouse_syms, incr, -1);
- }
-
- start_pos_ptr = aref_addr (button_down_location, button);
- start_pos = *start_pos_ptr;
-
- position = make_lispy_position (f, event->x, event->y,
- event->timestamp);
-
- if (event->modifiers & down_modifier)
- *start_pos_ptr = Fcopy_alist (position);
- else if (event->modifiers & (up_modifier | drag_modifier))
- {
- if (!CONSP (start_pos))
- return Qnil;
- event->modifiers &= ~up_modifier;
- }
-
- head = modify_event_symbol (button,
- event->modifiers,
- Qmouse_click, Vlispy_mouse_stem,
- NULL,
- &mouse_syms,
- ASIZE (mouse_syms));
-
- if (event->modifiers & drag_modifier)
- return list3 (head, start_pos, position);
- else if (event->modifiers & double_modifier)
- return list3 (head, position, make_number (2));
- else if (event->modifiers & triple_modifier)
- return list3 (head, position, make_number (3));
- else
- return list2 (head, position);
- }
-#endif /* HAVE_GPM */
/* The 'kind' field of the event is something we don't recognize. */
default:
- Re: Input for TTY menus, Darren Hoo, 2013/10/17
- Re: Input for TTY menus, Eli Zaretskii, 2013/10/17
- Re: Input for TTY menus, Darren Hoo, 2013/10/18
- Re: Input for TTY menus, Eli Zaretskii, 2013/10/18
- Re: Input for TTY menus, Darren Hoo, 2013/10/18
- Re: Input for TTY menus,
Eli Zaretskii <=
- Re: Input for TTY menus, Darren Hoo, 2013/10/18
- Re: Input for TTY menus, Eli Zaretskii, 2013/10/18
- Re: Input for TTY menus, Eli Zaretskii, 2013/10/18
- Re: Input for TTY menus, Darren Hoo, 2013/10/19
- Re: Input for TTY menus, Darren Hoo, 2013/10/19
- Re: Input for TTY menus, Darren Hoo, 2013/10/19
- Re: Input for TTY menus, Jan Djärv, 2013/10/20
- Re: Input for TTY menus, Eli Zaretskii, 2013/10/18
- Re: Input for TTY menus, Stefan Monnier, 2013/10/18
- Re: Input for TTY menus, Eli Zaretskii, 2013/10/18