Comment #3 on issue 1333 by [email protected]: Cannot trigger ibus panel when switch back from a "No input Window"
http://code.google.com/p/ibus/issues/detail?id=1333

This also happened randomly when switching from the main window of stardict to
an LXTerminal.

I used the following patch to watch how did the panel.focus_in/focus_out
changes.

The right behavior (From an LXTerminal to another LXTerminal):

    24 Out Focus! /org/freedesktop/IBus/InputContext_24

    24 In  Focus! /org/freedesktop/IBus/InputContext_24 <--- [1]
    24 Out Focus! /org/freedesktop/IBus/InputContext_24

    26 In  Focus! /org/freedesktop/IBus/InputContext_26


* At [1], there's a redundant focus in/out pair from the 1st window before the
  2nd window get the focus_in called.



The wrong behavior (From stardict main window to an LXTerminal):

    14 Out Focus! /org/freedesktop/IBus/InputContext_14

    26 In  Focus! /org/freedesktop/IBus/InputContext_26
    26 Out Focus! /org/freedesktop/IBus/InputContext_26 <--- [2]

    14 In  Focus! /org/freedesktop/IBus/InputContext_14
    14 Out Focus! /org/freedesktop/IBus/InputContext_14

* As can be see, the redundant focus happened AFTER 2nd window got the focus_in
  call. Therefore, since the 1st window got the redundant focus_in after 2nd
  window focused in, the 2nd window got a focus_out at [2].

Now, nobody get focus there, i.e. panel.__focus_ic == None, the panel won't
  show up at ctrl-space.

It seems the panel.focus_in/focus_out are called through dbus, there could be
some racing condition happening on the ibus engine side.

The ibus environments are:

XMODIFIERS=@im=ibus
GTK_IM_MODULE=ibus



Attachments:
        watch-focus.patch  816 bytes

--
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

回复