From 05c4f87ffdaa10249971244a12b6e1985f23758c Mon Sep 17 00:00:00 2001 From: TimePath Date: Sat, 22 Jul 2017 17:11:44 +1000 Subject: [PATCH] Remove from gtkutil/window.h --- libs/gtkutil/window.cpp | 96 ++++++++++++++++++++++++++- libs/gtkutil/window.h | 133 ++++++++++++-------------------------- libs/uilib/uilib.h | 6 ++ radiant/build.cpp | 5 +- radiant/commands.cpp | 3 +- radiant/console.cpp | 1 + radiant/entitylist.cpp | 3 +- radiant/groupdialog.cpp | 1 + radiant/gtkdlgs.cpp | 2 +- radiant/map.cpp | 2 +- radiant/plugintoolbar.cpp | 1 + radiant/select.cpp | 2 + 12 files changed, 156 insertions(+), 99 deletions(-) diff --git a/libs/gtkutil/window.cpp b/libs/gtkutil/window.cpp index 05f50e82..77708216 100644 --- a/libs/gtkutil/window.cpp +++ b/libs/gtkutil/window.cpp @@ -22,7 +22,6 @@ #include "window.h" #include -#include #include "pointer.h" #include "accelerator.h" @@ -137,11 +136,102 @@ void window_remove_minmax( ui::Window window ){ } -ui::ScrolledWindow create_scrolled_window( GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy, int border ){ +ui::ScrolledWindow create_scrolled_window( ui::Policy hscrollbar_policy, ui::Policy vscrollbar_policy, int border ){ auto scr = ui::ScrolledWindow(); gtk_widget_show( GTK_WIDGET( scr ) ); - gtk_scrolled_window_set_policy( scr, hscrollbar_policy, vscrollbar_policy ); + gtk_scrolled_window_set_policy( scr, (GtkPolicyType) hscrollbar_policy, (GtkPolicyType) vscrollbar_policy ); gtk_scrolled_window_set_shadow_type( scr, GTK_SHADOW_IN ); gtk_container_set_border_width( GTK_CONTAINER( scr ), border ); return scr; } + +gboolean window_focus_in_clear_focus_widget(ui::Widget widget, GdkEventKey *event, gpointer data) +{ + gtk_window_set_focus( GTK_WINDOW( widget ), NULL ); + return FALSE; +} + +guint window_connect_focus_in_clear_focus_widget(ui::Window window) +{ + return g_signal_connect( G_OBJECT( window ), "focus_in_event", G_CALLBACK( window_focus_in_clear_focus_widget ), NULL ); +} + +void window_get_position(ui::Window window, WindowPosition &position) +{ + ASSERT_MESSAGE( window , "error saving window position" ); + + gtk_window_get_position( window, &position.x, &position.y ); + gtk_window_get_size( window, &position.w, &position.h ); +} + +void window_set_position(ui::Window window, const WindowPosition &position) +{ + gtk_window_set_gravity( window, GDK_GRAVITY_STATIC ); + + GdkScreen* screen = gdk_screen_get_default(); + if ( position.x < 0 + || position.y < 0 + || position.x > gdk_screen_get_width( screen ) + || position.y > gdk_screen_get_height( screen ) ) { + gtk_window_set_position( window, GTK_WIN_POS_CENTER_ON_PARENT ); + } + else + { + gtk_window_move( window, position.x, position.y ); + } + + gtk_window_set_default_size( window, position.w, position.h ); +} + +void WindowPosition_Parse(WindowPosition &position, const char *value) +{ + if ( sscanf( value, "%d %d %d %d", &position.x, &position.y, &position.w, &position.h ) != 4 ) { + position = WindowPosition( c_default_window_pos ); // ensure sane default value for window position + } +} + +void WindowPosition_Write(const WindowPosition &position, const StringImportCallback &importCallback) +{ + char buffer[64]; + sprintf( buffer, "%d %d %d %d", position.x, position.y, position.w, position.h ); + importCallback( buffer ); +} + +void WindowPositionTracker_importString(WindowPositionTracker &self, const char *value) +{ + WindowPosition position; + WindowPosition_Parse( position, value ); + self.setPosition( position ); +} + +void WindowPositionTracker_exportString(const WindowPositionTracker &self, const StringImportCallback &importer) +{ + WindowPosition_Write( self.getPosition(), importer ); +} + +gboolean WindowPositionTracker::configure(ui::Widget widget, GdkEventConfigure *event, WindowPositionTracker *self) +{ + self->m_position = WindowPosition( event->x, event->y, event->width, event->height ); + return FALSE; +} + +void WindowPositionTracker::sync(ui::Window window) +{ + window_set_position( window, m_position ); +} + +void WindowPositionTracker::connect(ui::Window window) +{ + sync( window ); + g_signal_connect( G_OBJECT( window ), "configure_event", G_CALLBACK( configure ), this ); +} + +const WindowPosition &WindowPositionTracker::getPosition() const +{ + return m_position; +} + +void WindowPositionTracker::setPosition(const WindowPosition &position) +{ + m_position = position; +} diff --git a/libs/gtkutil/window.h b/libs/gtkutil/window.h index 3516857f..2adc3caf 100644 --- a/libs/gtkutil/window.h +++ b/libs/gtkutil/window.h @@ -22,135 +22,88 @@ #if !defined( INCLUDED_GTKUTIL_WINDOW_H ) #define INCLUDED_GTKUTIL_WINDOW_H -#include #include #include "debugging/debugging.h" #include "generic/callback.h" #include "widget.h" -inline gboolean window_focus_in_clear_focus_widget( ui::Widget widget, GdkEventKey* event, gpointer data ){ - gtk_window_set_focus( GTK_WINDOW( widget ), NULL ); - return FALSE; -} +gboolean window_focus_in_clear_focus_widget(ui::Widget widget, GdkEventKey *event, gpointer data); -inline guint window_connect_focus_in_clear_focus_widget( ui::Window window ){ - return g_signal_connect( G_OBJECT( window ), "focus_in_event", G_CALLBACK( window_focus_in_clear_focus_widget ), NULL ); -} +guint window_connect_focus_in_clear_focus_widget(ui::Window window); +unsigned int connect_floating(ui::Window main_window, ui::Window floating); -unsigned int connect_floating( ui::Window main_window, ui::Window floating ); -ui::Window create_floating_window( const char* title, ui::Window parent ); -void destroy_floating_window( ui::Window window ); +ui::Window create_floating_window(const char *title, ui::Window parent); -ui::Window create_persistent_floating_window( const char* title, ui::Window main_window ); -gboolean persistent_floating_window_delete( ui::Window floating, GdkEvent *event, ui::Window main_window ); +void destroy_floating_window(ui::Window window); -void window_remove_minmax( ui::Window window ); +ui::Window create_persistent_floating_window(const char *title, ui::Window main_window); -ui::ScrolledWindow create_scrolled_window( GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy, int border = 0 ); +gboolean persistent_floating_window_delete(ui::Window floating, GdkEvent *event, ui::Window main_window); +void window_remove_minmax(ui::Window window); -struct WindowPosition -{ - int x, y, w, h; +ui::ScrolledWindow create_scrolled_window(ui::Policy hscrollbar_policy, ui::Policy vscrollbar_policy, int border = 0); - WindowPosition(){ - } - WindowPosition( int _x, int _y, int _w, int _h ) - : x( _x ), y( _y ), w( _w ), h( _h ){ - } -}; -const WindowPosition c_default_window_pos( 50, 25, 400, 300 ); +struct WindowPosition { + int x, y, w, h; + + WindowPosition() + { + } -inline void window_get_position( ui::Window window, WindowPosition& position ){ - ASSERT_MESSAGE( window , "error saving window position" ); + WindowPosition(int _x, int _y, int _w, int _h) + : x(_x), y(_y), w(_w), h(_h) + { + } +}; - gtk_window_get_position( window, &position.x, &position.y ); - gtk_window_get_size( window, &position.w, &position.h ); -} +const WindowPosition c_default_window_pos(50, 25, 400, 300); -inline void window_set_position( ui::Window window, const WindowPosition& position ){ - gtk_window_set_gravity( window, GDK_GRAVITY_STATIC ); +void window_get_position(ui::Window window, WindowPosition &position); - GdkScreen* screen = gdk_screen_get_default(); - if ( position.x < 0 - || position.y < 0 - || position.x > gdk_screen_get_width( screen ) - || position.y > gdk_screen_get_height( screen ) ) { - gtk_window_set_position( window, GTK_WIN_POS_CENTER_ON_PARENT ); - } - else - { - gtk_window_move( window, position.x, position.y ); - } +void window_set_position(ui::Window window, const WindowPosition &position); - gtk_window_set_default_size( window, position.w, position.h ); -} +void WindowPosition_Parse(WindowPosition &position, const char *value); -inline void WindowPosition_Parse( WindowPosition& position, const char* value ){ - if ( sscanf( value, "%d %d %d %d", &position.x, &position.y, &position.w, &position.h ) != 4 ) { - position = WindowPosition( c_default_window_pos ); // ensure sane default value for window position - } -} -typedef ReferenceCaller1 WindowPositionImportStringCaller; +typedef ReferenceCaller1 WindowPositionImportStringCaller; -inline void WindowPosition_Write( const WindowPosition& position, const StringImportCallback& importCallback ){ - char buffer[64]; - sprintf( buffer, "%d %d %d %d", position.x, position.y, position.w, position.h ); - importCallback( buffer ); -} -typedef ConstReferenceCaller1 WindowPositionExportStringCaller; +void WindowPosition_Write(const WindowPosition &position, const StringImportCallback &importCallback); +typedef ConstReferenceCaller1 WindowPositionExportStringCaller; -class WindowPositionTracker -{ -WindowPosition m_position; +class WindowPositionTracker { + WindowPosition m_position; -static gboolean configure( ui::Widget widget, GdkEventConfigure *event, WindowPositionTracker* self ){ - self->m_position = WindowPosition( event->x, event->y, event->width, event->height ); - return FALSE; -} + static gboolean configure(ui::Widget widget, GdkEventConfigure *event, WindowPositionTracker *self); public: -WindowPositionTracker() - : m_position( c_default_window_pos ){ -} + WindowPositionTracker() + : m_position(c_default_window_pos) + { + } -void sync( ui::Window window ){ - window_set_position( window, m_position ); -} + void sync(ui::Window window); -void connect( ui::Window window ){ - sync( window ); - g_signal_connect( G_OBJECT( window ), "configure_event", G_CALLBACK( configure ), this ); -} + void connect(ui::Window window); -const WindowPosition& getPosition() const { - return m_position; -} + const WindowPosition &getPosition() const; //hack -void setPosition( const WindowPosition& position ){ - m_position = position; -} + void setPosition(const WindowPosition &position); }; -inline void WindowPositionTracker_importString( WindowPositionTracker& self, const char* value ){ - WindowPosition position; - WindowPosition_Parse( position, value ); - self.setPosition( position ); -} -typedef ReferenceCaller1 WindowPositionTrackerImportStringCaller; +void WindowPositionTracker_importString(WindowPositionTracker &self, const char *value); + +typedef ReferenceCaller1 WindowPositionTrackerImportStringCaller; -inline void WindowPositionTracker_exportString( const WindowPositionTracker& self, const StringImportCallback& importer ){ - WindowPosition_Write( self.getPosition(), importer ); -} -typedef ConstReferenceCaller1 WindowPositionTrackerExportStringCaller; +void WindowPositionTracker_exportString(const WindowPositionTracker &self, const StringImportCallback &importer); +typedef ConstReferenceCaller1 WindowPositionTrackerExportStringCaller; #endif diff --git a/libs/uilib/uilib.h b/libs/uilib/uilib.h index b9588dee..3fca43c7 100644 --- a/libs/uilib/uilib.h +++ b/libs/uilib/uilib.h @@ -110,6 +110,12 @@ namespace ui { ETCHED_OUT }; + enum class Policy { + ALWAYS, + AUTOMATIC, + NEVER + }; + namespace details { enum class Convert { diff --git a/radiant/build.cpp b/radiant/build.cpp index 830bf2f0..7d9d6300 100644 --- a/radiant/build.cpp +++ b/radiant/build.cpp @@ -22,6 +22,7 @@ #include "build.h" #include "debugging/debugging.h" +#include #include #include #include "stream/stringstream.h" @@ -864,7 +865,7 @@ ui::Window BuildMenuDialog_construct( ModalDialog& modal, ProjectList& projectLi (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 ); { - auto scr = create_scrolled_window( GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, 4 ); + auto scr = create_scrolled_window( ui::Policy::NEVER, ui::Policy::AUTOMATIC, 4 ); frame.add(scr); { @@ -901,7 +902,7 @@ ui::Window BuildMenuDialog_construct( ModalDialog& modal, ProjectList& projectLi (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), 0, 0 ); { - auto scr = create_scrolled_window( GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, 4 ); + auto scr = create_scrolled_window( ui::Policy::NEVER, ui::Policy::AUTOMATIC, 4 ); frame.add(scr); { diff --git a/radiant/commands.cpp b/radiant/commands.cpp index 5d2cadaf..b3def079 100644 --- a/radiant/commands.cpp +++ b/radiant/commands.cpp @@ -21,6 +21,7 @@ #include "commands.h" +#include "gtk/gtk.h" #include "debugging/debugging.h" #include "warnings.h" @@ -398,7 +399,7 @@ void DoCommandListDlg(){ window.add(hbox); { - auto scr = create_scrolled_window( GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC ); + auto scr = create_scrolled_window( ui::Policy::NEVER, ui::Policy::AUTOMATIC ); gtk_box_pack_start( GTK_BOX( hbox ), GTK_WIDGET( scr ), TRUE, TRUE, 0 ); { diff --git a/radiant/console.cpp b/radiant/console.cpp index f7bdc929..1f31fb3d 100644 --- a/radiant/console.cpp +++ b/radiant/console.cpp @@ -23,6 +23,7 @@ #include #include +#include #include "gtkutil/accelerator.h" #include "gtkutil/messagebox.h" diff --git a/radiant/entitylist.cpp b/radiant/entitylist.cpp index f8847255..e3d176a0 100644 --- a/radiant/entitylist.cpp +++ b/radiant/entitylist.cpp @@ -24,6 +24,7 @@ #include "iselection.h" #include +#include #include "string/string.h" #include "scenelib.h" @@ -291,7 +292,7 @@ void EntityList_constructWindow( ui::Window main_window ){ getEntityList().m_window = window; { - auto scr = create_scrolled_window( GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); + auto scr = create_scrolled_window( ui::Policy::AUTOMATIC, ui::Policy::AUTOMATIC ); window.add(scr); { diff --git a/radiant/groupdialog.cpp b/radiant/groupdialog.cpp index 2158f59a..1e076c1a 100644 --- a/radiant/groupdialog.cpp +++ b/radiant/groupdialog.cpp @@ -31,6 +31,7 @@ #include "debugging/debugging.h" #include +#include #include "gtkutil/widget.h" #include "gtkutil/accelerator.h" diff --git a/radiant/gtkdlgs.cpp b/radiant/gtkdlgs.cpp index caf74cb8..3ad56a8b 100644 --- a/radiant/gtkdlgs.cpp +++ b/radiant/gtkdlgs.cpp @@ -561,7 +561,7 @@ void DoAbout(){ auto frame = create_dialog_frame( "OpenGL Extensions" ); gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( frame ), TRUE, TRUE, 0 ); { - auto sc_extensions = create_scrolled_window( GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS, 4 ); + auto sc_extensions = create_scrolled_window( ui::Policy::AUTOMATIC, ui::Policy::ALWAYS, 4 ); frame.add(sc_extensions); { auto text_extensions = ui::TextView(); diff --git a/radiant/map.cpp b/radiant/map.cpp index fa54737a..518886f6 100644 --- a/radiant/map.cpp +++ b/radiant/map.cpp @@ -835,7 +835,7 @@ void DoMapInfo(){ gtk_misc_set_alignment( GTK_MISC( label ), 0, 0.5 ); } { - auto scr = create_scrolled_window( GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC, 4 ); + auto scr = create_scrolled_window( ui::Policy::NEVER, ui::Policy::AUTOMATIC, 4 ); gtk_box_pack_start( GTK_BOX( vbox ), GTK_WIDGET( scr ), TRUE, TRUE, 0 ); { diff --git a/radiant/plugintoolbar.cpp b/radiant/plugintoolbar.cpp index ac79b101..5753e76b 100644 --- a/radiant/plugintoolbar.cpp +++ b/radiant/plugintoolbar.cpp @@ -21,6 +21,7 @@ #include "plugintoolbar.h" +#include #include "itoolbar.h" #include "modulesystem.h" diff --git a/radiant/select.cpp b/radiant/select.cpp index 0ac4467d..0f2fae1c 100644 --- a/radiant/select.cpp +++ b/radiant/select.cpp @@ -21,6 +21,8 @@ #include "select.h" +#include + #include "debugging/debugging.h" #include "ientity.h" -- 2.39.2