diff options
author | Dominik Holland <dominik.holland@pelagicore.com> | 2016-10-05 13:46:11 +0200 |
---|---|---|
committer | Dominik Holland <dominik.holland@pelagicore.com> | 2016-10-05 15:53:20 +0000 |
commit | c9d5103d5088fe81490d035ff4141c89b3c923f2 (patch) | |
tree | 42e10f6540f31e3f9707694778f27191ec60aaf7 /imports | |
parent | d48bacf3427168f4c48a744ade24f2864e864570 (diff) | |
download | neptune-ui-c9d5103d5088fe81490d035ff4141c89b3c923f2.tar.gz |
Improve window handling
When starting an application in the minimized state we still need to
accept the window, but reparent it to a dummy item instead of pushing it
into the window stack. This is achieved by extending the
applicationSurfaceReady signal with a isMinimized property.
Also use the new isClosing property of the application manager to
identify closing windows. This is needed to make sure we only raise
windows which are in a usable state.
Change-Id: I0a5d544576859024b3f33e0814e72707bc692621
Reviewed-by: Nedim Hadzic <nedim.hadzic@pelagicore.com>
Reviewed-by: Erik Botö <erik.boto@pelagicore.com>
Diffstat (limited to 'imports')
-rw-r--r-- | imports/system/models/ApplicationManagerInterface.qml | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/imports/system/models/ApplicationManagerInterface.qml b/imports/system/models/ApplicationManagerInterface.qml index 3122b30..9196606 100644 --- a/imports/system/models/ApplicationManagerInterface.qml +++ b/imports/system/models/ApplicationManagerInterface.qml @@ -57,7 +57,7 @@ QtObject { } } - signal applicationSurfaceReady(Item item) + signal applicationSurfaceReady(Item item, bool isMinimized) signal releaseApplicationSurface() // Cluster signals @@ -81,12 +81,13 @@ QtObject { var acceptWindow = true; var appID = WindowManager.get(index).applicationId; + var isMinimized = false; if (isInWidgetState) { if (ApplicationManager.get(appID).categories[0] === "navigation") { root.mapWidget = item } - acceptWindow = false + return } else if (isClusterWidget) { if (!Style.withCluster) { @@ -99,7 +100,7 @@ QtObject { else if (ApplicationManager.get(appID).categories[0] === "media") { root.clusterWidgetReady("media", item) } - acceptWindow = false + return } } else { @@ -110,8 +111,8 @@ QtObject { for (i = 0; i < root.minimizedItems.length; ++i) { if (appID === root.minimizedItems[i]) { - acceptWindow = false; root.minimizedItems.pop(appID) + isMinimized = true; break } } @@ -119,9 +120,9 @@ QtObject { if (acceptWindow) { root.windowItem = item - WindowManager.setWindowProperty(item, "visibility", true) + WindowManager.setWindowProperty(item, "visibility", !isMinimized) - root.applicationSurfaceReady(item) + root.applicationSurfaceReady(item, isMinimized) } else { // If nobody feels responsible for this window, we need to at least give it a // parent, to not block the client process which would wait for result of the @@ -179,7 +180,7 @@ QtObject { print(":::LaunchController::: WindowManager:raiseApplicaitonWindow" + appId + " " + WindowManager.count) root.activeAppId = appId for (var i = 0; i < WindowManager.count; i++) { - if (WindowManager.get(i).applicationId === appId) { + if (!WindowManager.get(i).isClosing && WindowManager.get(i).applicationId === appId) { var item = WindowManager.get(i).windowItem print(":::LaunchController::: App found. Running the app " + appId + " Item: " + item) var isWidget = (WindowManager.windowProperty(item, "windowType") === "widget") @@ -191,7 +192,7 @@ QtObject { if (!isMapWidget && !isClusterWidget) { WindowManager.setWindowProperty(item, "visibility", true) root.windowItem = item - root.applicationSurfaceReady(item) + root.applicationSurfaceReady(item, false) break } } |