if (!cb->m_hasVMT) return;
- if (cb->m_blockFirstEvent)
- {
- cb->m_blockFirstEvent = FALSE;
- return;
- }
-
if (g_blockEventsOnDrag) return;
wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, cb->GetId());
m_needParent = TRUE;
m_acceptsFocus = TRUE;
- PreCreation( parent, id, pos, size, style, name );
-
- m_blockFirstEvent = FALSE;
+ if (!PreCreation( parent, pos, size ) ||
+ !CreateBase( parent, id, pos, size, style, validator, name ))
+ {
+ wxFAIL_MSG( _T("wxCheckBox creation failed") );
+ return FALSE;
+ }
- SetValidator( validator );
wxControl::SetLabel( label );
if ( style & wxALIGN_RIGHT )
gtk_box_pack_start(GTK_BOX(m_widget), m_widgetLabel, FALSE, FALSE, 3);
gtk_box_pack_start(GTK_BOX(m_widget), m_widgetCheckbox, FALSE, FALSE, 3);
- // VZ: why do I have to do this to make them appear?
gtk_widget_show( m_widgetLabel );
gtk_widget_show( m_widgetCheckbox );
}
{
wxCHECK_RET( m_widgetCheckbox != NULL, _T("invalid checkbox") );
- if ( state == GetValue() )
+ if (state == GetValue())
return;
- // for compatibility with wxMSW don't send notification when the check box
- // state is changed programmatically
- m_blockFirstEvent = TRUE;
+ gtk_signal_disconnect_by_func( GTK_OBJECT(m_widgetCheckbox),
+ GTK_SIGNAL_FUNC(gtk_checkbox_clicked_callback),
+ (gpointer *)this );
gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widgetCheckbox), state );
+
+ gtk_signal_connect( GTK_OBJECT(m_widgetCheckbox),
+ "clicked",
+ GTK_SIGNAL_FUNC(gtk_checkbox_clicked_callback),
+ (gpointer *)this );
}
bool wxCheckBox::GetValue() const