diff --git a/docs/reference/gtk/images/capture-bubble.png b/docs/reference/gtk/images/capture-bubble.png
new file mode 100644
index 0000000000..b18d9ad9d2
Binary files /dev/null and b/docs/reference/gtk/images/capture-bubble.png differ
diff --git a/docs/reference/gtk/input-handling.xml b/docs/reference/gtk/input-handling.xml
index 4a313b08ae..8748148a45 100644
--- a/docs/reference/gtk/input-handling.xml
+++ b/docs/reference/gtk/input-handling.xml
@@ -61,16 +61,9 @@
GDK translates these raw windowing system events into #GdkEvents.
- Typical input events are:
-
- button clicks
- pointer motion
- key presses
- focus changes
- touch events
-
- These are all represented as #GdkEvents, but you can differentiate
- between different events by looking at their type, using
+ Typical input events are button clicks, pointer motion, key presses
+ or touch events. These are all represented as #GdkEvents, but you can
+ differentiate between different events by looking at their type, using
gdk_event_get_event_type().
@@ -103,34 +96,7 @@
location change from one widget to another.
- Then the event is pushed onto a stack so you can query the currently
- handled event with gtk_get_current_event().
-
-
- The event is sent to a widget. If a grab is active all events for widgets
- that are not in the contained in the grab widget are sent to the latter
- with a few exceptions:
-
-
- Deletion and destruction events are still sent to the event widget for
- obvious reasons.
-
-
- Events which directly relate to the visual representation of the event
- widget.
-
-
- Leave events are delivered to the event widget if there was an enter
- event delivered to it before without the paired leave event.
-
-
- Drag events are not redirected because it is unclear what the semantics
- of that would be.
-
-
-
-
- After finishing the delivery the event is popped from the event stack.
+ The event is sent to widgets.
@@ -139,6 +105,14 @@
(see #GtkPropagationPhase) towards a target widget.
+
+
+
+
+
+
+
+
For key events, the top-level window gets a first shot at activating
mnemonics and accelerators. If that does not consume the events,
@@ -224,6 +198,14 @@
GTK has traditionally supported different kinds of shortcuts:
+
+ Accelerators
+
+ Accelerators are any other shortcuts that can be activated regardless
+ of where the focus is, and typically trigger global actions, such as
+ Ctrl-Q to quit an application.
+
+
Mnmemonics
@@ -242,16 +224,12 @@
triggered when the widget has focus.
-
- Accelerators
-
- Accelerators are any other shortcuts that can be activated regardless
- of where the focus is, and typically trigger global actions, such as
- Ctrl-Q to quit an application.
-
-
+
+ GTK traditionally handles accelerators and mnemonics in a global scope,
+ during the capture phase, and key bindings locally, during the target phase.
+
Under the hood, all shortcuts are represented as instances of #GtkShortcut,
and they are managed by #GtkShortcutController.
diff --git a/docs/reference/gtk/meson.build b/docs/reference/gtk/meson.build
index 8b66214e20..d279fed315 100644
--- a/docs/reference/gtk/meson.build
+++ b/docs/reference/gtk/meson.build
@@ -214,6 +214,7 @@ images = [
'images/box-packing.png',
'images/builder-shortcuts.png',
'images/button.png',
+ 'images/capture-bubble.png',
'images/check-button.png',
'images/checks.png',
'images/clocks-shortcuts.png',