[glade] Update widget name when realizing layout to prevent lossing it after a reparent.
- From: Juan Pablo Ugarte <jpu src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade] Update widget name when realizing layout to prevent lossing it after a reparent.
- Date: Thu, 27 Jun 2013 21:08:40 +0000 (UTC)
commit 782831b1f79588483a44bdae23b1f614fce6016b
Author: Juan Pablo Ugarte <juanpablougarte gmail com>
Date: Thu Jun 27 18:05:19 2013 -0300
Update widget name when realizing layout to prevent lossing it after a reparent.
gladeui/glade-design-layout.c | 31 +++++++++++++++++++++++--------
1 files changed, 23 insertions(+), 8 deletions(-)
---
diff --git a/gladeui/glade-design-layout.c b/gladeui/glade-design-layout.c
index f4ddcdc..81863cd 100644
--- a/gladeui/glade-design-layout.c
+++ b/gladeui/glade-design-layout.c
@@ -877,7 +877,11 @@ update_rectangles (GladeDesignLayoutPrivate *priv, GtkAllocation *alloc)
priv->south.width = alloc->width;
/* Update south east rectangle width */
- pango_layout_get_pixel_size (priv->widget_name, &width, &height);
+ if (priv->widget_name)
+ pango_layout_get_pixel_size (priv->widget_name, &width, &height);
+ else
+ width = height = 0;
+
priv->layout_width = width + (OUTLINE_WIDTH*2);
width = MIN (alloc->width, width);
@@ -934,13 +938,22 @@ glade_design_layout_size_allocate (GtkWidget *widget,
}
}
+static inline void
+update_widget_name (GladeDesignLayout *layout, GladeWidget *gwidget)
+{
+ GladeDesignLayoutPrivate *priv = layout->priv;
+
+ if (priv->widget_name && gwidget)
+ {
+ pango_layout_set_text (priv->widget_name, glade_widget_get_name (gwidget), -1);
+ gtk_widget_queue_resize (GTK_WIDGET (layout));
+ }
+}
+
static void
on_glade_widget_name_notify (GObject *gobject, GParamSpec *pspec, GladeDesignLayout *layout)
{
- GladeDesignLayoutPrivate *priv = layout->priv;
-
- pango_layout_set_text (priv->widget_name, glade_widget_get_name (GLADE_WIDGET (gobject)), -1);
- gtk_widget_queue_resize (GTK_WIDGET (layout));
+ update_widget_name (layout, GLADE_WIDGET (gobject));
}
static void
@@ -960,7 +973,7 @@ glade_design_layout_add (GtkContainer *container, GtkWidget *widget)
if ((gchild = glade_widget_get_from_gobject (G_OBJECT (widget))))
{
- on_glade_widget_name_notify (G_OBJECT (gchild), NULL, layout);
+ update_widget_name (layout, gchild);
g_signal_connect (gchild, "notify::name", G_CALLBACK (on_glade_widget_name_notify), layout);
}
@@ -1596,9 +1609,8 @@ offscreen_window_from_parent (GdkWindow *window,
to_child (bin, parent_x, parent_y, offscreen_x, offscreen_y);
}
-
static void
-glade_design_layout_realize (GtkWidget * widget)
+glade_design_layout_realize (GtkWidget *widget)
{
GladeDesignLayoutPrivate *priv;
GdkWindowAttr attributes;
@@ -1688,6 +1700,9 @@ glade_design_layout_realize (GtkWidget * widget)
priv->cursors[ACTIVITY_MARGINS_BOTTOM_RIGHT] = g_object_ref
(priv->cursors[ACTIVITY_RESIZE_WIDTH_AND_HEIGHT]);
priv->widget_name = pango_layout_new (gtk_widget_get_pango_context (widget));
+ if (child)
+ update_widget_name (GLADE_DESIGN_LAYOUT (widget),
+ glade_widget_get_from_gobject (child));
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]