[gtk/matthiasc/for-master: 52/52] menusectionbox: Improve circular button spacing



commit ba45d7a991178e29ff747702b32f750850e896eb
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Apr 22 22:16:46 2020 -0400

    menusectionbox: Improve circular button spacing
    
    In the n == 2 case, we want to avoid the buttons being
    drawn all the way out to the ends of the box, but in the
    n >= 3 case, that is exactly what we want for the first
    and last button.

 gtk/gtkmenusectionbox.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
---
diff --git a/gtk/gtkmenusectionbox.c b/gtk/gtkmenusectionbox.c
index 413789a274..e6a55fae55 100644
--- a/gtk/gtkmenusectionbox.c
+++ b/gtk/gtkmenusectionbox.c
@@ -393,6 +393,26 @@ gtk_menu_section_box_insert_func (GtkMenuTrackerItem *item,
       gtk_box_reorder_child_after (GTK_BOX (box->item_box), widget, sibling);
     }
 
+  if (box->circular)
+    {
+      GtkWidget *c1, *c2, *c3;
+
+      /* special-case the n > 2 case */
+      c1 = gtk_widget_get_first_child (GTK_WIDGET (box->item_box));
+      if ((c2 = gtk_widget_get_next_sibling (c1)) != NULL &&
+          (c3 = gtk_widget_get_next_sibling (c2)) != NULL)
+        {
+          gtk_widget_set_halign (c1, GTK_ALIGN_START);
+          while (c3 != NULL)
+            {
+              gtk_widget_set_halign (c2, GTK_ALIGN_CENTER);
+              c2 = c3;
+              c3 = gtk_widget_get_next_sibling (c3);
+            }
+          gtk_widget_set_halign (c2, GTK_ALIGN_END);
+        }
+    }
+
   gtk_menu_section_box_schedule_separator_sync (box);
 }
 


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