X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=libs%2Fgtkutil%2Faccelerator.h;fp=libs%2Fgtkutil%2Faccelerator.h;h=7228603b4d508cfb8f62ee58c35affacc4152beb;hp=528dd6bb9269ac18d6c8f44f06117c1b4c2638c8;hb=9dfae1c9b270ee369c6362903a9205b30751b95f;hpb=0a6d5683b0cfa1a0bd7ef64bada105dbe4ddd6e1 diff --git a/libs/gtkutil/accelerator.h b/libs/gtkutil/accelerator.h index 528dd6bb..7228603b 100644 --- a/libs/gtkutil/accelerator.h +++ b/libs/gtkutil/accelerator.h @@ -31,106 +31,133 @@ // ignore numlock #define ALLOWED_MODIFIERS ( ~( GDK_MOD2_MASK | GDK_LOCK_MASK | GDK_MOD3_MASK | GDK_MOD4_MASK | GDK_MOD5_MASK ) ) -struct Accelerator -{ - Accelerator( guint _key ) - : key( gdk_keyval_to_upper( _key ) ), modifiers( ( GdkModifierType ) 0 ){ - } - Accelerator( guint _key, GdkModifierType _modifiers ) - : key( gdk_keyval_to_upper( _key ) ), modifiers( ( GdkModifierType )( _modifiers & ALLOWED_MODIFIERS ) ){ - } - Accelerator( const Accelerator &src ) - : key( gdk_keyval_to_upper( src.key ) ), modifiers( ( GdkModifierType )( src.modifiers & ALLOWED_MODIFIERS ) ){ - } - bool operator<( const Accelerator& other ) const { - guint k1 = key; - guint k2 = other.key; - int mod1 = modifiers & ALLOWED_MODIFIERS; - int mod2 = other.modifiers & ALLOWED_MODIFIERS; - return k1 < k2 || ( !( k2 < k1 ) && mod1 < mod2 ); - } - bool operator==( const Accelerator& other ) const { - guint k1 = key; - guint k2 = other.key; - int mod1 = modifiers & ALLOWED_MODIFIERS; - int mod2 = other.modifiers & ALLOWED_MODIFIERS; - return k1 == k2 && mod1 == mod2; - } - Accelerator &operator=( const Accelerator& other ){ - key = other.key; - modifiers = (GdkModifierType) ( other.modifiers & ALLOWED_MODIFIERS ); - return *this; - } - guint key; - GdkModifierType modifiers; +struct Accelerator { + Accelerator(guint _key) + : key(gdk_keyval_to_upper(_key)), modifiers((GdkModifierType) 0) + { + } + + Accelerator(guint _key, GdkModifierType _modifiers) + : key(gdk_keyval_to_upper(_key)), modifiers((GdkModifierType) (_modifiers & ALLOWED_MODIFIERS)) + { + } + + Accelerator(const Accelerator &src) + : key(gdk_keyval_to_upper(src.key)), modifiers((GdkModifierType) (src.modifiers & ALLOWED_MODIFIERS)) + { + } + + bool operator<(const Accelerator &other) const + { + guint k1 = key; + guint k2 = other.key; + int mod1 = modifiers & ALLOWED_MODIFIERS; + int mod2 = other.modifiers & ALLOWED_MODIFIERS; + return k1 < k2 || (!(k2 < k1) && mod1 < mod2); + } + + bool operator==(const Accelerator &other) const + { + guint k1 = key; + guint k2 = other.key; + int mod1 = modifiers & ALLOWED_MODIFIERS; + int mod2 = other.modifiers & ALLOWED_MODIFIERS; + return k1 == k2 && mod1 == mod2; + } + + Accelerator &operator=(const Accelerator &other) + { + key = other.key; + modifiers = (GdkModifierType) (other.modifiers & ALLOWED_MODIFIERS); + return *this; + } + + guint key; + GdkModifierType modifiers; }; -inline Accelerator accelerator_null(){ - return Accelerator( 0, (GdkModifierType)0 ); +inline Accelerator accelerator_null() +{ + return Accelerator(0, (GdkModifierType) 0); } -const char* global_keys_find( unsigned int key ); -unsigned int global_keys_find( const char* name ); +const char *global_keys_find(unsigned int key); + +unsigned int global_keys_find(const char *name); class TextOutputStream; -void accelerator_write( const Accelerator& accelerator, TextOutputStream& ostream ); + +void accelerator_write(const Accelerator &accelerator, TextOutputStream &ostream); template -TextOutputStreamType& ostream_write( TextOutputStreamType& ostream, const Accelerator& accelerator ){ - accelerator_write( accelerator, ostream ); - return ostream; +TextOutputStreamType &ostream_write(TextOutputStreamType &ostream, const Accelerator &accelerator) +{ + accelerator_write(accelerator, ostream); + return ostream; } -void keydown_accelerators_add( Accelerator accelerator, const Callback& callback ); -void keydown_accelerators_remove( Accelerator accelerator ); -void keyup_accelerators_add( Accelerator accelerator, const Callback& callback ); -void keyup_accelerators_remove( Accelerator accelerator ); +void keydown_accelerators_add(Accelerator accelerator, const Callback &callback); -void global_accel_connect_window( ui::Window window ); -void global_accel_disconnect_window( ui::Window window ); +void keydown_accelerators_remove(Accelerator accelerator); + +void keyup_accelerators_add(Accelerator accelerator, const Callback &callback); + +void keyup_accelerators_remove(Accelerator accelerator); + +void global_accel_connect_window(ui::Window window); + +void global_accel_disconnect_window(ui::Window window); void GlobalPressedKeys_releaseAll(); extern ui::AccelGroup global_accel; -GClosure* global_accel_group_find( Accelerator accelerator ); +GClosure *global_accel_group_find(Accelerator accelerator); -void global_accel_group_connect( const Accelerator& accelerator, const Callback& callback ); -void global_accel_group_disconnect( const Accelerator& accelerator, const Callback& callback ); +void global_accel_group_connect(const Accelerator &accelerator, const Callback &callback); +void global_accel_group_disconnect(const Accelerator &accelerator, const Callback &callback); -class Command -{ + +class Command { public: -Callback m_callback; -const Accelerator& m_accelerator; -Command( const Callback& callback, const Accelerator& accelerator ) : m_callback( callback ), m_accelerator( accelerator ){ -} + Callback m_callback; + const Accelerator &m_accelerator; + + Command(const Callback &callback, const Accelerator &accelerator) : m_callback(callback), + m_accelerator(accelerator) + { + } }; -class Toggle -{ +class Toggle { public: -Command m_command; -Callback &)> m_exportCallback; -Toggle( const Callback& callback, const Accelerator& accelerator, const Callback &)>& exportCallback ) : m_command( callback, accelerator ), m_exportCallback( exportCallback ){ -} + Command m_command; + Callback &)> m_exportCallback; + + Toggle(const Callback &callback, const Accelerator &accelerator, + const Callback &)> &exportCallback) : m_command(callback, accelerator), + m_exportCallback(exportCallback) + { + } }; -class KeyEvent -{ +class KeyEvent { public: -const Accelerator& m_accelerator; -Callback m_keyDown; -Callback m_keyUp; -KeyEvent( const Accelerator& accelerator, const Callback& keyDown, const Callback& keyUp ) : m_accelerator( accelerator ), m_keyDown( keyDown ), m_keyUp( keyUp ){ -} + const Accelerator &m_accelerator; + Callback m_keyDown; + Callback m_keyUp; + + KeyEvent(const Accelerator &accelerator, const Callback &keyDown, const Callback &keyUp) + : m_accelerator(accelerator), m_keyDown(keyDown), m_keyUp(keyUp) + { + } }; - struct PressedButtons; -void PressedButtons_connect( PressedButtons& pressedButtons, ui::Widget widget ); + +void PressedButtons_connect(PressedButtons &pressedButtons, ui::Widget widget); extern PressedButtons g_pressedButtons;