From d5249e99515c1a10db34bd9cd730b315c35fecc8 Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Fri, 9 Apr 2021 21:41:46 +0300 Subject: Mobile: Close menus when toolbar hidden --- src/ui/util.c | 3 +++ src/ui/window.c | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ui/util.c b/src/ui/util.c index 9713d55f..e6edb119 100644 --- a/src/ui/util.c +++ b/src/ui/util.c @@ -704,6 +704,9 @@ void openMenuFlags_Widget(iWidget *d, iInt2 coord, iBool postCommands) { } void closeMenu_Widget(iWidget *d) { + if (d == NULL || flags_Widget(d) & hidden_WidgetFlag) { + return; /* Already closed. */ + } setFlags_Widget(d, hidden_WidgetFlag, iTrue); setFlags_Widget(findChild_Widget(d, "menu.cancel"), disabled_WidgetFlag, iTrue); postRefresh_App(); diff --git a/src/ui/window.c b/src/ui/window.c index 715f5d5f..3ea45695 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -1164,6 +1164,7 @@ static void setupUserInterface_Window(iWindow *d) { iLabelWidget *menuButton = makeMenuButton_LabelWidget("\U0001d362", phoneNavMenuItems_, iElemCount(phoneNavMenuItems_)); setFont_LabelWidget(menuButton, uiLabelLarge_FontId); + setId_Widget(as_Widget(menuButton), "toolbar.navmenu"); addChildFlags_Widget(toolBar, iClob(menuButton), frameless_WidgetFlag); iForEach(ObjectList, i, children_Widget(toolBar)) { iLabelWidget *btn = i.object; @@ -1179,7 +1180,7 @@ static void setupUserInterface_Window(iWindow *d) { }; iWidget *menu = makeMenu_Widget(findChild_Widget(toolBar, "toolbar.view"), items, iElemCount(items)); - setId_Widget(menu, "toolbar.menu"); + setId_Widget(menu, "toolbar.menu"); /* view menu */ } #endif updatePadding_Window_(d); @@ -1232,6 +1233,7 @@ static void setupUserInterface_Window(iWindow *d) { } void showToolbars_Window(iWindow *d, iBool show) { + /* The toolbar is only used on phone portrait layout. */ if (isLandscape_App()) return; iWidget *toolBar = findChild_Widget(d->root, "toolbar"); if (!toolBar) return; @@ -1241,6 +1243,9 @@ void showToolbars_Window(iWindow *d, iBool show) { setVisualOffset_Widget(toolBar, 0, 200, easeOut_AnimFlag); } else if (!show && isVisible_Widget(toolBar)) { + /* Close any menus that open via the toolbar. */ + closeMenu_Widget(findChild_Widget(findWidget_App("toolbar.navmenu"), "menu")); + closeMenu_Widget(findChild_Widget(toolBar, "toolbar.menu")); setFlags_Widget(toolBar, hidden_WidgetFlag, iTrue); setVisualOffset_Widget(toolBar, height, 200, easeOut_AnimFlag); } -- cgit v1.2.3