mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 02:40:11 +00:00
inspector: Don't show mapped/realized/visible in the tree
It does not really add much over the sensitive/insensitive rendering that is already indicating which widget is mapped. At the same time, set up signal handlers so we can update that when the widget changes.
This commit is contained in:
parent
e249c6d6ee
commit
cda706b522
@ -31,9 +31,6 @@ enum
|
||||
OBJECT,
|
||||
OBJECT_TYPE,
|
||||
OBJECT_NAME,
|
||||
WIDGET_REALIZED,
|
||||
WIDGET_VISIBLE,
|
||||
WIDGET_MAPPED,
|
||||
OBJECT_ADDRESS,
|
||||
SENSITIVE
|
||||
};
|
||||
@ -63,6 +60,29 @@ on_widget_selected (GtkTreeSelection *selection,
|
||||
g_signal_emit (wt, widget_tree_signals[WIDGET_CHANGED], 0);
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GObject *object;
|
||||
GtkTreeIter *iter;
|
||||
gulong map_handler;
|
||||
gulong unmap_handler;
|
||||
} ObjectData;
|
||||
|
||||
static void
|
||||
object_data_free (gpointer data)
|
||||
{
|
||||
ObjectData *od = data;
|
||||
|
||||
gtk_tree_iter_free (od->iter);
|
||||
|
||||
if (od->map_handler)
|
||||
{
|
||||
g_signal_handler_disconnect (od->object, od->map_handler);
|
||||
g_signal_handler_disconnect (od->object, od->unmap_handler);
|
||||
}
|
||||
|
||||
g_free (od);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_inspector_widget_tree_init (GtkInspectorWidgetTree *wt)
|
||||
@ -71,7 +91,7 @@ gtk_inspector_widget_tree_init (GtkInspectorWidgetTree *wt)
|
||||
wt->priv->iters = g_hash_table_new_full (g_direct_hash,
|
||||
g_direct_equal,
|
||||
NULL,
|
||||
(GDestroyNotify) gtk_tree_iter_free);
|
||||
(GDestroyNotify) object_data_free);
|
||||
gtk_widget_init_template (GTK_WIDGET (wt));
|
||||
|
||||
gtk_inspector_widget_tree_append_object (wt, G_OBJECT (gtk_settings_get_default ()), NULL, NULL);
|
||||
@ -126,6 +146,19 @@ gtk_inspector_widget_tree_get_selected_object (GtkInspectorWidgetTree *wt)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
map_or_unmap (GtkWidget *widget, GtkInspectorWidgetTree *wt)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
|
||||
if (gtk_inspector_widget_tree_find_object (wt, G_OBJECT (widget), &iter))
|
||||
{
|
||||
gtk_tree_store_set (wt->priv->model, &iter,
|
||||
SENSITIVE, gtk_widget_get_mapped (widget),
|
||||
-1);
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GtkInspectorWidgetTree *wt;
|
||||
@ -149,22 +182,17 @@ gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt,
|
||||
GtkTreeIter iter;
|
||||
const gchar *class_name = G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (object));
|
||||
gchar *address;
|
||||
gboolean realized;
|
||||
gboolean mapped;
|
||||
gboolean visible;
|
||||
gboolean is_widget;
|
||||
ObjectData *od;
|
||||
|
||||
realized = mapped = visible = FALSE;
|
||||
mapped = FALSE;
|
||||
|
||||
is_widget = GTK_IS_WIDGET (object);
|
||||
if (is_widget)
|
||||
if (GTK_IS_WIDGET (object))
|
||||
{
|
||||
GtkWidget *widget = GTK_WIDGET (object);
|
||||
if (name == NULL)
|
||||
name = gtk_widget_get_name (GTK_WIDGET (object));
|
||||
realized = gtk_widget_get_realized (widget);
|
||||
mapped = gtk_widget_get_mapped (widget);
|
||||
visible = gtk_widget_get_visible (widget);
|
||||
}
|
||||
|
||||
if (name == NULL || g_strcmp0 (name, class_name) == 0)
|
||||
@ -186,13 +214,20 @@ gtk_inspector_widget_tree_append_object (GtkInspectorWidgetTree *wt,
|
||||
OBJECT, object,
|
||||
OBJECT_TYPE, class_name,
|
||||
OBJECT_NAME, name,
|
||||
WIDGET_REALIZED, realized,
|
||||
WIDGET_MAPPED, mapped,
|
||||
WIDGET_VISIBLE, visible,
|
||||
OBJECT_ADDRESS, address,
|
||||
SENSITIVE, !is_widget || (realized && mapped && visible),
|
||||
SENSITIVE, !GTK_IS_WIDGET (object) || mapped,
|
||||
-1);
|
||||
g_hash_table_insert (wt->priv->iters, object, gtk_tree_iter_copy (&iter));
|
||||
|
||||
od = g_new0 (ObjectData, 1);
|
||||
od->object = object;
|
||||
od->iter = gtk_tree_iter_copy (&iter);
|
||||
if (GTK_IS_WIDGET (object))
|
||||
{
|
||||
od->map_handler = g_signal_connect (object, "map", G_CALLBACK (map_or_unmap), wt);
|
||||
od->unmap_handler = g_signal_connect (object, "unmap", G_CALLBACK (map_or_unmap), wt);
|
||||
}
|
||||
|
||||
g_hash_table_insert (wt->priv->iters, object, od);
|
||||
|
||||
g_free (address);
|
||||
|
||||
@ -254,10 +289,12 @@ gtk_inspector_widget_tree_find_object (GtkInspectorWidgetTree *wt,
|
||||
GObject *object,
|
||||
GtkTreeIter *iter)
|
||||
{
|
||||
GtkTreeIter *internal_iter = g_hash_table_lookup (wt->priv->iters, object);
|
||||
if (internal_iter)
|
||||
ObjectData *od;
|
||||
|
||||
od = g_hash_table_lookup (wt->priv->iters, object);
|
||||
if (od)
|
||||
{
|
||||
*iter = *internal_iter;
|
||||
*iter = *od->iter;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -5,9 +5,6 @@
|
||||
<column type="gpointer"/>
|
||||
<column type="gchararray"/>
|
||||
<column type="gchararray"/>
|
||||
<column type="gboolean"/>
|
||||
<column type="gboolean"/>
|
||||
<column type="gboolean"/>
|
||||
<column type="gchararray"/>
|
||||
<column type="gboolean"/>
|
||||
</columns>
|
||||
@ -31,7 +28,7 @@
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="text">1</attribute>
|
||||
<attribute name="sensitive">7</attribute>
|
||||
<attribute name="sensitive">4</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
@ -46,49 +43,7 @@
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="text">2</attribute>
|
||||
<attribute name="sensitive">7</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn">
|
||||
<property name="title" translatable="yes">Realized</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle">
|
||||
<property name="activatable">True</property>
|
||||
<property name="indicator-size">10</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">3</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn">
|
||||
<property name="title" translatable="yes">Mapped</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle">
|
||||
<property name="activatable">True</property>
|
||||
<property name="indicator-size">10</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">4</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkTreeViewColumn">
|
||||
<property name="title" translatable="yes">Visible</property>
|
||||
<child>
|
||||
<object class="GtkCellRendererToggle">
|
||||
<property name="activatable">True</property>
|
||||
<property name="indicator-size">10</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="active">5</attribute>
|
||||
<attribute name="sensitive">4</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
@ -103,8 +58,8 @@
|
||||
<property name="family">monospace</property>
|
||||
</object>
|
||||
<attributes>
|
||||
<attribute name="text">6</attribute>
|
||||
<attribute name="sensitive">7</attribute>
|
||||
<attribute name="text">3</attribute>
|
||||
<attribute name="sensitive">4</attribute>
|
||||
</attributes>
|
||||
</child>
|
||||
</object>
|
||||
|
Loading…
Reference in New Issue
Block a user