#pragma implementation "checkbox.h"
#endif
-#include "wx/checkbox.h"
+#include "wx/defs.h"
#if wxUSE_CHECKBOX
+#include "wx/checkbox.h"
+
#include <gdk/gdk.h>
#include <gtk/gtk.h>
if (!cb->m_hasVMT) return;
if (g_blockEventsOnDrag) return;
+
+ if (cb->m_blockEvent) return;
wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, cb->GetId());
event.SetInt( cb->GetValue() );
{
m_needParent = TRUE;
m_acceptsFocus = TRUE;
+ m_blockEvent = FALSE;
if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, validator, name ))
{
wxFAIL_MSG( wxT("wxCheckBox creation failed") );
- return FALSE;
+ return FALSE;
}
wxControl::SetLabel( label );
m_widget = m_widgetCheckbox;
}
- SetSizeOrDefault( size );
-
gtk_signal_connect( GTK_OBJECT(m_widgetCheckbox),
"clicked",
GTK_SIGNAL_FUNC(gtk_checkbox_clicked_callback),
PostCreation();
+ SetFont( parent->GetFont() );
+
+ wxSize size_best( DoGetBestSize() );
+ wxSize new_size( size );
+ if (new_size.x == -1)
+ new_size.x = size_best.x;
+ if (new_size.y == -1)
+ new_size.y = size_best.y;
+ if ((new_size.x != size.x) || (new_size.y != size.y))
+ SetSize( new_size.x, new_size.y );
+
SetBackgroundColour( parent->GetBackgroundColour() );
SetForegroundColour( parent->GetForegroundColour() );
- SetFont( parent->GetFont() );
Show( TRUE );
if (state == GetValue())
return;
- gtk_signal_disconnect_by_func( GTK_OBJECT(m_widgetCheckbox),
- GTK_SIGNAL_FUNC(gtk_checkbox_clicked_callback),
- (gpointer *)this );
+ m_blockEvent = TRUE;
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 );
+
+ m_blockEvent = FALSE;
}
bool wxCheckBox::GetValue() const
if (GTK_TOGGLE_BUTTON(m_widgetCheckbox)->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() );
+ 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() );
}
UpdateWindowUI();
wxSize wxCheckBox::DoGetBestSize() const
{
- return wxSize( 25 + gdk_string_measure( m_widgetCheckbox->style->font,
- m_label.mbc_str() ), 26 );
+ return wxControl::DoGetBestSize();
}
#endif