static gboolean treemodelfilter_visible_func (GtkTreeModel *model, GtkTreeIter *iter, gpointer data) { _GladeAdaptorChooserWidgetPrivate *priv = GET_PRIVATE (data); GladeWidgetAdaptor *adaptor = NULL; gboolean visible = TRUE; gtk_tree_model_get (model, iter, COLUMN_ADAPTOR, &adaptor, -1); if (!adaptor) return priv->show_group_title && !priv->search_text; /* Skip classes not available in project target version */ if (priv->project) { const gchar *catalog = NULL; gint major, minor; catalog = glade_widget_adaptor_get_catalog (adaptor); glade_project_get_target_version (priv->project, catalog, &major, &minor); visible = GWA_VERSION_CHECK (adaptor, major, minor); } if (visible && priv->flags) { GType type = glade_widget_adaptor_get_object_type (adaptor); _GladeAdaptorChooserWidgetFlags flags = priv->flags; /* Skip adaptors according to flags */ if (flags & GLADE_ADAPTOR_CHOOSER_WIDGET_SKIP_DEPRECATED && GWA_DEPRECATED (adaptor)) visible = FALSE; else if (flags & GLADE_ADAPTOR_CHOOSER_WIDGET_SKIP_TOPLEVEL && GWA_IS_TOPLEVEL (adaptor)) visible = FALSE; else if (flags & GLADE_ADAPTOR_CHOOSER_WIDGET_WIDGET && !g_type_is_a (type, GTK_TYPE_WIDGET)) visible = FALSE; else if (flags & GLADE_ADAPTOR_CHOOSER_WIDGET_TOPLEVEL && !GWA_IS_TOPLEVEL (adaptor)) visible = FALSE; } if (visible && priv->search_text) visible = chooser_match_func (data, model, priv->search_text, iter); g_clear_object (&adaptor); return visible; }
void glade_gtk_widget_deep_post_create (GladeWidgetAdaptor * adaptor, GObject * widget, GladeCreateReason reason) { GladeWidget *gwidget = glade_widget_get_from_gobject (widget); /* Work around bug 472555 by resetting the default event mask, * this way only user edits will be saved to the glade file. */ if (reason == GLADE_CREATE_USER) glade_widget_property_reset (gwidget, "events"); glade_widget_set_action_sensitive (gwidget, "remove_parent", FALSE); if (GWA_IS_TOPLEVEL (adaptor) || glade_widget_get_internal (gwidget)) glade_widget_set_action_sensitive (gwidget, "add_parent", FALSE); /* Watch parents/projects and set actions sensitive/insensitive */ if (!glade_widget_get_internal (gwidget)) g_signal_connect (G_OBJECT (widget), "notify::parent", G_CALLBACK (widget_parent_changed), adaptor); if (!glade_widget_adaptor_get_book (adaptor) || !glade_util_have_devhelp ()) glade_widget_set_action_visible (gwidget, "read_documentation", FALSE); }