From 9c595aaea751d0822bc426859c4eb9dd698d552a Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlos@lanedo.com>
Date: Wed, 7 Nov 2012 12:08:23 +0100
Subject: [PATCH] Reset event controllers on GdkEventGrabBroken
This event means that the widget being listened won't receive
further input events as something else grabbed devices, reset
event controllers in this case.
---
.../event-controller/sugar-event-controller.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/src/sugar3/event-controller/sugar-event-controller.c b/src/sugar3/event-controller/sugar-event-controller.c
index 2fae4a1..e2f8682 100644
a
|
b
|
_sugar_event_controller_widget_event (GtkWidget *widget, |
203 | 203 | data->current_exclusive != item->controller) |
204 | 204 | continue; |
205 | 205 | |
206 | | if (!sugar_event_controller_handle_event (item->controller, event)) |
207 | | continue; |
| 206 | if (event->type == GDK_GRAB_BROKEN && !event->grab_broken.keyboard) |
| 207 | sugar_event_controller_reset (item->controller); |
| 208 | else |
| 209 | { |
| 210 | if (!sugar_event_controller_handle_event (item->controller, event)) |
| 211 | continue; |
208 | 212 | |
209 | | state = sugar_event_controller_get_state (item->controller); |
| 213 | state = sugar_event_controller_get_state (item->controller); |
210 | 214 | |
211 | | /* Consider events handled once the |
212 | | * controller recognizes the action |
213 | | */ |
214 | | if (state == SUGAR_EVENT_CONTROLLER_STATE_RECOGNIZED) |
215 | | handled = TRUE; |
| 215 | /* Consider events handled once the |
| 216 | * controller recognizes the action |
| 217 | */ |
| 218 | if (state == SUGAR_EVENT_CONTROLLER_STATE_RECOGNIZED) |
| 219 | handled = TRUE; |
| 220 | } |
216 | 221 | } |
217 | 222 | |
218 | 223 | return handled; |