diff options
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/bindingswidget.c | 6 | ||||
-rw-r--r-- | src/ui/documentwidget.c | 20 | ||||
-rw-r--r-- | src/ui/widget.c | 10 | ||||
-rw-r--r-- | src/ui/widget.h | 3 |
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 | ||
471 | static void setLinkNumberMode_DocumentWidget_(iDocumentWidget *d, iBool set) { | 474 | static 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 | ||
1963 | void setFocus_Widget(iWidget *d) { | 1963 | void 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 | ||
1980 | void 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 | |||
1979 | iWidget *focus_Widget(void) { | 1987 | iWidget *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 | ||
303 | int backgroundFadeColor_Widget (void); | 303 | int backgroundFadeColor_Widget (void); |
304 | 304 | ||
305 | void setFocus_Widget (iWidget *); | 305 | void setFocus_Widget (iWidget *); /* widget must be flagged `focusable` */ |
306 | void setKeyboardGrab_Widget (iWidget *); /* sets focus on any widget */ | ||
306 | iWidget * focus_Widget (void); | 307 | iWidget * focus_Widget (void); |
307 | void setHover_Widget (iWidget *); | 308 | void setHover_Widget (iWidget *); |
308 | iWidget * hover_Widget (void); | 309 | iWidget * hover_Widget (void); |