[glade/wip/support-no-ids] GladeEditorTable: Adjusting name/ID edit rules.
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade/wip/support-no-ids] GladeEditorTable: Adjusting name/ID edit rules.
- Date: Wed, 27 Jan 2016 16:47:31 +0000 (UTC)
commit fa18850038d4cc2d6f2b9f4b4b15f43b45092fa0
Author: Tristan Van Berkom <tristan upstairslabs com>
Date: Wed Jan 27 17:33:12 2016 +0100
GladeEditorTable: Adjusting name/ID edit rules.
Now you are allowed to clear the widget ID as long as
that widget is not referred to by anything else in the
project.
gladeui/glade-editor-table.c | 40 ++++++++++++++++++++++++++++++++++------
1 files changed, 34 insertions(+), 6 deletions(-)
---
diff --git a/gladeui/glade-editor-table.c b/gladeui/glade-editor-table.c
index 80a8d65..ba1e10b 100644
--- a/gladeui/glade-editor-table.c
+++ b/gladeui/glade-editor-table.c
@@ -224,9 +224,25 @@ widget_name_edited (GtkWidget *editable, GladeEditorTable *table)
widget = table->priv->loaded_widget;
new_name = gtk_editable_get_chars (GTK_EDITABLE (editable), 0, -1);
- if (glade_project_available_widget_name (glade_widget_get_project (widget),
- widget, new_name))
+ if (new_name == NULL || new_name[0] == '\0')
+ {
+ /* If we are explicitly trying to set the widget name to be empty,
+ * then we must not allow it there are any active references to
+ * the widget which would otherwise break.
+ *
+ * Otherwise, we need to allocate a new unnamed prefix name for the widget
+ */
+ if (!glade_widget_has_prop_refs (widget))
+ {
+ gchar *unnamed_name = glade_project_new_widget_name (glade_widget_get_project (widget), NULL,
GLADE_UNNAMED_PREFIX);
+ glade_command_set_name (widget, unnamed_name);
+ g_free (unnamed_name);
+ }
+ }
+ else if (glade_project_available_widget_name (glade_widget_get_project (widget),
+ widget, new_name))
glade_command_set_name (widget, new_name);
+
g_free (new_name);
}
@@ -264,9 +280,16 @@ widget_name_changed (GladeWidget *widget,
if (table->priv->name_entry)
{
+ const gchar *widget_name;
+
BLOCK_NAME_ENTRY_CB (table);
- gtk_entry_set_text (GTK_ENTRY (table->priv->name_entry),
- glade_widget_get_name (table->priv->loaded_widget));
+
+ widget_name = glade_widget_get_name (table->priv->loaded_widget);
+ if (!widget_name || strncmp (widget_name, GLADE_UNNAMED_PREFIX, strlen (GLADE_UNNAMED_PREFIX)) == 0)
+ gtk_entry_set_text (GTK_ENTRY (table->priv->name_entry), "");
+ else
+ gtk_entry_set_text (GTK_ENTRY (table->priv->name_entry), widget_name);
+
UNBLOCK_NAME_ENTRY_CB (table);
}
}
@@ -368,8 +391,13 @@ glade_editor_table_load (GladeEditable *editable, GladeWidget *widget)
}
if (table->priv->name_entry)
- gtk_entry_set_text (GTK_ENTRY (table->priv->name_entry),
- glade_widget_get_name (widget));
+ {
+ const gchar *widget_name = glade_widget_get_name (widget);
+ if (!widget_name || strncmp (widget_name, GLADE_UNNAMED_PREFIX, strlen (GLADE_UNNAMED_PREFIX)) == 0)
+ gtk_entry_set_text (GTK_ENTRY (table->priv->name_entry), "");
+ else
+ gtk_entry_set_text (GTK_ENTRY (table->priv->name_entry), widget_name);
+ }
if (table->priv->name_label)
widget_composite_changed (widget, NULL, table);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]