gboolean selection_modifier_key_press( ui::Widget widget, GdkEventKey* event, WindowObservers& observers ){
switch ( event->keyval )
{
- case GDK_Alt_L:
- case GDK_Alt_R:
+ case GDK_KEY_Alt_L:
+ case GDK_KEY_Alt_R:
//globalOutputStream() << "Alt PRESSED\n";
WindowObservers_OnModifierDown( observers, c_modifierAlt );
break;
- case GDK_Shift_L:
- case GDK_Shift_R:
+ case GDK_KEY_Shift_L:
+ case GDK_KEY_Shift_R:
//globalOutputStream() << "Shift PRESSED\n";
WindowObservers_OnModifierDown( observers, c_modifierShift );
break;
- case GDK_Control_L:
- case GDK_Control_R:
+ case GDK_KEY_Control_L:
+ case GDK_KEY_Control_R:
//globalOutputStream() << "Control PRESSED\n";
WindowObservers_OnModifierDown( observers, c_modifierControl );
break;
gboolean selection_modifier_key_release( ui::Widget widget, GdkEventKey* event, WindowObservers& observers ){
switch ( event->keyval )
{
- case GDK_Alt_L:
- case GDK_Alt_R:
+ case GDK_KEY_Alt_L:
+ case GDK_KEY_Alt_R:
//globalOutputStream() << "Alt RELEASED\n";
WindowObservers_OnModifierUp( observers, c_modifierAlt );
break;
- case GDK_Shift_L:
- case GDK_Shift_R:
+ case GDK_KEY_Shift_L:
+ case GDK_KEY_Shift_R:
//globalOutputStream() << "Shift RELEASED\n";
WindowObservers_OnModifierUp( observers, c_modifierShift );
break;
- case GDK_Control_L:
- case GDK_Control_R:
+ case GDK_KEY_Control_L:
+ case GDK_KEY_Control_R:
//globalOutputStream() << "Control RELEASED\n";
WindowObservers_OnModifierUp( observers, c_modifierControl );
break;
}
void GlobalWindowObservers_connectTopLevel( ui::Window window ){
- g_signal_connect( G_OBJECT( window ), "key_press_event", G_CALLBACK( selection_modifier_key_press ), &g_window_observers );
- g_signal_connect( G_OBJECT( window ), "key_release_event", G_CALLBACK( selection_modifier_key_release ), &g_window_observers );
+ window.connect( "key_press_event", G_CALLBACK( selection_modifier_key_press ), &g_window_observers );
+ window.connect( "key_release_event", G_CALLBACK( selection_modifier_key_release ), &g_window_observers );
}
void GlobalWindowObservers_connectWidget( ui::Widget widget ){
- g_signal_connect( G_OBJECT( widget ), "button_press_event", G_CALLBACK( modifiers_button_press ), &g_window_observers );
- g_signal_connect( G_OBJECT( widget ), "button_release_event", G_CALLBACK( modifiers_button_release ), &g_window_observers );
- g_signal_connect( G_OBJECT( widget ), "motion_notify_event", G_CALLBACK( modifiers_motion ), &g_window_observers );
+ widget.connect( "button_press_event", G_CALLBACK( modifiers_button_press ), &g_window_observers );
+ widget.connect( "button_release_event", G_CALLBACK( modifiers_button_release ), &g_window_observers );
+ widget.connect( "motion_notify_event", G_CALLBACK( modifiers_motion ), &g_window_observers );
+}
+
+ModifierFlags modifiers_for_state(unsigned int state)
+{
+ ModifierFlags modifiers = c_modifierNone;
+ if ( state & GDK_SHIFT_MASK ) {
+ modifiers |= c_modifierShift;
+ }
+ if ( state & GDK_CONTROL_MASK ) {
+ modifiers |= c_modifierControl;
+ }
+ if ( state & GDK_MOD1_MASK ) {
+ modifiers |= c_modifierAlt;
+ }
+ return modifiers;
}