#pragma implementation "checkbox.h"
#endif
-#include "wx/checkbox.h"
+#include "wx/defs.h"
#if wxUSE_CHECKBOX
-#include "gdk/gdk.h"
-#include "gtk/gtk.h"
+#include "wx/checkbox.h"
+
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
//-----------------------------------------------------------------------------
// idle system
!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;
}
- wxSize newSize(size);
- if (newSize.x == -1)
- {
- newSize.x = 25 + gdk_string_measure( m_widgetCheckbox->style->font,
- m_label.mbc_str() );
- }
- if (newSize.y == -1)
- newSize.y = 26;
-
- SetSize( newSize.x, newSize.y );
-
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 );
(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),
wxCursor cursor = m_cursor;
if (g_globalCursor.Ok()) cursor = g_globalCursor;
- if (GTK_TOGGLE_BUTTON(m_widget)->event_window && cursor.Ok())
+ 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_widget)->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 wxControl::DoGetBestSize();
+}
+
#endif