- int tmp = n;
- gtk_option_menu_set_history( GTK_OPTION_MENU(m_widget), (gint)tmp );
-
- gtk_choice_clicked_callback( (GtkWidget *) NULL, this );
+ wxCHECK_RET( m_widget != NULL, wxT("invalid control") );
+
+ GTKDisableEvents();
+
+ GtkComboBox* combobox = GTK_COMBO_BOX( m_widget );
+ gtk_combo_box_set_active( combobox, n );
+
+ GTKEnableEvents();
+}
+
+void wxChoice::SetColumns(int n)
+{
+ gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(m_widget), n);
+}
+
+int wxChoice::GetColumns() const
+{
+ // gtk_combo_box_get_wrap_width() was added in gtk 2.6
+ gint intval;
+ g_object_get(G_OBJECT(m_widget), "wrap-width", &intval, NULL);
+ return intval;
+}
+
+
+void wxChoice::GTKDisableEvents()
+{
+ g_signal_handlers_block_by_func(m_widget,
+ (gpointer) gtk_choice_changed_callback, this);
+}
+
+void wxChoice::GTKEnableEvents()
+{
+ g_signal_handlers_unblock_by_func(m_widget,
+ (gpointer) gtk_choice_changed_callback, this);
+}
+
+
+GdkWindow *wxChoice::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const
+{
+ return gtk_widget_get_window(m_widget);