From 5f6c70f21175d2b4f34aac765febc98b62028734 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Wed, 9 Nov 2011 00:25:01 +0100 Subject: [PATCH] quartz: include all buttons' states in GdkEventButton.state (cherry picked from commit a381e8ea62441b6715ba9bcb0e04332fd914f8b1) --- gdk/quartz/gdkevents-quartz.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c index f5e100c56a..f3b090dd8d 100644 --- a/gdk/quartz/gdkevents-quartz.c +++ b/gdk/quartz/gdkevents-quartz.c @@ -802,9 +802,9 @@ fill_button_event (GdkWindow *window, { GdkEventType type; gint state; - gint button; - state = get_keyboard_modifiers_from_ns_event (nsevent); + state = get_keyboard_modifiers_from_ns_event (nsevent) | + _gdk_quartz_events_get_current_mouse_modifiers (); switch ([nsevent type]) { @@ -812,18 +812,19 @@ fill_button_event (GdkWindow *window, case NSRightMouseDown: case NSOtherMouseDown: type = GDK_BUTTON_PRESS; + state &= ~get_mouse_button_modifiers_from_ns_event (nsevent); break; + case NSLeftMouseUp: case NSRightMouseUp: case NSOtherMouseUp: type = GDK_BUTTON_RELEASE; state |= get_mouse_button_modifiers_from_ns_event (nsevent); break; + default: g_assert_not_reached (); } - - button = get_mouse_button_from_ns_event (nsevent); event->any.type = type; event->button.window = window; @@ -834,7 +835,7 @@ fill_button_event (GdkWindow *window, event->button.y_root = y_root; /* FIXME event->axes */ event->button.state = state; - event->button.button = button; + event->button.button = get_mouse_button_from_ns_event (nsevent); event->button.device = _gdk_display->core_pointer; }