[gtk+] inspector: Show the refcount on the misc tab
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] inspector: Show the refcount on the misc tab
- Date: Thu, 13 Nov 2014 02:58:35 +0000 (UTC)
commit 45528440e6dbc85018f20582e26f13de8ebd396a
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Nov 12 21:58:08 2014 -0500
inspector: Show the refcount on the misc tab
gtk/inspector/misc-info.c | 98 ++++++++++++++++++++++++------------------
gtk/inspector/misc-info.ui | 34 ++++++++++++++
gtk/inspector/misc-info.ui.h | 1 +
3 files changed, 91 insertions(+), 42 deletions(-)
---
diff --git a/gtk/inspector/misc-info.c b/gtk/inspector/misc-info.c
index b181eb6..0834311 100644
--- a/gtk/inspector/misc-info.c
+++ b/gtk/inspector/misc-info.c
@@ -36,6 +36,8 @@ struct _GtkInspectorMiscInfoPrivate {
GObject *object;
+ GtkWidget *refcount_row;
+ GtkWidget *refcount;
GtkWidget *state_row;
GtkWidget *state;
GtkWidget *buildable_id_row;
@@ -268,7 +270,15 @@ static gboolean
update_info (gpointer data)
{
GtkInspectorMiscInfo *sl = data;
+ gchar *tmp;
+ if (G_IS_OBJECT (sl->priv->object))
+ {
+ tmp = g_strdup_printf ("%d", sl->priv->object->ref_count);
+ gtk_label_set_text (GTK_LABEL (sl->priv->refcount), tmp);
+ g_free (tmp);
+ }
+
if (GTK_IS_WIDGET (sl->priv->object))
{
AtkObject *accessible;
@@ -279,11 +289,11 @@ update_info (gpointer data)
list = gtk_widget_list_mnemonic_labels (GTK_WIDGET (sl->priv->object));
for (l = list; l; l = l->next)
{
- gchar *tmp;
GtkWidget *button;
tmp = g_strdup_printf ("%p (%s)", l->data, g_type_name_from_instance ((GTypeInstance*)l->data));
button = gtk_button_new_with_label (tmp);
+ g_free (tmp);
gtk_widget_show (button);
gtk_container_add (GTK_CONTAINER (sl->priv->mnemonic_label), button);
g_object_set_data (G_OBJECT (button), "mnemonic-label", l->data);
@@ -302,6 +312,18 @@ update_info (gpointer data)
gtk_widget_set_visible (sl->priv->child_visible, gtk_widget_get_child_visible (GTK_WIDGET
(sl->priv->object)));
}
+ if (GTK_IS_BUILDABLE (sl->priv->object))
+ {
+ gtk_label_set_text (GTK_LABEL (sl->priv->buildable_id),
+ gtk_buildable_get_name (GTK_BUILDABLE (sl->priv->object)));
+ }
+
+ if (GTK_IS_WINDOW (sl->priv->object))
+ {
+ update_default_widget (sl);
+ update_focus_widget (sl);
+ }
+
return G_SOURCE_CONTINUE;
}
@@ -319,12 +341,6 @@ gtk_inspector_misc_info_set_object (GtkInspectorMiscInfo *sl,
sl->priv->object = NULL;
}
- if (!GTK_IS_WIDGET (object) && !GTK_IS_BUILDABLE (object))
- {
- gtk_widget_hide (GTK_WIDGET (sl));
- return;
- }
-
gtk_widget_show (GTK_WIDGET (sl));
sl->priv->object = object;
@@ -333,6 +349,7 @@ gtk_inspector_misc_info_set_object (GtkInspectorMiscInfo *sl,
if (GTK_IS_WIDGET (object))
{
+ gtk_widget_show (sl->priv->refcount_row);
gtk_widget_show (sl->priv->state_row);
gtk_widget_show (sl->priv->allocated_size_row);
gtk_widget_show (sl->priv->mnemonic_label_row);
@@ -348,8 +365,6 @@ gtk_inspector_misc_info_set_object (GtkInspectorMiscInfo *sl,
g_signal_connect_object (object, "size-allocate", G_CALLBACK (allocation_changed), sl, 0);
allocation_changed (GTK_WIDGET (sl->priv->object), NULL, sl);
-
- update_info (sl);
}
else
{
@@ -367,8 +382,6 @@ gtk_inspector_misc_info_set_object (GtkInspectorMiscInfo *sl,
if (GTK_IS_BUILDABLE (object))
{
- gtk_label_set_text (GTK_LABEL (sl->priv->buildable_id),
- gtk_buildable_get_name (GTK_BUILDABLE (object)));
gtk_widget_show (sl->priv->buildable_id_row);
}
else
@@ -381,9 +394,6 @@ gtk_inspector_misc_info_set_object (GtkInspectorMiscInfo *sl,
gtk_widget_show (sl->priv->default_widget_row);
gtk_widget_show (sl->priv->focus_widget_row);
- update_default_widget (sl);
- update_focus_widget (sl);
-
g_signal_connect_object (object, "set-focus", G_CALLBACK (set_focus_cb), sl, G_CONNECT_AFTER);
}
else
@@ -391,6 +401,8 @@ gtk_inspector_misc_info_set_object (GtkInspectorMiscInfo *sl,
gtk_widget_hide (sl->priv->default_widget_row);
gtk_widget_hide (sl->priv->focus_widget_row);
}
+
+ update_info (sl);
}
static void
@@ -479,34 +491,36 @@ gtk_inspector_misc_info_class_init (GtkInspectorMiscInfoClass *klass)
GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/inspector/misc-info.ui");
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, state_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, state);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, buildable_id_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, buildable_id);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, default_widget_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, default_widget);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, default_widget_button);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, focus_widget_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, focus_widget);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, focus_widget_button);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, mnemonic_label_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, mnemonic_label);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, allocated_size_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, allocated_size);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, clip_area_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, clip_area);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, tick_callback_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, tick_callback);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, accessible_role_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, accessible_role);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, mapped_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, mapped);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, realized_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, realized);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, is_toplevel_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, is_toplevel);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, child_visible_row);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, child_visible);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, refcount_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, refcount);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, state_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, state);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, buildable_id_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, buildable_id);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, default_widget_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, default_widget);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, default_widget_button);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, focus_widget_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, focus_widget);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, focus_widget_button);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, mnemonic_label_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, mnemonic_label);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, allocated_size_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, allocated_size);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, clip_area_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, clip_area);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, tick_callback_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, tick_callback);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, accessible_role_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, accessible_role);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, mapped_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, mapped);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, realized_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, realized);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, is_toplevel_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, is_toplevel);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, child_visible_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, child_visible);
gtk_widget_class_bind_template_callback (widget_class, show_default_widget);
gtk_widget_class_bind_template_callback (widget_class, show_focus_widget);
diff --git a/gtk/inspector/misc-info.ui b/gtk/inspector/misc-info.ui
index ad0a096..4eeba49 100644
--- a/gtk/inspector/misc-info.ui
+++ b/gtk/inspector/misc-info.ui
@@ -16,6 +16,40 @@
<property name="visible">True</property>
<property name="selection-mode">none</property>
<child>
+ <object class="GtkListBoxRow" id="refcount_row">
+ <property name="visible">True</property>
+ <property name="activatable">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="orientation">horizontal</property>
+ <property name="margin">10</property>
+ <property name="spacing">40</property>
+ <child>
+ <object class="GtkLabel" id="refcount_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Reference count</property>
+ <property name="halign">start</property>
+ <property name="valign">baseline</property>
+ <property name="xalign">0.0</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="refcount">
+ <property name="visible">True</property>
+ <property name="selectable">True</property>
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
<object class="GtkListBoxRow" id="state_row">
<property name="visible">True</property>
<property name="activatable">False</property>
diff --git a/gtk/inspector/misc-info.ui.h b/gtk/inspector/misc-info.ui.h
index 6d954ce..53fba2b 100644
--- a/gtk/inspector/misc-info.ui.h
+++ b/gtk/inspector/misc-info.ui.h
@@ -1,3 +1,4 @@
+N_("Reference count");
N_("State");
N_("Buildable ID");
N_("Default Widget");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]