on xenial help sign in
Restore the double tap decoration to maximize feature (LP: #1627281)
f8f8415Lukáš Tinkl
qml/Stage/MoveHandler.qml+2−1
@@ -103,7 +103,8 @@ QtObject {
103 if (priv.dragging) {
103 if (priv.dragging) {
104 Mir.cursorName = "grabbing";
104 Mir.cursorName = "grabbing";
105
105
106− if (target.anyMaximized) { // restore from maximized when dragging away from edges/corners
106+ // restore from maximized when dragging away from edges/corners; guard against inadvertent changes when going into maximized state
107+ if (target.anyMaximized && !target.windowedTransitionRunning) {
107 priv.progress = 0;
108 priv.progress = 0;
108 target.restore(false, WindowStateStorage.WindowStateNormal);
109 target.restore(false, WindowStateStorage.WindowStateNormal);
109 }
110 }
qml/Stage/Stage.qml+4−2
@@ -722,6 +722,7 @@ FocusScope {
722 readonly property string appName: model.application ? model.application.name : ""
722 readonly property string appName: model.application ? model.application.name : ""
723 property bool visuallyMaximized: false
723 property bool visuallyMaximized: false
724 property bool visuallyMinimized: false
724 property bool visuallyMinimized: false
725+ readonly property alias windowedTransitionRunning: windowedTransition.running
725
726
726 property int stage: ApplicationInfoInterface.MainStage
727 property int stage: ApplicationInfoInterface.MainStage
727 function saveStage(newStage) {
728 function saveStage(newStage) {
@@ -1173,7 +1174,7 @@ FocusScope {
1173 }
1174 }
1174 },
1175 },
1175 State {
1176 State {
1176− name: "maximized"; when: appDelegate.windowState == WindowStateStorage.WindowStateMaximized
1177+ name: "maximized"; when: appDelegate.maximized && !appDelegate.minimized
1177 PropertyChanges {
1178 PropertyChanges {
1178 target: appDelegate;
1179 target: appDelegate;
1179 requestedX: root.leftMargin;
1180 requestedX: root.leftMargin;
@@ -1313,7 +1314,7 @@ FocusScope {
1313 UbuntuNumberAnimation { target: appDelegate; properties: "x,y,requestedX,requestedY,opacity,requestedWidth,requestedHeight,scale"; duration: priv.animationDuration }
1314 UbuntuNumberAnimation { target: appDelegate; properties: "x,y,requestedX,requestedY,opacity,requestedWidth,requestedHeight,scale"; duration: priv.animationDuration }
1314 },
1315 },
1315 Transition {
1316 Transition {
1316− from: "normal,maximized,maximizedHorizontally,maximizedVertically,maximizedLeft,maximizedRight,maximizedTopLeft,maximizedBottomLeft,maximizedTopRight,maximizedBottomRight";
1317+ from: "normal,restored,maximized,maximizedHorizontally,maximizedVertically,maximizedLeft,maximizedRight,maximizedTopLeft,maximizedBottomLeft,maximizedTopRight,maximizedBottomRight";
1317 to: "staged,stagedWithSideStage"
1318 to: "staged,stagedWithSideStage"
1318 UbuntuNumberAnimation { target: appDelegate; properties: "x,y,requestedX,requestedY,requestedWidth,requestedHeight"; duration: priv.animationDuration}
1319 UbuntuNumberAnimation { target: appDelegate; properties: "x,y,requestedX,requestedY,requestedWidth,requestedHeight"; duration: priv.animationDuration}
1319 },
1320 },
@@ -1390,6 +1391,7 @@ FocusScope {
1390 }
1391 }
1391 },
1392 },
1392 Transition {
1393 Transition {
1394+ id: windowedTransition
1393 from: "normal,restored,maximized,maximizedLeft,maximizedRight,maximizedTop,maximizedBottom,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen"
1395 from: "normal,restored,maximized,maximizedLeft,maximizedRight,maximizedTop,maximizedBottom,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen"
1394 to: "normal,restored,maximized,maximizedLeft,maximizedRight,maximizedTop,maximizedBottom,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen"
1396 to: "normal,restored,maximized,maximizedLeft,maximizedRight,maximizedTop,maximizedBottom,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen"
1395 enabled: appDelegate.animationsEnabled
1397 enabled: appDelegate.animationsEnabled
tests/qmltests/Stage/tst_DesktopStage.qml+16
@@ -772,5 +772,21 @@ Item {
772
772
773 tryCompare(mouseEaterSpy, "count", 0);
773 tryCompare(mouseEaterSpy, "count", 0);
774 }
774 }
775+
776+ // regression test for https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1627281
777+ function test_doubleTapToMaximizeWindow() {
778+ var dialerAppDelegate = startApplication("dialer-app");
779+ verify(dialerAppDelegate);
780+ var decoration = findChild(dialerAppDelegate, "appWindowDecoration");
781+ verify(decoration);
782+
783+ // simulate a double tap, with a slight erroneous move in between those 2 taps
784+ tap(decoration);
785+ touchPress(decoration);
786+ touchMove(decoration, decoration.width/2, decoration.height/2 - 10)
787+ touchRelease(decoration);
788+
789+ tryCompare(dialerAppDelegate, "state", "maximized");
790+ }
775 }
791 }
776}
792}