diff options
author | Sergey Udaltsov <svu@gnome.org> | 2010-01-11 10:38:52 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2010-01-11 10:38:52 +0000 |
commit | 6794124e4d3bc084c01476fcd79dc6a4387e6a40 (patch) | |
tree | f7742588382898c7fe6072bc6258f37381c57619 | |
parent | 98c550a7fc82b7cd44004e2957f469e5b7f9b38b (diff) | |
download | libxklavier-v.5.0.tar.gz |
pause only when no flags remainsv.5.0
-rw-r--r-- | libxklavier/xklavier.c | 10 |
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; } |