X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b019151f0b23d0fd97925ae8859bd7d0dfc91b0f..74e3313b2506b76b18ea1874cf9b835f11d7068a:/src/gtk1/radiobox.cpp diff --git a/src/gtk1/radiobox.cpp b/src/gtk1/radiobox.cpp index 1f60b251b0..432496cd91 100644 --- a/src/gtk1/radiobox.cpp +++ b/src/gtk1/radiobox.cpp @@ -19,6 +19,13 @@ #include "gtk/gtk.h" #include "wx/gtk/win_gtk.h" +//----------------------------------------------------------------------------- +// idle system +//----------------------------------------------------------------------------- + +extern void wxapp_install_idle_handler(); +extern bool g_isIdle; + //----------------------------------------------------------------------------- // data //----------------------------------------------------------------------------- @@ -31,7 +38,9 @@ extern bool g_blockEventsOnDrag; static void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioBox *rb ) { - if (!rb->HasVMT()) return; + if (g_isIdle) wxapp_install_idle_handler(); + + if (!rb->m_hasVMT) return; if (g_blockEventsOnDrag) return; if (rb->m_alreadySent) @@ -59,7 +68,7 @@ BEGIN_EVENT_TABLE(wxRadioBox, wxControl) EVT_SIZE(wxRadioBox::OnSize) END_EVENT_TABLE() -wxRadioBox::wxRadioBox(void) +wxRadioBox::wxRadioBox() { } @@ -99,8 +108,9 @@ bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title, gtk_signal_connect( GTK_OBJECT(m_radio), "clicked", GTK_SIGNAL_FUNC(gtk_radiobutton_clicked_callback), (gpointer*)this ); - gtk_myfixed_put( GTK_MYFIXED(m_parent->m_wxwindow), GTK_WIDGET(m_radio), m_x+10, m_y+10+(i*24) ); - + gtk_myfixed_put( GTK_MYFIXED(m_parent->m_wxwindow), + GTK_WIDGET(m_radio), + m_x+10, m_y+10+(i*24), 10, 10 ); } wxSize ls = LayoutItems(); @@ -110,9 +120,7 @@ bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title, if (newSize.y == -1) newSize.y = ls.y; SetSize( newSize.x, newSize.y ); - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); + m_parent->DoAddChild( this ); PostCreation(); @@ -127,7 +135,7 @@ bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title, return TRUE; } -wxRadioBox::~wxRadioBox(void) +wxRadioBox::~wxRadioBox() { wxNode *node = m_boxes.First(); while (node) @@ -140,9 +148,9 @@ wxRadioBox::~wxRadioBox(void) void wxRadioBox::OnSize( wxSizeEvent &event ) { - wxControl::OnSize( event ); - LayoutItems(); + + event.Skip(); } wxSize wxRadioBox::LayoutItems() @@ -185,7 +193,7 @@ wxSize wxRadioBox::LayoutItems() { GtkWidget *button = GTK_WIDGET( node->Data() ); - gtk_widget_set_usize( button, max_len, 20 ); + gtk_myfixed_resize( GTK_MYFIXED(m_parent->m_wxwindow), button, max_len, 20 ); node = node->Next(); if (!node) break; @@ -221,9 +229,8 @@ wxSize wxRadioBox::LayoutItems() { GtkWidget *button = GTK_WIDGET( node->Data() ); - gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, m_x+x, m_y+y ); + gtk_myfixed_set_size( GTK_MYFIXED(m_parent->m_wxwindow), button, m_x+x, m_y+y, max, 20 ); x += max; - gtk_widget_set_usize( button, max, 20 ); node = node->Next(); } @@ -240,6 +247,9 @@ bool wxRadioBox::Show( bool show ) wxWindow::Show( show ); + if ((m_windowStyle & wxNO_BORDER) != 0) + gtk_widget_hide( m_widget ); + wxNode *node = m_boxes.First(); while (node) { @@ -377,9 +387,10 @@ void wxRadioBox::SetLabel( int WXUNUSED(item), wxBitmap *WXUNUSED(bitmap) ) wxFAIL_MSG(_T("wxRadioBox::SetLabel not implemented.")); } -void wxRadioBox::Enable( bool enable ) +bool wxRadioBox::Enable( bool enable ) { - wxControl::Enable( enable ); + if ( !wxControl::Enable( enable ) ) + return FALSE; wxNode *node = m_boxes.First(); while (node) @@ -390,6 +401,8 @@ void wxRadioBox::Enable( bool enable ) gtk_widget_set_sensitive( label, enable ); node = node->Next(); } + + return TRUE; } void wxRadioBox::Enable( int item, bool enable )