diff --git a/src/windowobservers.cpp b/src/windowobservers.cpp index 8a65bae..49b92bf 100644 --- a/src/windowobservers.cpp +++ b/src/windowobservers.cpp @@ -173,3 +173,18 @@ ModifierFlags modifiers_for_state(unsigned int state) } return modifiers; } + +ModifierFlags modifiers_for_key(unsigned int state) +{ + ModifierFlags modifiers = c_modifierNone; + if (state & GDK_CONTROL_MASK) { + modifiers |= c_modifierShift; + } + if (state & GDK_SHIFT_MASK) { + modifiers |= c_modifierControl; + } + if (state & GDK_MOD1_MASK) { + modifiers |= c_modifierAlt; + } + return modifiers; +} diff --git a/src/xywindow.cpp b/src/xywindow.cpp index d2934bc..ba2d7c5 100644 --- a/src/xywindow.cpp +++ b/src/xywindow.cpp @@ -740,7 +740,7 @@ bool XYWnd::chaseMouseMotion(int pointx, int pointy) // ============================================================================= // XYWnd class Shader *XYWnd::m_state_selected = 0; - +ModifierFlags modifiers_for_key(unsigned int state); void xy_update_xor_rectangle(XYWnd &self, rect_t area) { if (self.GetWidget().visible()) { @@ -756,7 +756,7 @@ gboolean xywnd_button_press(ui::Widget widget, GdkEventButton *event, XYWnd *xyw xywnd->ButtonState_onMouseDown(buttons_for_event_button(event)); xywnd->onMouseDown(WindowVector(event->x, event->y), button_for_button(event->button), - modifiers_for_state(event->state)); + modifiers_for_key(event->state)); } return FALSE; }