Lagrange [release]
Navbar menu placement
73a506239e4dc8be07313147cde4046a3bd848e1
[1mdiff --git a/src/ui/root.c b/src/ui/root.c[m
[1mindex a3c2e0ae..64043fd3 100644[m
[1m--- a/src/ui/root.c[m
[1m+++ b/src/ui/root.c[m
[36m@@ -318,9 +318,12 @@[m [mstatic iBool handleRootCommands_(iWidget *root, const char *cmd) {[m
if (equal_Command(cmd, "menu.open")) {[m
iWidget *button = pointer_Command(cmd);[m
iWidget *menu = findChild_Widget(button, "menu");[m
[32m+[m[32m const iBool isPlacedUnder = argLabel_Command(cmd, "under");[m
iAssert(menu);[m
if (!isVisible_Widget(menu)) {[m
[31m- openMenu_Widget(menu, topLeft_Rect(bounds_Widget(button)));[m
[32m+[m[32m openMenu_Widget(menu,[m
[32m+[m[32m isPlacedUnder ? bottomLeft_Rect(bounds_Widget(button))[m
[32m+[m[32m : topLeft_Rect(bounds_Widget(button)));[m
}[m
else {[m
closeMenu_Widget(menu);[m
[36m@@ -416,7 +419,7 @@[m [mstatic iBool handleRootCommands_(iWidget *root, const char *cmd) {[m
}[m
iWidget *menu =[m
makeMenu_Widget(button, constData_Array(&items), size_Array(&items));[m
[31m- openMenu_Widget(menu, topLeft_Rect(bounds_Widget(button)));[m
[32m+[m[32m openMenu_Widget(menu, bottomLeft_Rect(bounds_Widget(button)));[m
deinit_Array(&items);[m
return iTrue;[m
}[m
[36m@@ -1484,6 +1487,7 @@[m [mvoid createUserInterface_Root(iRoot *d) {[m
iLabelWidget *navMenu =[m
makeMenuButton_LabelWidget(menu_Icon, navMenuItems_, iElemCount(navMenuItems_));[m
# endif[m
[32m+[m[32m setCommand_LabelWidget(navMenu, collectNewCStr_String("menu.open under:1"));[m
setAlignVisually_LabelWidget(navMenu, iTrue);[m
setId_Widget(addChildFlags_Widget(navBar, iClob(navMenu), collapse_WidgetFlag), "navbar.menu");[m
#endif[m
[1mdiff --git a/src/ui/util.c b/src/ui/util.c[m
[1mindex 41e645de..31907721 100644[m
[1m--- a/src/ui/util.c[m
[1m+++ b/src/ui/util.c[m
[36m@@ -680,7 +680,7 @@[m [mstatic iBool isCommandIgnoredByMenus_(const char *cmd) {[m
static iLabelWidget *parentMenuButton_(const iWidget *menu) {[m
if (isInstance_Object(menu->parent, &Class_LabelWidget)) {[m
iLabelWidget *button = (iLabelWidget *) menu->parent;[m
[31m- if (!cmp_String(command_LabelWidget(button), "menu.open")) {[m
[32m+[m[32m if (equal_Command(cstr_String(command_LabelWidget(button)), "menu.open")) {[m
return button;[m
}[m
}[m