summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2010-01-11 10:38:52 +0000
committerSergey Udaltsov <svu@gnome.org>2010-01-11 10:38:52 +0000
commit6794124e4d3bc084c01476fcd79dc6a4387e6a40 (patch)
treef7742588382898c7fe6072bc6258f37381c57619
parent98c550a7fc82b7cd44004e2957f469e5b7f9b38b (diff)
pause only when no flags remainsv.5.0
-rw-r--r--libxklavier/xklavier.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libxklavier/xklavier.c b/libxklavier/xklavier.c
index 154208c..463be27 100644
--- a/libxklavier/xklavier.c
+++ b/libxklavier/xklavier.c
@@ -198,14 +198,18 @@ gint
xkl_engine_stop_listen(XklEngine * engine, guint what)
{
int i;
- xkl_engine_pause_listen(engine);
+ gboolean no_flags_remains = TRUE;
guchar *cntr = xkl_engine_priv(engine, listener_type_counters);
for (i = 0; i < XKLL_NUMBER_OF_LISTEN_MODES; i++, cntr++) {
int mask = 1 << i;
- if (what & mask) {
+ if (what & mask)
(*cntr)--;
- }
+
+ if (*cntr)
+ no_flags_remains = FALSE;
}
+ if (no_flags_remains)
+ xkl_engine_pause_listen(engine);
return 0;
}