[gnome-builder/wip/gtk4-port] libide/gui: look through transient-for for workspace



commit cbe185fdcb6ec96a0cab00dbd955bbaeb388a770
Author: Christian Hergert <chergert redhat com>
Date:   Fri Jun 10 17:41:56 2022 -0700

    libide/gui: look through transient-for for workspace

 src/libide/gui/ide-gui-global.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)
---
diff --git a/src/libide/gui/ide-gui-global.c b/src/libide/gui/ide-gui-global.c
index 38e99f563..76298c376 100644
--- a/src/libide/gui/ide-gui-global.c
+++ b/src/libide/gui/ide-gui-global.c
@@ -229,11 +229,21 @@ ide_widget_get_workbench (GtkWidget *widget)
 IdeWorkspace *
 ide_widget_get_workspace (GtkWidget *widget)
 {
+  GtkWindow *transient_for;
   GtkRoot *root;
 
   g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
 
-  root = gtk_widget_get_root (widget);
+  if (GTK_IS_ROOT (widget))
+    root = GTK_ROOT (widget);
+  else
+    root = gtk_widget_get_root (widget);
+
+  if (root != NULL &&
+      !IDE_IS_WORKSPACE (root) &&
+      GTK_IS_WINDOW (root) &&
+      (transient_for = gtk_window_get_transient_for (GTK_WINDOW (root))))
+    return ide_widget_get_workspace (GTK_WIDGET (transient_for));
 
   return IDE_IS_WORKSPACE (root) ? IDE_WORKSPACE (root) : NULL;
 }


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