=== modified file 'src/com/goldencode/p2j/ui/client/gui/driver/web/GuiWebDriver.java' --- src/com/goldencode/p2j/ui/client/gui/driver/web/GuiWebDriver.java 2016-02-02 09:55:41 +0000 +++ src/com/goldencode/p2j/ui/client/gui/driver/web/GuiWebDriver.java 2016-02-02 19:04:59 +0000 @@ -902,12 +902,12 @@ // it become important when overlay window is on screen // in this case double activation will incorrectly dismiss overaly TopLevelWindow currActiveWindow = WindowManager.getActiveWindow(); - + TopLevelWindow currFocusWindow = WindowManager.getFocusWindow(); // check if overlay window exists OverlayWindow ow = WindowManager.findOverlayWindow(); // we do not need to activate already active window is there is no overlay on the screen - if (window == currActiveWindow && ow == null && state) + if (state && window == currActiveWindow && ow == null && currFocusWindow == currActiveWindow) { return; } @@ -917,7 +917,14 @@ { ThinClient.getInstance().postOSEvent(new WindowActivated(ow, false, false)); } - + if (window == currFocusWindow && !state) + { + WindowManager.removeFocusWindow(); + } + if (state) + { + WindowManager.setFocusWindow(window); + } ThinClient.getInstance().postOSEvent(new WindowActivated(window, state, false)); } === modified file 'src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.screen.js' --- src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.screen.js 2016-02-02 09:55:41 +0000 +++ src/com/goldencode/p2j/ui/client/gui/driver/web/res/p2j.screen.js 2016-02-02 17:01:50 +0000 @@ -2360,7 +2360,7 @@ function sendWindowStateActive(windowId) { var topWindowId = p2j.screen.topWindowId(); - if (topWindowId) + if (topWindowId && topWindowId !== windowId) { p2j.socket.sendWindowActive(topWindowId, false); }