[glade/wip/support-no-ids] GladeEditorProperty: Set names on selected widgets in the multi-object dialog



commit b448b883c14cfb07531045886c28313a0f9241e0
Author: Tristan Van Berkom <tristan upstairslabs com>
Date:   Wed Jan 27 17:13:13 2016 +0100

    GladeEditorProperty: Set names on selected widgets in the multi-object dialog
    
    Ensure that the selected list of objects have names

 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 77f04e4..464ea4e 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);
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]