bin/ui-rules-enforcer.py |    9 +++++++++
 1 file changed, 9 insertions(+)

New commits:
commit 81426bf9eed87f7548699461061cdcf1fc21f226
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Wed Jun 4 08:05:23 2025 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Wed Jun 4 10:09:21 2025 +0200

    ui-rules-enforcer: Check that menu item has an id
    
    See
    
        commit 616a3177da38d3db342593149ab2a9a94799cfe8
        Author: Michael Weghorn <m.wegh...@posteo.de>
        Date:   Tue Jun 3 12:01:12 2025 +0200
    
            basctl: Set menu item ID to fix gtk4 crash
    
    Prior to this commit, the newly introduced check
    would have failed with
    
        $ python3 ./bin/ui-rules-enforcer.py 
basctl/uiconfig/basicide/ui/sortmenu.ui
        Traceback (most recent call last):
          File 
"/home/michi/development/git/libreoffice/./bin/ui-rules-enforcer.py", line 647, 
in <module>
            enforce_menuitem_id(root)
            ~~~~~~~~~~~~~~~~~~~^^^^^^
          File 
"/home/michi/development/git/libreoffice/./bin/ui-rules-enforcer.py", line 611, 
in enforce_menuitem_id
            enforce_menuitem_id(child)
            ~~~~~~~~~~~~~~~~~~~^^^^^^^
          File 
"/home/michi/development/git/libreoffice/./bin/ui-rules-enforcer.py", line 611, 
in enforce_menuitem_id
            enforce_menuitem_id(child)
            ~~~~~~~~~~~~~~~~~~~^^^^^^^
          File 
"/home/michi/development/git/libreoffice/./bin/ui-rules-enforcer.py", line 614, 
in enforce_menuitem_id
            raise Exception(sys.argv[1] + ': menu item does not have an id set' 
, child.text)
        Exception: ('basctl/uiconfig/basicide/ui/sortmenu.ui: menu item does 
not have an id set', None)
    
    Change-Id: Ic31b0d08f0f981a89a6a6e27b4efe898f7753d6e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186160
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/bin/ui-rules-enforcer.py b/bin/ui-rules-enforcer.py
index 9b8b76f439ae..1708eed42eff 100755
--- a/bin/ui-rules-enforcer.py
+++ b/bin/ui-rules-enforcer.py
@@ -605,6 +605,14 @@ def 
enforce_no_productname_in_accessible_description(current, adjustments):
         if "%PRODUCTNAME" in child.text:
           raise Exception(sys.argv[1] + ': %PRODUCTNAME used in 
accessible-description:' , child.text)
 
+def enforce_menuitem_id(current):
+  # gtk4 VCL plugin requires "id" attribute for menu items
+  for child in current:
+    enforce_menuitem_id(child)
+    if child.get('class') in ("GtkMenuItem", "GtkRadioMenuItem"):
+      if not child.attrib.get("id"):
+        raise Exception(sys.argv[1] + ': menu item does not have an id set' , 
child.text)
+
 with open(sys.argv[1], encoding="utf-8") as f:
   header = f.readline()
   f.seek(0)
@@ -636,6 +644,7 @@ remove_label_angle(root)
 remove_expander_label_fill(root)
 remove_expander_spacing(root)
 enforce_menubutton_indicator_consistency(root)
+enforce_menuitem_id(root)
 enforce_active_in_group_consistency(root)
 enforce_entry_text_column_id_column_for_gtkcombobox(root)
 remove_entry_shadow_type(root)

Reply via email to