[1mdiff --git a/src/ui/inputwidget.c b/src/ui/inputwidget.c[m
[1mindex 355486de..a65dc6b3 100644[m
[1m--- a/src/ui/inputwidget.c[m
[1m+++ b/src/ui/inputwidget.c[m
[36m@@ -1378,6 +1378,7 @@[m [mvoid begin_InputWidget(iInputWidget *d) {[m
}[m
updateTextInputRect_InputWidget_(d);[m
updateVisible_InputWidget_(d);[m
[32m+[m[32m window_Widget(w)->keyPriority = w;[m
#endif[m
}[m
[m
[36m@@ -1411,6 +1412,7 @@[m [mvoid end_InputWidget(iInputWidget *d, iBool accept) {[m
d->inFlags &= ~isMarking_InputWidgetFlag;[m
deactivateInputMode_InputWidget_(d);[m
startOrStopCursorTimer_InputWidget_(d, iFalse);[m
[32m+[m[32m window_Widget(w)->keyPriority = NULL;[m
#endif[m
d->inFlags |= needUpdateBuffer_InputWidgetFlag;[m
setFlags_Widget(w, selected_WidgetFlag | keepOnTop_WidgetFlag | touchDrag_WidgetFlag, iFalse);[m
[1mdiff --git a/src/ui/window.c b/src/ui/window.c[m
[1mindex 72e88759..654b5948 100644[m
[1m--- a/src/ui/window.c[m
[1m+++ b/src/ui/window.c[m
[36m@@ -1372,7 +1372,9 @@[m [miBool processEvent_Window(iWindow *d, const SDL_Event *ev) {[m
/* If there is a priority handler for key events, offer the event to it first.[m
This is similar to mouse grabbing, but the handler can refuse the event. */[m
if (d->keyPriority && (event.type == SDL_KEYDOWN || event.type == SDL_KEYDOWN)) {[m
[31m- wasUsed = dispatchEvent_Widget(d->keyPriority, &event);[m
[32m+[m[32m /* The event is processed directly by the widget only, not dispatched to[m
[32m+[m[32m the widget subtree. When dispatching, children still get priority. */[m
[32m+[m[32m wasUsed = class_Widget(d->keyPriority)->processEvent(d->keyPriority, &event);[m
}[m
/* Dispatch the event to the tree of widgets. */[m
if (!wasUsed) {[m
text/plain
This content has been proxied by September (3851b).