X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ad47660f9adc29f8d7b27d2c44f213007044e8b4..784eebb38c994a4a5a44a93d74df6faf7e7683ce:/src/gtk/radiobox.cpp diff --git a/src/gtk/radiobox.cpp b/src/gtk/radiobox.cpp index eace0af70b..f181ace7dc 100644 --- a/src/gtk/radiobox.cpp +++ b/src/gtk/radiobox.cpp @@ -18,7 +18,9 @@ #include "wx/tooltip.h" #endif +#include #include "wx/gtk/private.h" +#include "wx/gtk/private/gtk2-compat.h" #include #if GTK_CHECK_VERSION(3,0,0) @@ -56,12 +58,11 @@ extern bool g_blockEventsOnDrag; extern "C" { static void gtk_radiobutton_clicked_callback( GtkToggleButton *button, wxRadioBox *rb ) { - if (!rb->m_hasVMT) return; if (g_blockEventsOnDrag) return; if (!gtk_toggle_button_get_active(button)) return; - wxCommandEvent event( wxEVT_COMMAND_RADIOBOX_SELECTED, rb->GetId() ); + wxCommandEvent event( wxEVT_RADIOBOX, rb->GetId() ); event.SetInt( rb->GetSelection() ); event.SetString( rb->GetStringSelection() ); event.SetEventObject( rb ); @@ -76,7 +77,6 @@ static void gtk_radiobutton_clicked_callback( GtkToggleButton *button, wxRadioBo extern "C" { static gint gtk_radiobox_keypress_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxRadioBox *rb ) { - if (!rb->m_hasVMT) return FALSE; if (g_blockEventsOnDrag) return FALSE; if ( ((gdk_event->keyval == GDK_Tab) || @@ -88,7 +88,7 @@ static gint gtk_radiobox_keypress_callback( GtkWidget *widget, GdkEventKey *gdk_ // GDK reports GDK_ISO_Left_Tab for SHIFT-TAB new_event.SetDirection( (gdk_event->keyval == GDK_Tab) ); // CTRL-TAB changes the (parent) window, i.e. switch notebook page - new_event.SetWindowChange( (gdk_event->state & GDK_CONTROL_MASK) ); + new_event.SetWindowChange( (gdk_event->state & GDK_CONTROL_MASK) != 0 ); new_event.SetCurrentFocus( rb ); return rb->GetParent()->HandleWindowEvent(new_event); } @@ -317,6 +317,7 @@ wxRadioBox::~wxRadioBox() while (node) { GtkWidget *button = GTK_WIDGET( node->GetData()->button ); + GTKDisconnect(button); gtk_widget_destroy( button ); node = node->GetNext(); } @@ -475,7 +476,7 @@ bool wxRadioBox::IsItemEnabled(unsigned int item) const // don't use GTK_WIDGET_IS_SENSITIVE() here, we want to return true even if // the parent radiobox is disabled - return gtk_widget_get_sensitive(GTK_WIDGET(button)); + return gtk_widget_get_sensitive(GTK_WIDGET(button)) != 0; } bool wxRadioBox::Show(unsigned int item, bool show) @@ -506,7 +507,7 @@ bool wxRadioBox::IsItemShown(unsigned int item) const GtkButton *button = GTK_BUTTON( node->GetData()->button ); - return gtk_widget_get_visible(GTK_WIDGET(button)); + return gtk_widget_get_visible(GTK_WIDGET(button)) != 0; } unsigned int wxRadioBox::GetCount() const @@ -547,8 +548,8 @@ void wxRadioBox::DoApplyWidgetStyle(GtkRcStyle *style) { GtkWidget *widget = GTK_WIDGET( node->GetData()->button ); - gtk_widget_modify_style( widget, style ); - gtk_widget_modify_style(gtk_bin_get_child(GTK_BIN(widget)), style); + GTKApplyStyle(widget, style); + GTKApplyStyle(gtk_bin_get_child(GTK_BIN(widget)), style); node = node->GetNext(); } @@ -616,14 +617,7 @@ GdkWindow *wxRadioBox::GTKGetWindow(wxArrayGdkWindows& windows) const wxVisualAttributes wxRadioBox::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) { - wxVisualAttributes attr; - // NB: we need toplevel window so that GTK+ can find the right style - GtkWidget *wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL); - GtkWidget* widget = gtk_radio_button_new_with_label(NULL, ""); - gtk_container_add(GTK_CONTAINER(wnd), widget); - attr = GetDefaultAttributesFromGTKWidget(widget); - gtk_widget_destroy(wnd); - return attr; + return GetDefaultAttributesFromGTKWidget(gtk_radio_button_new_with_label(NULL, "")); } int wxRadioBox::GetItemFromPoint(const wxPoint& point) const