diff options
author | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2013-09-11 16:12:59 -0300 |
---|---|---|
committer | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2013-09-11 18:22:18 -0300 |
commit | 9e1b474621314dd3fa41ace6b17c615a9bdb498e (patch) | |
tree | e3ff31ad80e3d7457924ff7077636b1b5c336f1b /gladeui/glade-project.c | |
parent | 787cc5cac5d1950ac57783478279a9135c640995 (diff) | |
download | glade-9e1b474621314dd3fa41ace6b17c615a9bdb498e.tar.gz |
glade_project_remove_object() check if object has a GladeWidget first since its cheaper
and issue a warning if we have an object in the project without a GladeWidget.
Diffstat (limited to 'gladeui/glade-project.c')
-rw-r--r-- | gladeui/glade-project.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/gladeui/glade-project.c b/gladeui/glade-project.c index 2292e74e..a2881ea3 100644 --- a/gladeui/glade-project.c +++ b/gladeui/glade-project.c @@ -3731,15 +3731,25 @@ glade_project_remove_object (GladeProject *project, GObject *object) g_return_if_fail (GLADE_IS_PROJECT (project)); g_return_if_fail (G_IS_OBJECT (object)); - if (!glade_project_has_object (project, object)) - return; - if (GLADE_IS_PLACEHOLDER (object)) return; if ((gwidget = glade_widget_get_from_gobject (object)) == NULL) - return; + { + if (g_list_find (project->priv->objects, object)) + { + project->priv->tree = g_list_remove_all (project->priv->tree, object); + project->priv->objects = g_list_remove_all (project->priv->objects, object); + project->priv->selection = g_list_remove_all (project->priv->selection, object); + g_warning ("Internal data model error, removing object %p %s without a GladeWidget wrapper", + object, G_OBJECT_TYPE_NAME (object)); + } + return; + } + if (!glade_project_has_object (project, object)) + return; + /* Recurse and remove deepest children first */ if ((children = glade_widget_get_children (gwidget)) != NULL) { |