[gtk+] GtkInspector: Add a function to select the widget under the pointer



commit b0390a334914c1239c37e5d3eb52019ae875331f
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Jul 6 17:03:53 2014 -0400

    GtkInspector: Add a function to select the widget under the pointer

 gtk/inspector/inspect-button.c |   47 +++++++++++++++++++++++++++++----------
 gtk/inspector/window.h         |    3 ++
 2 files changed, 38 insertions(+), 12 deletions(-)
---
diff --git a/gtk/inspector/inspect-button.c b/gtk/inspector/inspect-button.c
index db88a8c..f55874b 100644
--- a/gtk/inspector/inspect-button.c
+++ b/gtk/inspector/inspect-button.c
@@ -201,6 +201,21 @@ start_flash (GtkInspectorWindow *iw,
 }
 
 static void
+select_widget (GtkInspectorWindow *iw,
+               GtkWidget          *widget)
+{
+  iw->selected_widget = widget;
+
+  gtk_notebook_set_current_page (GTK_NOTEBOOK (iw->top_notebook), 0);
+
+  gtk_inspector_widget_tree_scan (GTK_INSPECTOR_WIDGET_TREE (iw->widget_tree),
+                                  gtk_widget_get_toplevel (widget));
+
+  gtk_inspector_widget_tree_select_object (GTK_INSPECTOR_WIDGET_TREE (iw->widget_tree),
+                                           G_OBJECT (widget));
+}
+
+static void
 on_inspect_widget (GtkWidget          *button,
                    GdkEvent           *event,
                    GtkInspectorWindow *iw)
@@ -213,18 +228,8 @@ on_inspect_widget (GtkWidget          *button,
 
   widget = find_widget_at_pointer (gdk_event_get_device (event));
 
-  if (widget == NULL)
-    return;
-
-  iw->selected_widget = widget;
-
-  gtk_notebook_set_current_page (GTK_NOTEBOOK (iw->top_notebook), 0);
-
-  gtk_inspector_widget_tree_scan (GTK_INSPECTOR_WIDGET_TREE (iw->widget_tree),
-                                  gtk_widget_get_toplevel (widget));
-
-  gtk_inspector_widget_tree_select_object (GTK_INSPECTOR_WIDGET_TREE (iw->widget_tree),
-                                           G_OBJECT (widget));
+  if (widget)
+    select_widget (iw, widget);
 }
 
 static void
@@ -401,4 +406,22 @@ gtk_inspector_stop_highlight (GtkWidget *widget)
   gtk_widget_queue_draw (widget);
 }
 
+void
+gtk_inspector_window_select_widget_under_pointer (GtkInspectorWindow *iw)
+{
+  GdkDisplay *display;
+  GdkDeviceManager *dm;
+  GdkDevice *device;
+  GtkWidget *widget;
+
+  display = gtk_widget_get_display (GTK_WIDGET (iw));
+  dm = gdk_display_get_device_manager (display);
+  device = gdk_device_manager_get_client_pointer (dm);
+
+  widget = find_widget_at_pointer (device);
+
+  if (widget)
+    select_widget (iw, widget);
+}
+
 /* vim: set et sw=2 ts=2: */
diff --git a/gtk/inspector/window.h b/gtk/inspector/window.h
index 42a8828..6256832 100644
--- a/gtk/inspector/window.h
+++ b/gtk/inspector/window.h
@@ -83,6 +83,9 @@ void       gtk_inspector_flash_widget       (GtkInspectorWindow *iw,
                                              GtkWidget          *widget);
 void       gtk_inspector_start_highlight    (GtkWidget          *widget);
 void       gtk_inspector_stop_highlight     (GtkWidget          *widget);
+
+void       gtk_inspector_window_select_widget_under_pointer (GtkInspectorWindow *iw);
+
                                             
 
 G_END_DECLS


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