static void gimp_container_combo_box_remove_item (GimpContainerView *view, GimpViewable *viewable, gpointer insert_data) { GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (view)); GtkTreeIter *iter = insert_data; if (iter) { gtk_list_store_remove (GTK_LIST_STORE (model), iter); /* If the store is now empty, clear out renderers from all cells * so that they don't reference the viewables. See bug #149906. */ if (gtk_tree_model_iter_n_children (model, NULL) == 0) { g_object_set (GIMP_CONTAINER_COMBO_BOX (view)->viewable_renderer, "renderer", NULL, NULL); gtk_widget_set_sensitive (GTK_WIDGET (view), FALSE); } } }
static gpointer gimp_container_combo_box_insert_item (GimpContainerView *view, GimpViewable *viewable, gint index) { GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (view)); GtkTreeIter iter; if (index == -1) gtk_list_store_append (GTK_LIST_STORE (model), &iter); else gtk_list_store_insert (GTK_LIST_STORE (model), &iter, index); if (gtk_tree_model_iter_n_children (model, NULL) == 1) { /* GimpContainerViews don't select items by default */ gtk_combo_box_set_active (GTK_COMBO_BOX (view), -1); gtk_widget_set_sensitive (GTK_WIDGET (view), TRUE); } gimp_container_combo_box_set (GIMP_CONTAINER_COMBO_BOX (view), &iter, viewable); return gtk_tree_iter_copy (&iter); }
static void gimp_container_combo_box_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { GimpContainerComboBox *combo = GIMP_CONTAINER_COMBO_BOX (object); switch (property_id) { case PROP_ELLIPSIZE: g_object_get_property (G_OBJECT (combo->text_renderer), pspec->name, value); break; default: gimp_container_view_get_property (object, property_id, value, pspec); break; } }