]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/windowobservers.cpp
use NULL as sentinel instead of 0
[xonotic/netradiant.git] / radiant / windowobservers.cpp
index 989c1196309ef7ea40f9fc65cffc1802dba0e4bf..3bd2334daf1f0f2d8e55bd8078338e7b146b0a70 100644 (file)
@@ -22,7 +22,7 @@
 #include "windowobservers.h"
 
 #include <vector>
-#include <gdk/gdkevents.h>
+#include <gdk/gdk.h>
 #include "generic/bitfield.h"
 
 namespace
@@ -50,21 +50,21 @@ inline void WindowObservers_OnModifierUp( WindowObservers& observers, ModifierFl
 
 #include <gdk/gdkkeysyms.h>
 
-gboolean selection_modifier_key_press( GtkWidget* widget, GdkEventKey* event, WindowObservers& observers ){
+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;
@@ -72,21 +72,21 @@ gboolean selection_modifier_key_press( GtkWidget* widget, GdkEventKey* event, Wi
        return FALSE;
 }
 
-gboolean selection_modifier_key_release( GtkWidget* widget, GdkEventKey* event, WindowObservers& observers ){
+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;
@@ -109,21 +109,21 @@ void WindowObservers_UpdateModifiers( WindowObservers& observers, ModifierFlags
        WindowObservers_UpdateModifier( observers, modifiers, c_modifierControl );
 }
 
-gboolean modifiers_button_press( GtkWidget* widget, GdkEventButton* event, WindowObservers* observers ){
+gboolean modifiers_button_press( ui::Widget widget, GdkEventButton* event, WindowObservers* observers ){
        if ( event->type == GDK_BUTTON_PRESS ) {
                WindowObservers_UpdateModifiers( *observers, modifiers_for_state( event->state ) );
        }
        return FALSE;
 }
 
-gboolean modifiers_button_release( GtkWidget* widget, GdkEventButton* event, WindowObservers* observers ){
+gboolean modifiers_button_release( ui::Widget widget, GdkEventButton* event, WindowObservers* observers ){
        if ( event->type == GDK_BUTTON_RELEASE ) {
                WindowObservers_UpdateModifiers( *observers, modifiers_for_state( event->state ) );
        }
        return FALSE;
 }
 
-gboolean modifiers_motion( GtkWidget *widget, GdkEventMotion *event, WindowObservers* observers ){
+gboolean modifiers_motion( ui::Widget widget, GdkEventMotion *event, WindowObservers* observers ){
        WindowObservers_UpdateModifiers( *observers, modifiers_for_state( event->state ) );
        return FALSE;
 }
@@ -139,13 +139,28 @@ void GlobalWindowObservers_add( WindowObserver* observer ){
        g_window_observers.push_back( observer );
 }
 
-void GlobalWindowObservers_connectTopLevel( GtkWindow* 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 );
+void GlobalWindowObservers_connectTopLevel( ui::Window window ){
+       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( GtkWidget* 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 );
+void GlobalWindowObservers_connectWidget( ui::Widget widget ){
+       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;
 }