diff options
author | Tristan Van Berkom <tristan@upstairslabs.com> | 2016-01-27 17:13:13 +0100 |
---|---|---|
committer | Tristan Van Berkom <tristan@upstairslabs.com> | 2016-01-27 17:13:13 +0100 |
commit | b448b883c14cfb07531045886c28313a0f9241e0 (patch) | |
tree | aff4a3ad3f59f72ef15360edc8585e9500abedfd | |
parent | 1069f10b5bffdd6db2e7d3d8e85c3a6e5fd1cb62 (diff) | |
download | glade-b448b883c14cfb07531045886c28313a0f9241e0.tar.gz |
GladeEditorProperty: Set names on selected widgets in the multi-object dialog
Ensure that the selected list of objects have names
-rw-r--r-- | gladeui/glade-editor-property.c | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/gladeui/glade-editor-property.c b/gladeui/glade-editor-property.c index 77f04e4b..464ea4e5 100644 --- a/gladeui/glade-editor-property.c +++ b/gladeui/glade-editor-property.c @@ -3376,17 +3376,7 @@ glade_eprop_object_show_dialog (GladeEditorProperty *eprop) * * To refer to a widget, it needs to have a name. */ - current_name = glade_widget_get_name (new_widget); - if (!current_name || strncmp (current_name, GLADE_UNNAMED_PREFIX, strlen (GLADE_UNNAMED_PREFIX)) == 0) - { - gchar *new_name; - GladeWidgetAdaptor *adaptor = glade_widget_get_adaptor (new_widget); - - new_name = glade_project_new_widget_name (project, NULL, - glade_widget_adaptor_get_generic_name (adaptor)); - glade_command_set_name (new_widget, new_name); - g_free (new_name); - } + glade_widget_ensure_name (new_widget, project); glade_editor_property_commit (eprop, value); glade_command_pop_group (); @@ -3399,7 +3389,6 @@ glade_eprop_object_show_dialog (GladeEditorProperty *eprop) { GValue *value; GladeWidget *new_widget; - gchar *new_name; /* translators: Creating 'a widget' for 'a property' of 'a widget' */ glade_command_push_group (_("Creating %s for %s of %s"), @@ -3412,19 +3401,13 @@ glade_eprop_object_show_dialog (GladeEditorProperty *eprop) glade_command_create (create_adaptor, NULL, NULL, project)) != NULL) { GValue *value; - GParamSpec *pspec; glade_project_selection_set (project, glade_widget_get_object (widget), TRUE); /* Give the newly created object a name */ - new_name = glade_project_new_widget_name (project, NULL, - glade_widget_adaptor_get_generic_name (create_adaptor)); - glade_command_set_name (new_widget, new_name); - g_free (new_name); + glade_widget_ensure_name (new_widget, project); value = g_new0 (GValue, 1); - pspec = glade_property_class_get_pspec (eprop->priv->klass); - g_value_init (value, pspec->value_type); g_value_set_object (value, glade_widget_get_object (new_widget)); @@ -3651,17 +3634,36 @@ glade_eprop_objects_show_dialog (GladeEditorProperty *eprop) if (res == GTK_RESPONSE_OK) { GValue *value; - GList *selected = NULL; + GList *selected = NULL, *l; gtk_tree_model_foreach (gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)), (GtkTreeModelForeachFunc) glade_eprop_objects_selected_widget, &selected); - value = glade_property_class_make_gvalue (eprop->priv->klass, selected); + if (selected) + { + glade_command_push_group (_("Setting %s of %s"), + glade_property_class_get_name (eprop->priv->klass), + glade_widget_get_name (widget)); + /* Make sure the selected widgets have names now + */ + for (l = selected; l; l = l->next) + { + GObject *object = l->data; + GladeWidget *selected_widget = glade_widget_get_from_gobject (object); + + glade_widget_ensure_name (selected_widget, project); + } + } + + value = glade_property_class_make_gvalue (eprop->priv->klass, selected); glade_editor_property_commit (eprop, value); + if (selected) + glade_command_pop_group (); + g_value_unset (value); g_free (value); } |