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)