Try to catch theme change on the fly in button in

order to resize buttons.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32605 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling 2005-03-04 23:23:05 +00:00
parent 19311d4e7c
commit a90c0600bb
4 changed files with 44 additions and 30 deletions

View 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);

View 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)
GtkBorder *default_outside_border = NULL;
gtk_widget_style_get( m_widget, "default_outside_border", &default_outside_border, NULL );
if (default_outside_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;
{
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;

View 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);

View 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)
GtkBorder *default_outside_border = NULL;
gtk_widget_style_get( m_widget, "default_outside_border", &default_outside_border, NULL );
if (default_outside_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;
{
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;