2012-12-05 20:44:21 |
Brandon Schaefer |
description |
When the Dash or HUD is open the Launcher has X event focus. This means XIM will not work with either because the events generated are ment for the Dash or HUD not the Launcher.... Here is the bit of offending code:
unityshell.cpp-2726- // We do this after the notify to ensure input focus has actually been moved.
unityshell.cpp-2727- if (n == CompWindowNotifyFocusChange)
unityshell.cpp-2728- {
unityshell.cpp-2729- UnityScreen* us = UnityScreen::get(screen);
unityshell.cpp-2730- CompWindow *lw;
unityshell.cpp-2731-
unityshell.cpp-2732- // can't rely on launcher->IsOverlayVisible on focus change (because ubus is async close on focus change.)
unityshell.cpp-2733- if (us && (us->dash_controller_->IsVisible() || us->hud_controller_->IsVisible()))
unityshell.cpp-2734- {
unityshell.cpp:2735: lw = screen->findWindow(us->launcher_controller_->LauncherWindowId(0));
unityshell.cpp-2736- lw->moveInputFocusTo();
unityshell.cpp-2737- }
unityshell.cpp-2738- }
Ill have to look into a good soultion to this problem...as the point of this code is to avoid losing focus of the Dash or HUD when an external program is opened...So this regession needs to be avoided. (And no you can't simply refocus the dash or hud, that doesn't give key focus back...) |
When the Dash or HUD is open the Launcher has X event focus. This means XIM will not work with either because the events generated are ment for the Dash or HUD not the Launcher.... Here is the bit of offending code:
unityshell.cpp-2726
// We do this after the notify to ensure input focus has actually been moved.
if (n == CompWindowNotifyFocusChange)
{
UnityScreen* us = UnityScreen::get(screen);
CompWindow *lw;
// can't rely on launcher->IsOverlayVisible on focus change (because ubus is async close on focus change.)
if (us && (us->dash_controller_->IsVisible() || us->hud_controller_->IsVisible()))
{
lw = screen->findWindow(us->launcher_controller_->LauncherWindowId(0));
lw->moveInputFocusTo();
}
}
Ill have to look into a good soultion to this problem...as the point of this code is to avoid losing focus of the Dash or HUD when an external program is opened...So this regession needs to be avoided. (And no you can't simply refocus the dash or hud, that doesn't give key focus back...) |
|