From a381e8ea62441b6715ba9bcb0e04332fd914f8b1 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 --- 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 d334a22dd2..9188ae64f8 100644 --- a/gdk/quartz/gdkevents-quartz.c +++ b/gdk/quartz/gdkevents-quartz.c @@ -799,9 +799,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]) { @@ -809,18 +809,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; @@ -831,7 +832,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; }