I often got a problem that IME menus are not shown (I can provide a ...
12 years, 8 months ago
(2012-03-14 07:08:50 UTC)
#1
I often got a problem that IME menus are not shown (I can provide a screenshot
if necessary). After some debugging, it seems that properties sent from engine
are overwritten with an empty prop list. The timeline I observed is:
1. engine emits "RegisterProperties"
2. context obtains focus
3. ibus-daemon emits empty "RegisterProperties" via:
bus_ibus_impl_set_focused_context (ibusimpl.c:521)
bus_input_context_unset_engine (inputcontext.c:2009)
4. engine does not emit "RegisterProperties" again, because engine's "FocusIn"
is not called since context (and engine) has already focus (i.e.
context->has_focus == engine->has_focus == TRUE)
This patch is to mark engine->has_focus = FALSE, in
bus_input_context_unset_engine.
On 2012/03/14 07:08:50, Daiki Ueno wrote: > I often got a problem that IME menus ...
12 years, 8 months ago
(2012-03-15 02:35:21 UTC)
#2
On 2012/03/14 07:08:50, Daiki Ueno wrote:
> I often got a problem that IME menus are not shown (I can provide a screenshot
> if necessary).
FWIW, here they are.
normal case:
http://ueno.fedorapeople.org/ibus-gtk3/menu.png
failure case:
http://ueno.fedorapeople.org/ibus-gtk3/no-menu.png
Additional note:
after 3, bus_ibus_impl_set_focused_context calls bus_input_context_enable and it
calls bus_engine_proxy_focus_in. However, at that time engine already has
focus, so:
1112 void
1113 bus_engine_proxy_focus_in (BusEngineProxy *engine)
1114 {
1115 g_assert (BUS_IS_ENGINE_PROXY (engine));
1116 if (!engine->has_focus) {
1117 engine->has_focus = TRUE;
1118 g_dbus_proxy_call ((GDBusProxy *)engine,
1119 "FocusIn",
"FocusIn" D-Bus call is not sent.
Hmm, though I'm going to push this (with slight modification to the comment) soon, perhaps ...
12 years, 8 months ago
(2012-03-15 05:13:33 UTC)
#4
Hmm, though I'm going to push this (with slight modification to the comment)
soon, perhaps this change is not perfect.
When I focus in to non IM aware clients (like xterm started with "XMODIFIER=
xterm"), the IME menu disappears (and appears when I switch back to IM aware
clients). That's harmless but looks unnatural than showing "No input window" as
previous versions. It might be good to track properties sent from engine when
global engine is enabled.
Issue 5824046: ibus-daemon: make sure to focus out engine when unset.
(Closed)
Created 12 years, 8 months ago by Daiki Ueno
Modified 12 years, 8 months ago
Reviewers: shawn.p.huang_gmail.com
Base URL: git@github.com:ibus/ibus.git@master
Comments: 0