@@ -56,7 +56,11 @@ Item {
5656 target: ApplicationManager
5757
5858 onFocusRequested: {
59− priv.switchToApp(appId);
59+ if (spreadView.visible) {
60+ spreadView.snapTo(priv.indexOf(appId))
61+ } else {
62+ priv.switchToApp(appId);
63+ }
6064 }
6165
6266 onFocusedApplicationIdChanged: {
@@ -138,6 +142,15 @@ Item {
138142 applicationSwitchingAnimation.start();
139143 }
140144
145+ function indexOf(appId) {
146+ for (var i = 0; i < ApplicationManager.count; i++) {
147+ if (ApplicationManager.get(i).appId == appId) {
148+ return i;
149+ }
150+ }
151+ return -1;
152+ }
153+
141154 }
142155
143156 // FIXME: the signal connection seems to get lost with the fake application manager.
@@ -444,7 +457,11 @@ Item {
444457
445458 onClicked: {
446459 if (spreadView.stage == 2) {
447− spreadView.snapTo(index);
460+ if (ApplicationManager.focusedApplicationId == ApplicationManager.get(index).appId) {
461+ spreadView.snapTo(index);
462+ } else {
463+ ApplicationManager.requestFocusApplication(ApplicationManager.get(index).appId);
464+ }
448465 }
449466 }
450467 }