]> git.saurik.com Git - wxWidgets.git/commitdiff
Try to catch theme change on the fly in button in
authorRobert Roebling <robert@roebling.de>
Fri, 4 Mar 2005 23:23:05 +0000 (23:23 +0000)
committerRobert Roebling <robert@roebling.de>
Fri, 4 Mar 2005 23:23:05 +0000 (23:23 +0000)
   order to resize buttons.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32605 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/button.cpp
src/gtk/window.cpp
src/gtk1/button.cpp
src/gtk1/window.cpp

index a4cf62371adcbeac5a733612647badd77277c93f..e21402f843c93ae209e1d2eab4154c58572aa2d0 100644 (file)
@@ -59,6 +59,22 @@ static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxButton *
     button->GetEventHandler()->ProcessEvent(event);
 }
 
+//-----------------------------------------------------------------------------
+// "style_set" from m_widget
+//-----------------------------------------------------------------------------
+
+static gint
+gtk_button_style_set_callback( GtkWidget *m_widget, GtkStyle *WXUNUSED(style), wxButton *win )
+{
+    if (g_isIdle)
+        wxapp_install_idle_handler();
+    
+    if (GTK_WIDGET_REALIZED(m_widget))
+        win->SetSize( win->m_x, win->m_y, win->m_width, win->m_height );
+
+    return FALSE;
+}
+
 //-----------------------------------------------------------------------------
 // wxButton
 //-----------------------------------------------------------------------------
@@ -148,6 +164,9 @@ bool wxButton::Create(  wxWindow *parent, wxWindowID id, const wxString &label,
     gtk_signal_connect_after( GTK_OBJECT(m_widget), "clicked",
       GTK_SIGNAL_FUNC(gtk_button_clicked_callback), (gpointer*)this );
 
+    gtk_signal_connect_after( GTK_OBJECT(m_widget), "style_set",
+      GTK_SIGNAL_FUNC(gtk_button_style_set_callback), (gpointer*) this );
+      
     m_parent->DoAddChild( this );
 
     PostCreation(size);
index 969e4b655f125158df3a25397b118599825a6305..e6a12132c279b24bb8a412e31693fefc51c3ca06 100644 (file)
@@ -3111,22 +3111,10 @@ void wxWindowGTK::DoSetSize( int x, int y, int width, int height, int sizeFlags
         if (GTK_WIDGET_CAN_DEFAULT(m_widget))
         {
 #ifdef __WXGTK20__
-#if 0
-            GtkBorder *default_border;
-            gtk_widget_style_get( m_widget, "default_border", &default_border, NULL );
-            if (default_border)
-            {
-                left_border += default_border->left;
-                right_border += default_border->right;
-                top_border += default_border->top;
-                bottom_border += default_border->bottom;
-                g_free( default_border );
-                
-            }
-#endif
-            GtkBorder *default_outside_border;
+            GtkBorder *default_outside_border = NULL;
+            gtk_widget_style_get( m_widget, "default_outside_border", &default_outside_border, NULL );
+            if (default_outside_border)
             {
-                gtk_widget_style_get( m_widget, "default_outside_border", &default_outside_border, NULL );
                 left_border += default_outside_border->left;
                 right_border += default_outside_border->right;
                 top_border += default_outside_border->top;
index a4cf62371adcbeac5a733612647badd77277c93f..e21402f843c93ae209e1d2eab4154c58572aa2d0 100644 (file)
@@ -59,6 +59,22 @@ static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxButton *
     button->GetEventHandler()->ProcessEvent(event);
 }
 
+//-----------------------------------------------------------------------------
+// "style_set" from m_widget
+//-----------------------------------------------------------------------------
+
+static gint
+gtk_button_style_set_callback( GtkWidget *m_widget, GtkStyle *WXUNUSED(style), wxButton *win )
+{
+    if (g_isIdle)
+        wxapp_install_idle_handler();
+    
+    if (GTK_WIDGET_REALIZED(m_widget))
+        win->SetSize( win->m_x, win->m_y, win->m_width, win->m_height );
+
+    return FALSE;
+}
+
 //-----------------------------------------------------------------------------
 // wxButton
 //-----------------------------------------------------------------------------
@@ -148,6 +164,9 @@ bool wxButton::Create(  wxWindow *parent, wxWindowID id, const wxString &label,
     gtk_signal_connect_after( GTK_OBJECT(m_widget), "clicked",
       GTK_SIGNAL_FUNC(gtk_button_clicked_callback), (gpointer*)this );
 
+    gtk_signal_connect_after( GTK_OBJECT(m_widget), "style_set",
+      GTK_SIGNAL_FUNC(gtk_button_style_set_callback), (gpointer*) this );
+      
     m_parent->DoAddChild( this );
 
     PostCreation(size);
index 969e4b655f125158df3a25397b118599825a6305..e6a12132c279b24bb8a412e31693fefc51c3ca06 100644 (file)
@@ -3111,22 +3111,10 @@ void wxWindowGTK::DoSetSize( int x, int y, int width, int height, int sizeFlags
         if (GTK_WIDGET_CAN_DEFAULT(m_widget))
         {
 #ifdef __WXGTK20__
-#if 0
-            GtkBorder *default_border;
-            gtk_widget_style_get( m_widget, "default_border", &default_border, NULL );
-            if (default_border)
-            {
-                left_border += default_border->left;
-                right_border += default_border->right;
-                top_border += default_border->top;
-                bottom_border += default_border->bottom;
-                g_free( default_border );
-                
-            }
-#endif
-            GtkBorder *default_outside_border;
+            GtkBorder *default_outside_border = NULL;
+            gtk_widget_style_get( m_widget, "default_outside_border", &default_outside_border, NULL );
+            if (default_outside_border)
             {
-                gtk_widget_style_get( m_widget, "default_outside_border", &default_outside_border, NULL );
                 left_border += default_outside_border->left;
                 right_border += default_outside_border->right;
                 top_border += default_outside_border->top;