X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9864c56dedec23b11ae6f9f792d6787ecad2355a..c73b439f80d84ce1a58d862835b3b8cc3fb96f5d:/src/gtk/checkbox.cpp diff --git a/src/gtk/checkbox.cpp b/src/gtk/checkbox.cpp index e038003ca6..5e0dcb88f2 100644 --- a/src/gtk/checkbox.cpp +++ b/src/gtk/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" @@ -107,7 +107,7 @@ 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_widgetLabel = BUTTON_CHILD( m_widgetCheckbox ); m_widget = m_widgetCheckbox; } @@ -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(); }