@@ -22,8 +22,8 @@ Item {
2222
2323 property alias mainStageApplications: mainStageModel
2424 property alias sideStageApplications: sideStageModel
25− property alias mainStageFocusedApplication: mainStageModel.focusedApplication
26− property alias sideStageFocusedApplication: sideStageModel.focusedApplication
25+ property variant mainStageFocusedApplication: null
26+ property variant sideStageFocusedApplication: null
2727 property bool sideStageEnabled: true
2828 signal focusRequested(string desktopFile)
2929 property bool keyboardVisible: ApplicationManager.keyboardVisible
@@ -31,6 +31,9 @@ Item {
3131
3232 property bool fake: ApplicationManager.fake ? ApplicationManager.fake : false
3333
34+ onMainStageFocusedApplicationChanged: (mainStageFocusedApplication)?mainStageFocusedApplication.appId: "null"
35+ onSideStageFocusedApplicationChanged: (sideStageFocusedApplication)?sideStageFocusedApplication.appId: "null"
36+
3437 ApplicationsModelStageFiltered {
3538 id: mainStageModel
3639 stage: ApplicationInfo.MainStage
@@ -41,6 +44,29 @@ Item {
4144 stage: ApplicationInfo.SideStage
4245 }
4346
47+ Connections {
48+ target: ApplicationManager
49+ onFocusedApplicationIdChanged: {
50+ var app = ApplicationManager.findApplication(ApplicationManager.focusedApplicationId)
51+ if (!app) { //nothing at all focused, so clear all
52+ mainStageFocusedApplication = null;
53+ sideStageFocusedApplication = null;
54+ } else {
55+ if (app.stage == ApplicationInfo.MainStage) {
56+ mainStageFocusedApplication = app;
57+ // possible the side stage app being unfocused fired this signal, so check for it
58+ if (sideStageFocusedApplication && !sideStageFocusedApplication.focused)
59+ sideStageFocusedApplication = null;
60+ } else {
61+ sideStageFocusedApplication = app;
62+ // possible the main stage app being unfocused fired this signal, so check for it
63+ if (mainStageFocusedApplication && !mainStageFocusedApplication.focused)
64+ mainStageFocusedApplication = null;
65+ }
66+ }
67+ }
68+ }
69+
4470 function activateApplication(desktopFile, argument) {
4571 var appId;
4672
@@ -65,20 +91,20 @@ Item {
6591 }
6692 }
6793
68− function stopProcess(application) {
94+ function stopApplication(application) {
6995 var appId;
7096
7197 // HACK: might be called with appId, or else with Application object
7298 if (typeof application == "string") {
73− appId = desktopFileToAppId(application.desktopFile);
74− } else {
7599 appId = application;
100+ } else {
101+ appId = desktopFileToAppId(application.desktopFile);
76102 }
77103
78− ApplicationManager.stopProcess(appId);
104+ ApplicationManager.stopApplication(appId);
79105 }
80106
81− function focusApplication(application) {print("focusApplication", application.appId)
107+ function focusApplication(application) {
82108 if (application == null || application == undefined) {
83109 return;
84110 }
@@ -90,7 +116,7 @@ Item {
90116 ApplicationManager.unfocusCurrentApplication();
91117 }
92118
93− function moveRunningApplicationStackPosition(from, to, stage) { print("moveRunningApplicationStackPosition", from, to, stage)
119+ function moveRunningApplicationStackPosition(from, to, stage) {
94120 if (from == to || from < 0 || to < 0) return;
95121
96122 if (stage == ApplicationInfo.SideStage) {