Branch: refs/heads/chromeos
Home:   http://github.com/ibus/ibus

Commit: 6ae80939f28c4d8f365c1dd66c5d81cc79869eda
    http://github.com/ibus/ibus/commit/6ae80939f28c4d8f365c1dd66c5d81cc79869eda
Author: Yusuke Sato <[email protected]>
Date:   2010-09-14 (Tue, 14 Sep 2010)

Changed paths:
  M bus/ibusimpl.c

Log Message:
-----------
Fix issues of the "previous_engine" hotkey.

Check global_previous_engine_name when the previous engine is requested and 
rewrite it if necessary.
This change ensures that the "previous_engine" hotkey (Ctrl+space on Chrome OS) 
always works
whenever two or more engines are preloaded.

Currently, Ctrl+space could become NOP by the following scenarios 
(http://crosbug.com/6609):

(1)
1. preload engines A, B, C.
2. switch to A.
3. switch to B.
4. at this point, ctrl+space works fine. It selectes A and B alternately.
5. switch to A.
6. remove B from the preloaded engline list.
7. at this point, ctrl+space suddenly becomes NOP although C is still preloaded.
This is because the callback function of ctrl+space detects
global_previous_engine_name (i.e. B) is removed and automatically selects A (not
C) as a global_previous_engine_name.

(2)
1. preload engines A, B.
2. switch to A.
3. switch to B.
4. at this point, ctrl+space works fine. It selectes A and B alternately.
5. switch to A.
6. remove B from the preloaded engline list.
7. press ctrl+space several times, confirm that nothing happens (this is
expected since only one engine, A, is preloaded).
8. preload additional engine, C.
9. at this point, ctrl+space is still NOP although two engines, A and C, are
preloaded.


-- 
You received this message because you are subscribed to the Google
Groups "ibus-devel" group.
iBus project web page: http://code.google.com/p/ibus/
iBus dev group: http://groups.google.com/group/ibus-devel?hl=en

回复