X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a90c0600bb319326aa9b70ac4551fdd11684e223..dcbd3762e86258781ed81202977f680665190528:/src/gtk/button.cpp diff --git a/src/gtk/button.cpp b/src/gtk/button.cpp index e21402f843..acaf646e22 100644 --- a/src/gtk/button.cpp +++ b/src/gtk/button.cpp @@ -22,6 +22,7 @@ #include "wx/stockitem.h" #include "wx/gtk/private.h" +#include "wx/gtk/win_gtk.h" //----------------------------------------------------------------------------- // classes @@ -46,6 +47,7 @@ extern bool g_blockEventsOnDrag; // "clicked" //----------------------------------------------------------------------------- +extern "C" { static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxButton *button ) { if (g_isIdle) @@ -58,6 +60,7 @@ static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxButton * event.SetEventObject(button); button->GetEventHandler()->ProcessEvent(event); } +} //----------------------------------------------------------------------------- // "style_set" from m_widget @@ -69,8 +72,36 @@ gtk_button_style_set_callback( GtkWidget *m_widget, GtkStyle *WXUNUSED(style), w 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 ); + int left_border = 0; + int right_border = 0; + int top_border = 0; + int bottom_border = 0; + + /* the default button has a border around it */ + if (GTK_WIDGET_CAN_DEFAULT(m_widget)) + { +#ifdef __WXGTK20__ + GtkBorder *default_border = NULL; + 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 ); + } +#else + left_border = 6; + right_border = 6; + top_border = 6; + bottom_border = 5; +#endif + win->DoMoveWindow( win->m_x-top_border, + win->m_y-left_border, + win->m_width+left_border+right_border, + win->m_height+top_border+bottom_border ); + } return FALSE; } @@ -184,8 +215,9 @@ void wxButton::SetDefault() GTK_WIDGET_SET_FLAGS( m_widget, GTK_CAN_DEFAULT ); gtk_widget_grab_default( m_widget ); - - SetSize( m_x, m_y, m_width, m_height ); + + // resize for default border + gtk_button_style_set_callback( m_widget, NULL, this ); } /* static */