X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9e691f46b2ec1b5dbbff2e51131e3c532e688a89..07e9d4f0ed60853477155f0a460b93ecc91e7f85:/src/gtk/radiobut.cpp?ds=sidebyside diff --git a/src/gtk/radiobut.cpp b/src/gtk/radiobut.cpp index 7d2557692f..e79978e8b7 100644 --- a/src/gtk/radiobut.cpp +++ b/src/gtk/radiobut.cpp @@ -8,11 +8,12 @@ ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "radiobut.h" #endif -#include "wx/defs.h" +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" #if wxUSE_RADIOBOX @@ -31,8 +32,9 @@ extern bool g_isIdle; // data //----------------------------------------------------------------------------- -extern bool g_blockEventsOnDrag; -extern wxCursor g_globalCursor; +extern bool g_blockEventsOnDrag; +extern wxCursor g_globalCursor; +extern wxWindowGTK *g_delayedFocus; //----------------------------------------------------------------------------- // "clicked" @@ -63,13 +65,17 @@ void gtk_radiobutton_clicked_callback( GtkToggleButton *button, wxRadioButton *r IMPLEMENT_DYNAMIC_CLASS(wxRadioButton,wxControl) -bool wxRadioButton::Create( wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, const wxSize& size, long style, - const wxValidator& validator, const wxString& name ) +bool wxRadioButton::Create( wxWindow *parent, + wxWindowID id, + const wxString& label, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + const wxString& name ) { m_acceptsFocus = TRUE; m_needParent = TRUE; - m_isRadioButton = TRUE; m_blockEvent = FALSE; @@ -89,14 +95,15 @@ bool wxRadioButton::Create( wxWindow *parent, wxWindowID id, const wxString& lab { // search backward for last group start wxRadioButton *chief = (wxRadioButton*) NULL; - wxWindowList::Node *node = parent->GetChildren().GetLast(); + wxWindowList::compatibility_iterator node = parent->GetChildren().GetLast(); while (node) { wxWindow *child = node->GetData(); - if (child->m_isRadioButton) + if (child->IsRadioButton()) { chief = (wxRadioButton*) child; - if (child->HasFlag(wxRB_GROUP)) break; + if (child->HasFlag(wxRB_GROUP)) + break; } node = node->GetPrevious(); } @@ -112,7 +119,7 @@ bool wxRadioButton::Create( wxWindow *parent, wxWindowID id, const wxString& lab } } - m_widget = gtk_radio_button_new_with_label( m_radioButtonGroup, label.mbc_str() ); + m_widget = gtk_radio_button_new_with_label( m_radioButtonGroup, wxGTK_CONV( label ) ); SetLabel(label); @@ -148,7 +155,12 @@ void wxRadioButton::SetLabel( const wxString& label ) wxControl::SetLabel( label ); GtkLabel *g_label = GTK_LABEL( BUTTON_CHILD(m_widget) ); - gtk_label_set( g_label, GetLabel().mbc_str() ); +#ifdef __WXGTK20__ + wxString label2 = PrepareLabelMnemonics( label ); + gtk_label_set_text_with_mnemonic( g_label, wxGTK_CONV( label2 ) ); +#else + gtk_label_set( g_label, wxGTK_CONV( GetLabel() ) ); +#endif } void wxRadioButton::SetValue( bool val ) @@ -219,7 +231,17 @@ void wxRadioButton::OnInternalIdle() gdk_window_set_cursor( win, cursor.GetCursor() ); } - UpdateWindowUI(); + if (g_delayedFocus == this) + { + if (GTK_WIDGET_REALIZED(m_widget)) + { + gtk_widget_grab_focus( m_widget ); + g_delayedFocus = NULL; + } + } + + if (wxUpdateUIEvent::CanUpdate(this)) + UpdateWindowUI(wxUPDATE_UI_FROMIDLE); } wxSize wxRadioButton::DoGetBestSize() const