summaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/bindingswidget.c6
-rw-r--r--src/ui/documentwidget.c20
-rw-r--r--src/ui/widget.c10
-rw-r--r--src/ui/widget.h3
4 files changed, 31 insertions, 8 deletions
diff --git a/src/ui/bindingswidget.c b/src/ui/bindingswidget.c
index 4cf8df8e..13f9434e 100644
--- a/src/ui/bindingswidget.c
+++ b/src/ui/bindingswidget.c
@@ -143,12 +143,16 @@ static void setActiveItem_BindingsWidget_(iBindingsWidget *d, size_t pos) {
143 item->isWaitingForEvent = iTrue; 143 item->isWaitingForEvent = iTrue;
144 invalidateItem_ListWidget(d->list, d->activePos); 144 invalidateItem_ListWidget(d->list, d->activePos);
145 } 145 }
146#if defined (iPlatformAppleDesktop) 146#if defined (iPlatformAppleDesktop) && defined (iHaveNativeContextMenus)
147 /* Native menus must be disabled while grabbing keys so the shortcuts don't trigger. */ 147 /* Native menus must be disabled while grabbing keys so the shortcuts don't trigger. */
148 const iBool enableNativeMenus = (d->activePos == iInvalidPos); 148 const iBool enableNativeMenus = (d->activePos == iInvalidPos);
149 enableMenu_MacOS("${menu.title.file}", enableNativeMenus);
149 enableMenu_MacOS("${menu.title.edit}", enableNativeMenus); 150 enableMenu_MacOS("${menu.title.edit}", enableNativeMenus);
150 enableMenu_MacOS("${menu.title.view}", enableNativeMenus); 151 enableMenu_MacOS("${menu.title.view}", enableNativeMenus);
152 enableMenu_MacOS("${menu.title.bookmarks}", enableNativeMenus);
151 enableMenu_MacOS("${menu.title.identity}", enableNativeMenus); 153 enableMenu_MacOS("${menu.title.identity}", enableNativeMenus);
154 enableMenuIndex_MacOS(6, enableNativeMenus);
155 enableMenuIndex_MacOS(7, enableNativeMenus);
152#endif 156#endif
153} 157}
154 158
diff --git a/src/ui/documentwidget.c b/src/ui/documentwidget.c
index 46af5fcd..f83539f7 100644
--- a/src/ui/documentwidget.c
+++ b/src/ui/documentwidget.c
@@ -55,6 +55,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
55#include "visbuf.h" 55#include "visbuf.h"
56#include "visited.h" 56#include "visited.h"
57 57
58#if defined (iPlatformAppleDesktop)
59# include "macos.h"
60#endif
58#if defined (iPlatformAppleMobile) 61#if defined (iPlatformAppleMobile)
59# include "ios.h" 62# include "ios.h"
60#endif 63#endif
@@ -469,11 +472,18 @@ static void enableActions_DocumentWidget_(iDocumentWidget *d, iBool enable) {
469} 472}
470 473
471static void setLinkNumberMode_DocumentWidget_(iDocumentWidget *d, iBool set) { 474static void setLinkNumberMode_DocumentWidget_(iDocumentWidget *d, iBool set) {
472 iChangeFlags(d->flags, showLinkNumbers_DocumentWidgetFlag, set); 475 if (((d->flags & showLinkNumbers_DocumentWidgetFlag) != 0) != set) {
473 /* Children have priority when handling events. */ 476 iChangeFlags(d->flags, showLinkNumbers_DocumentWidgetFlag, set);
474 enableActions_DocumentWidget_(d, !set); 477 /* Children have priority when handling events. */
475 if (d->menu) { 478 enableActions_DocumentWidget_(d, !set);
476 setFlags_Widget(d->menu, disabled_WidgetFlag, set); 479#if defined (iPlatformAppleDesktop)
480 enableMenuItemsOnHomeRow_MacOS(!set);
481#endif
482 /* Ensure all keyboard events come here first. */
483 setKeyboardGrab_Widget(set ? as_Widget(d) : NULL);
484 if (d->menu) {
485 setFlags_Widget(d->menu, disabled_WidgetFlag, set);
486 }
477 } 487 }
478} 488}
479 489
diff --git a/src/ui/widget.c b/src/ui/widget.c
index cedda461..28c34ccf 100644
--- a/src/ui/widget.c
+++ b/src/ui/widget.c
@@ -1961,7 +1961,8 @@ iBool isAffectedByVisualOffset_Widget(const iWidget *d) {
1961} 1961}
1962 1962
1963void setFocus_Widget(iWidget *d) { 1963void setFocus_Widget(iWidget *d) {
1964 iWindow *win = get_Window(); 1964 iWindow *win = d ? window_Widget(d) : get_Window();
1965 iAssert(win);
1965 if (win->focus != d) { 1966 if (win->focus != d) {
1966 if (win->focus) { 1967 if (win->focus) {
1967 iAssert(!contains_PtrSet(win->focus->root->pendingDestruction, win->focus)); 1968 iAssert(!contains_PtrSet(win->focus->root->pendingDestruction, win->focus));
@@ -1976,6 +1977,13 @@ void setFocus_Widget(iWidget *d) {
1976 } 1977 }
1977} 1978}
1978 1979
1980void setKeyboardGrab_Widget(iWidget *d) {
1981 iWindow *win = d ? window_Widget(d) : get_Window();
1982 iAssert(win);
1983 win->focus = d;
1984 /* no notifications sent */
1985}
1986
1979iWidget *focus_Widget(void) { 1987iWidget *focus_Widget(void) {
1980 return get_Window()->focus; 1988 return get_Window()->focus;
1981} 1989}
diff --git a/src/ui/widget.h b/src/ui/widget.h
index 4025f5c5..57088c07 100644
--- a/src/ui/widget.h
+++ b/src/ui/widget.h
@@ -302,7 +302,8 @@ void scrollInfo_Widget (const iWidget *, iWidgetScrollInfo *inf
302 302
303int backgroundFadeColor_Widget (void); 303int backgroundFadeColor_Widget (void);
304 304
305void setFocus_Widget (iWidget *); 305void setFocus_Widget (iWidget *); /* widget must be flagged `focusable` */
306void setKeyboardGrab_Widget (iWidget *); /* sets focus on any widget */
306iWidget * focus_Widget (void); 307iWidget * focus_Widget (void);
307void setHover_Widget (iWidget *); 308void setHover_Widget (iWidget *);
308iWidget * hover_Widget (void); 309iWidget * hover_Widget (void);