Bug 217042

Summary: Scim toolbar does not work when focus follows mouse
Product: [Fedora] Fedora Reporter: Jan "Yenya" Kasprzak <kas>
Component: scimAssignee: Hu Zheng <zhu>
Status: CLOSED NOTABUG QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: eng-i18n-bugs, petersen
Target Milestone: ---Keywords: i18n, MoveUpstream
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2007-01-30 21:11:45 EST Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Description Jan "Yenya" Kasprzak 2006-11-23 07:17:04 EST
Description of problem:
When the window manager is set to the "follow-mouse" focus (as opposed to
"click to focus"), the scim toolbar is unusable, because moving mouse over
the toolbar causes the loss of focus of the previous window, which then makes
the scim toolbar disappear. It is even more interesting when the toolbar is
actually above the window, it then appears and disappears in a loop.

It is interesting that for example scim-anthy's popup window with a list of
possible completions does not have this property, and does not cause a loss of
focus of the window in question.

Version-Release number of selected component (if applicable):

$ rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}\n' |grep scim
scim-tomoe-0.2.0-6.fc6.x86_64
scim-bridge-gtk-0.4.7-1.fc6.x86_64
scim-anthy-1.2.0-3.fc6.x86_64
scim-bridge-0.4.7-1.fc6.x86_64
scim-anthy-1.2.0-3.fc6.i386
scim-bridge-gtk-0.4.7-1.fc6.i386
scim-libs-1.4.4-35.fc6.i386
scim-1.4.4-35.fc6.x86_64
scim-libs-1.4.4-35.fc6.x86_64
Comment 1 Jens Petersen 2006-11-27 03:06:08 EST
Hmm, I see what you mean.  Are you using metacity or another window manager
that supports "sloppy focus" mode.  Metacity with sloppy mode seems to be ok
and still lets you focus by moving the mouse.

Comment 2 Jan "Yenya" Kasprzak 2006-11-27 05:16:01 EST
I use Sawfish.

I have switched from enter-exit focus to enter-only, and it works as expected,
thanks!

However, it would be nice if the toolbar could work with enter-exit focus as
well. I vaguely remember I have chosen to not use enter-only focus for some
reason, but I am not sure what it was.
Comment 3 Jens Petersen 2006-11-28 00:38:34 EST
Alternatively you could set the scim toolbar always to be visible
if you want to use it with the mouse.
Comment 4 Jan "Yenya" Kasprzak 2006-11-30 07:22:46 EST
I have found why I don't want enter-only focus: I use dual-head setup, and I
want the focus to be removed from the window when I move the cursor to the other
head (even though there is no window focused on the other head). This way the
correct head gets the keyboard shortcuts like switching workspaces, etc. With
enter-only, the shortcuts are still being sent to the previous head.

When the toolbar is set to be always visible (with enter-exit focus), it is not
possible to use all its functions, because as soon as the mouse/focus leaves the
original window, some buttons on the toolbar disappear (namely the "input mode"
and "conversion mode" buttons).
Comment 5 Jens Petersen 2006-11-30 23:16:14 EST
Ok, thanks, fair points.

What feature(s) do you need most from the toolbar btw?

Comment 6 Hu Zheng 2007-01-30 03:40:52 EST
I think this should be sawfish's problem but not scim.
I tried metacity's sloppy mode, it won't change the focus when you move the
mouse to the scim toolbar, as the toolbar is a popup window. But as you figure
out, sawfish will move the focus even when the scim toolbar is a popup window,
so this should be sawfish's problem. Sawfish is too old, it may don't follow the
newest gtk popup window rule.
I have check the code of creating input window and toolbar window in
scim/extras/panel/scim_panel_gtk.cpp

        _input_window = gtk_window_new (GTK_WINDOW_POPUP);
        gtk_widget_modify_bg (_input_window, GTK_STATE_NORMAL, &_normal_bg);
        gtk_window_set_policy (GTK_WINDOW (_input_window), TRUE, TRUE, FALSE);
        gtk_window_set_resizable (GTK_WINDOW (_input_window), FALSE);
        gtk_widget_add_events (_input_window,GDK_BUTTON_PRESS_MASK);
        gtk_widget_add_events (_input_window,GDK_BUTTON_RELEASE_MASK);
        gtk_widget_add_events (_input_window,GDK_POINTER_MOTION_MASK);


        _toolbar_window = gtk_window_new (GTK_WINDOW_POPUP);
        gtk_window_set_policy (GTK_WINDOW (_toolbar_window), TRUE, TRUE, FALSE);
        gtk_window_set_resizable (GTK_WINDOW (_toolbar_window), FALSE);
        gtk_widget_add_events (_toolbar_window,GDK_BUTTON_PRESS_MASK);
        gtk_widget_add_events (_toolbar_window,GDK_BUTTON_RELEASE_MASK);
        gtk_widget_add_events (_toolbar_window,GDK_POINTER_MOTION_MASK);

So you will find the codes to create input window and toolbar window are the
same, both are popup window. But it is strange sawfish deal with input window as
popup window but not the same on toolbar window. So this should be sawfish's
bug. I have reported it, see http://bugzilla.gnome.org/show_bug.cgi?id=402386