From 1e20430333aee952f55f6caec4d55238a0160bf9 Mon Sep 17 00:00:00 2001 From: keis Date: Sat, 23 Apr 2011 14:19:36 +0200 Subject: include current button press in modstate like done in key_to_event --- src/events.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/events.c b/src/events.c index 3074b34..2da3e38 100644 --- a/src/events.c +++ b/src/events.c @@ -267,6 +267,12 @@ guint key_to_modifier(guint keyval) { } } +guint button_to_modifier(guint buttonval) { + if(buttonval <= 5) + return 1 << (7 + buttonval); + return 0; +} + /* Transform gdk key events to our own events */ void key_to_event(guint keyval, guint state, guint is_modifier, gint mode) { @@ -312,9 +318,10 @@ button_to_event(guint buttonval, guint state, gint mode) { gchar *details; const char *reps; gchar *modifiers = NULL; + guint mod = button_to_modifier (buttonval); - /* Get modifier state */ - modifiers = get_modifier_mask(state); + /* Get modifier state including this button press/release */ + modifiers = get_modifier_mask(mode != GDK_BUTTON_RELEASE ? state | mod : state & ~mod); switch (mode) { case GDK_2BUTTON_PRESS: -- cgit v1.2.3