Fix clicks on the menu bar when GPM mouse is in use.
src/keyboard.c (make_lispy_event): Remove GPM-specific code that handles mouse clicks. Instead, let GPM use the same code as all the other mice use. See the discussion starting at http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00521.html for the details of the problem with the menu bar this fixes.
This commit is contained in:
parent
d141d70112
commit
c4e3099ff4
2 changed files with 16 additions and 50 deletions
|
@ -1,3 +1,11 @@
|
|||
2013-10-18 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* keyboard.c (make_lispy_event): Remove GPM-specific code that
|
||||
handles mouse clicks. Instead, let GPM use the same code as all
|
||||
the other mice use. See the discussion starting at
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00521.html
|
||||
for the details of the problem with the menu bar this fixes.
|
||||
|
||||
2013-10-18 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
Remove port-specific display name lists to avoid extra
|
||||
|
|
|
@ -5547,6 +5547,9 @@ make_lispy_event (struct input_event *event)
|
|||
/* 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 *event)
|
|||
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 *event)
|
|||
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:
|
||||
|
|
Loading…
Add table
Reference in a new issue