X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7317857df7deea8469f4a3572308bba22fe9d7bc..593354ca47abaae8a434f99642acc57f7834f77b:/src/gtk/checkbox.cpp diff --git a/src/gtk/checkbox.cpp b/src/gtk/checkbox.cpp index c03eefa9c3..1e4bcf5922 100644 --- a/src/gtk/checkbox.cpp +++ b/src/gtk/checkbox.cpp @@ -14,15 +14,13 @@ #include "wx/checkbox.h" -#include "wx/gtk/private.h" +#include //----------------------------------------------------------------------------- // data //----------------------------------------------------------------------------- extern bool g_blockEventsOnDrag; -extern wxCursor g_globalCursor; -extern wxWindowGTK *g_delayedFocus; //----------------------------------------------------------------------------- // "clicked" @@ -31,8 +29,6 @@ extern wxWindowGTK *g_delayedFocus; extern "C" { static void gtk_checkbox_toggled_callback(GtkWidget *widget, wxCheckBox *cb) { - if (g_isIdle) wxapp_install_idle_handler(); - if (!cb->m_hasVMT) return; if (g_blockEventsOnDrag) return; @@ -88,7 +84,7 @@ static void gtk_checkbox_toggled_callback(GtkWidget *widget, wxCheckBox *cb) wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, cb->GetId()); event.SetInt(cb->Get3StateValue()); event.SetEventObject(cb); - cb->GetEventHandler()->ProcessEvent(event); + cb->HandleWindowEvent(event); } } @@ -111,8 +107,6 @@ bool wxCheckBox::Create(wxWindow *parent, const wxValidator& validator, const wxString &name ) { - m_needParent = true; - m_acceptsFocus = true; m_blockEvent = false; if (!PreCreation( parent, pos, size ) || @@ -206,6 +200,9 @@ void wxCheckBox::SetLabel( const wxString& label ) { wxCHECK_RET( m_widgetLabel != NULL, wxT("invalid checkbox") ); + // save the label inside m_label in case user calls GetLabel() later + wxControl::SetLabel(label); + GTKSetLabelForLabel(GTK_LABEL(m_widgetLabel), label); } @@ -225,41 +222,9 @@ void wxCheckBox::DoApplyWidgetStyle(GtkRcStyle *style) gtk_widget_modify_style(m_widgetLabel, style); } -bool wxCheckBox::IsOwnGtkWindow( GdkWindow *window ) +GdkWindow *wxCheckBox::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const { - return window == GTK_BUTTON(m_widget)->event_window; -} - -void wxCheckBox::OnInternalIdle() -{ - // Check if we have to show window now - if (GtkShowFromOnIdle()) return; - - wxCursor cursor = m_cursor; - if (g_globalCursor.Ok()) cursor = g_globalCursor; - - GdkWindow *event_window = GTK_BUTTON(m_widgetCheckbox)->event_window; - 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( event_window, cursor.GetCursor() ); - } - - 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); + return GTK_BUTTON(m_widgetCheckbox)->event_window; } wxSize wxCheckBox::DoGetBestSize() const