summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.van.berkom@gmail.com>2011-10-11 15:35:23 -0400
committerTristan Van Berkom <tristan.van.berkom@gmail.com>2011-10-11 15:36:15 -0400
commit881f163a952891af7ed1ff9128fe596e8d13d4f9 (patch)
tree78fbc52d9cb089803a1271f237415ba3c9645f11
parent1277357a9ae6725a5f55e5494ce112c2e5c0d118 (diff)
downloadglade-881f163a952891af7ed1ff9128fe596e8d13d4f9.tar.gz
2011-10-11 Benjamin Otte <otte@redhat.com>
* gladeui/glade-editor-property.c: Make size groups widget selection work (bug 647984)
-rw-r--r--ChangeLog5
-rw-r--r--gladeui/glade-editor-property.c25
2 files changed, 18 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index cb0d98d8..f917fd42 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-11 Benjamin Otte <otte@redhat.com>
+
+ * gladeui/glade-editor-property.c:
+ Make size groups widget selection work (bug 647984)
+
2011-10-09 Tristan Van Berkom <tvb@gnome.org>
* gladeui/glade-project.c: Fix glade_project_notify_has_child() to notify
diff --git a/gladeui/glade-editor-property.c b/gladeui/glade-editor-property.c
index 81897c0c..3aeb4a60 100644
--- a/gladeui/glade-editor-property.c
+++ b/gladeui/glade-editor-property.c
@@ -3235,7 +3235,12 @@ glade_eprop_objects_show_dialog (GtkWidget * dialog_button,
GParamSpec *pspec;
gchar *title = glade_eprop_object_dialog_title (eprop);
gint res;
- GList *selected_list = NULL, *exception_list = NULL, *selected_objects = NULL;
+ GList *selected_list = NULL, *exception_list = NULL, *selected_objects = NULL, *l;
+
+ /* It's improbable but possible the editor is visible with no
+ * property selected, in this case avoid crashes */
+ if (!eprop->priv->property)
+ return;
widget = glade_property_get_widget (eprop->priv->property);
project = glade_widget_get_project (widget);
@@ -3278,21 +3283,17 @@ glade_eprop_objects_show_dialog (GtkWidget * dialog_button,
tree_view = glade_eprop_object_view (FALSE);
-
+ /* Dont allow selecting the widget owning this property (perhaps this is wrong) */
exception_list = g_list_prepend (exception_list, widget);
- /* XXX This looks broken, do "object list" properties hold an object ? I doubt it... */
- if (g_value_get_object (glade_property_inline_value (eprop->priv->property)))
- {
- GList *l;
- glade_property_get (eprop->priv->property, &selected_objects);
- for (l = selected_objects; l; l = l->next)
- selected_list = g_list_prepend (selected_list,
- glade_widget_get_from_gobject (l->data));
- }
+ /* Build the list of already selected objects */
+ glade_property_get (eprop->priv->property, &selected_objects);
+ for (l = selected_objects; l; l = l->next)
+ selected_list = g_list_prepend (selected_list, glade_widget_get_from_gobject (l->data));
+
glade_eprop_object_populate_view (project, GTK_TREE_VIEW (tree_view),
selected_list, exception_list,
- pspec->value_type,
+ glade_param_spec_objects_get_type (GLADE_PARAM_SPEC_OBJECTS (pspec)),
glade_property_class_parentless_widget (eprop->priv->klass));
g_list_free (selected_list);
g_list_free (exception_list);