[gnome-shell] style: Handle sections in submenus



commit c256ca443ef70f1c69a62afebeb33a6bbe48c38c
Author: Florian Müllner <fmuellner gnome org>
Date:   Tue Jan 25 15:47:23 2022 +0100

    style: Handle sections in submenus
    
    If a menu item in a submenu is part of a section, it should have
    rounded bottom corners if both the item and the section are the
    last child of its respective parent.
    
    To express that, add a new .popup-menu-section class and use that
    to undo/redo the rounding for items inside a section.
    
    It would be possible to do without a new class with a selector like
    
     > StBoxLayout > .popup-menu-item:last-child:hover,
     :last-child > .popup-menu-item:last-child:hover
    
    but that's hardly better with its heavy reliance on implementation
    details.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4940
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2126>

 data/theme/gnome-shell-sass/widgets/_popovers.scss | 7 +++++++
 js/ui/popupMenu.js                                 | 2 ++
 2 files changed, 9 insertions(+)
---
diff --git a/data/theme/gnome-shell-sass/widgets/_popovers.scss 
b/data/theme/gnome-shell-sass/widgets/_popovers.scss
index f523ec6dd0..3ddca4f242 100644
--- a/data/theme/gnome-shell-sass/widgets/_popovers.scss
+++ b/data/theme/gnome-shell-sass/widgets/_popovers.scss
@@ -139,6 +139,13 @@
       border-radius: 0 0 $base_border_radius $base_border_radius;
     }
   }
+
+  .popup-menu-section {
+    .popup-menu-item:last-child:hover { border-radius: 0 }
+    &:last-child .popup-menu-item:last-child:hover {
+      border-radius: 0 0 $base_border_radius $base_border_radius;
+    }
+  }
 }
 
 // container for radio and check boxes
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index f9c3df0bf1..0cb4970c1f 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -1165,6 +1165,8 @@ var PopupMenuSection = class extends PopupMenuBase {
         this.actor = this.box;
         this.actor._delegate = this;
         this.isOpen = true;
+
+        this.actor.add_style_class_name('popup-menu-section');
     }
 
     // deliberately ignore any attempt to open() or close(), but emit the


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