[gnome-builder/wip/gtk4-port] libide/gui: set popover edge based on panel position



commit 31671abeb07e0738fc35a558781ccf403e0c2452
Author: Christian Hergert <chergert redhat com>
Date:   Mon May 2 16:10:29 2022 -0700

    libide/gui: set popover edge based on panel position
    
    Panels on the left should have popovers shown to the right, reverse for
    the opposite side.

 src/libide/gui/ide-pane.c | 11 +++++++++++
 1 file changed, 11 insertions(+)
---
diff --git a/src/libide/gui/ide-pane.c b/src/libide/gui/ide-pane.c
index c7bcad49d..073a66b78 100644
--- a/src/libide/gui/ide-pane.c
+++ b/src/libide/gui/ide-pane.c
@@ -93,6 +93,8 @@ ide_pane_popover_positioner_present (IdePopoverPositioner *positioner,
 {
   IdePane *self = (IdePane *)positioner;
   IdePanePrivate *priv = ide_pane_get_instance_private (self);
+  g_autoptr(IdePanelPosition) position = NULL;
+  PanelDockPosition edge = 0;
   GdkRectangle translated;
   double x, y;
 
@@ -101,6 +103,15 @@ ide_pane_popover_positioner_present (IdePopoverPositioner *positioner,
   g_assert (GTK_IS_WIDGET (relative_to));
   g_assert (pointing_to != NULL);
 
+  if ((position = ide_pane_get_position (self)) &&
+      ide_panel_position_get_edge (position, &edge))
+    {
+      if (edge == PANEL_DOCK_POSITION_START)
+        gtk_popover_set_position (popover, GTK_POS_RIGHT);
+      else
+        gtk_popover_set_position (popover, GTK_POS_LEFT);
+    }
+
   gtk_widget_translate_coordinates (GTK_WIDGET (relative_to),
                                     GTK_WIDGET (self),
                                     pointing_to->x, pointing_to->y,


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