#pragma implementation "radiobox.h"
#endif
-#include "wx/radiobox.h"
+#include "wx/defs.h"
#if wxUSE_RADIOBOX
+#include "wx/radiobox.h"
+
#include "wx/dialog.h"
#include "wx/frame.h"
+#include "wx/log.h"
#include <gdk/gdk.h>
#include <gtk/gtk.h>
// "clicked"
//-----------------------------------------------------------------------------
-static void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioBox *rb )
+static void gtk_radiobutton_clicked_callback( GtkToggleButton *button, wxRadioBox *rb )
{
if (g_isIdle) wxapp_install_idle_handler();
if (!rb->m_hasVMT) return;
if (g_blockEventsOnDrag) return;
- if (rb->m_alreadySent)
- {
- rb->m_alreadySent = FALSE;
- return;
- }
-
- rb->m_alreadySent = TRUE;
+ if (!button->active) return;
wxCommandEvent event( wxEVT_COMMAND_RADIOBOX_SELECTED, rb->GetId() );
event.SetInt( rb->GetSelection() );
GdkEvent *WXUNUSED(event),
wxRadioBox *win )
{
- wxASSERT_MSG( win->m_hasFocus, _T("got focus out without any focus in?") );
+ // wxASSERT_MSG( win->m_hasFocus, _T("got focus out without any focus in?") );
+ // Replace with a warning, else we dump core a lot!
+ // if (!win->m_hasFocus)
+ // wxLogWarning(_T("Radiobox got focus out without any focus in.") );
// we might have lost the focus, but may be not - it may have just gone to
// another button in the same radiobox, so we'll check for it in the next
void wxRadioBox::Init()
{
- m_alreadySent = FALSE;
m_needParent = TRUE;
m_acceptsFocus = TRUE;
!CreateBase( parent, id, pos, size, style, validator, name ))
{
wxFAIL_MSG( wxT("wxRadioBox creation failed") );
- return FALSE;
+ return FALSE;
}
m_widget = gtk_frame_new( title.mbc_str() );
- m_majorDim = majorDim;
+ // majorDim may be 0 if all trailing parameters were omitted, so don't
+ // assert here but just use the correct value for it
+ m_majorDim = majorDim == 0 ? n : majorDim;
GtkRadioButton *m_radio = (GtkRadioButton*) NULL;
GtkRequisition req;
req.width = 2;
req.height = 2;
- (* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request ) (m_widget, &req );
+ (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_widget) )->size_request ) (m_widget, &req );
if (req.width > ls.x) ls.x = req.width;
wxSize newSize = size;
GtkRequisition req;
req.width = 2;
req.height = 2;
- (* GTK_WIDGET_CLASS( GTK_OBJECT(button)->klass )->size_request )
+ (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(button) )->size_request )
(button, &req );
if (req.width > max_len) max_len = req.width;
GtkRequisition req;
req.width = 2;
req.height = 2;
- (* GTK_WIDGET_CLASS( GTK_OBJECT(button)->klass )->size_request )
+ (* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(button) )->size_request )
(button, &req );
if (req.width > max) max = req.width;
GtkDisableEvents();
- gtk_toggle_button_set_state( button, 1 );
+ gtk_toggle_button_set_active( button, 1 );
GtkEnableEvents();
}