X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9864c56dedec23b11ae6f9f792d6787ecad2355a..59d04dff037f66e9e73b389de72835211f5f0bcd:/src/gtk1/checkbox.cpp diff --git a/src/gtk1/checkbox.cpp b/src/gtk1/checkbox.cpp index e038003ca6..0916de575b 100644 --- a/src/gtk1/checkbox.cpp +++ b/src/gtk1/checkbox.cpp @@ -18,8 +18,7 @@ #include "wx/checkbox.h" -#include -#include +#include "wx/gtk/private.h" //----------------------------------------------------------------------------- // idle system @@ -32,8 +31,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" @@ -94,7 +94,7 @@ bool wxCheckBox::Create(wxWindow *parent, // left of it m_widgetCheckbox = gtk_check_button_new(); - m_widgetLabel = gtk_label_new(m_label.mbc_str()); + m_widgetLabel = gtk_label_new( wxGTK_CONV( m_label ) ); gtk_misc_set_alignment(GTK_MISC(m_widgetLabel), 0.0, 0.5); m_widget = gtk_hbox_new(FALSE, 0); @@ -106,8 +106,8 @@ bool wxCheckBox::Create(wxWindow *parent, } else { - m_widgetCheckbox = gtk_check_button_new_with_label( m_label.mbc_str() ); - m_widgetLabel = GTK_BUTTON( m_widgetCheckbox )->child; + m_widgetCheckbox = gtk_check_button_new_with_label( wxGTK_CONV( m_label ) ); + m_widgetLabel = BUTTON_CHILD( m_widgetCheckbox ); m_widget = m_widgetCheckbox; } @@ -166,7 +166,7 @@ void wxCheckBox::SetLabel( const wxString& label ) wxControl::SetLabel( label ); - gtk_label_set( GTK_LABEL(m_widgetLabel), GetLabel().mbc_str() ); + gtk_label_set( GTK_LABEL(m_widgetLabel), wxGTK_CONV( GetLabel() ) ); } bool wxCheckBox::Enable( bool enable ) @@ -188,7 +188,7 @@ void wxCheckBox::ApplyWidgetStyle() bool wxCheckBox::IsOwnGtkWindow( GdkWindow *window ) { - return (window == GTK_TOGGLE_BUTTON(m_widget)->event_window); + return window == TOGGLE_BUTTON_EVENT_WIN(m_widget); } void wxCheckBox::OnInternalIdle() @@ -196,16 +196,26 @@ void wxCheckBox::OnInternalIdle() wxCursor cursor = m_cursor; if (g_globalCursor.Ok()) cursor = g_globalCursor; - if (GTK_TOGGLE_BUTTON(m_widgetCheckbox)->event_window && cursor.Ok()) + GdkWindow *event_window = TOGGLE_BUTTON_EVENT_WIN(m_widgetCheckbox); + if ( event_window && cursor.Ok() ) { /* I now set the cursor the anew in every OnInternalIdle call as setting the cursor in a parent window also effects the windows above so that checking for the current cursor is not possible. */ - gdk_window_set_cursor( GTK_TOGGLE_BUTTON(m_widgetCheckbox)->event_window, cursor.GetCursor() ); + gdk_window_set_cursor( event_window, cursor.GetCursor() ); } + if (g_delayedFocus == this) + { + if (GTK_WIDGET_REALIZED(m_widget)) + { + gtk_widget_grab_focus( m_widget ); + g_delayedFocus = NULL; + } + } + UpdateWindowUI(); }