on xenial help sign in
restore the double tap decoration to maximize feature
e48ebfdLukáš 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+3−1
@@ -707,6 +707,7 @@ FocusScope {
707 readonly property string appName: model.application ? model.application.name : ""
707 readonly property string appName: model.application ? model.application.name : ""
708 property bool visuallyMaximized: false
708 property bool visuallyMaximized: false
709 property bool visuallyMinimized: false
709 property bool visuallyMinimized: false
710+ readonly property alias windowedTransitionRunning: windowedTransition.running
710
711
711 property int stage: ApplicationInfoInterface.MainStage
712 property int stage: ApplicationInfoInterface.MainStage
712 function saveStage(newStage) {
713 function saveStage(newStage) {
@@ -1155,7 +1156,7 @@ FocusScope {
1155 }
1156 }
1156 },
1157 },
1157 State {
1158 State {
1158− name: "maximized"; when: appDelegate.windowState == WindowStateStorage.WindowStateMaximized
1159+ name: "maximized"; when: appDelegate.maximized && !appDelegate.minimized
1159 PropertyChanges {
1160 PropertyChanges {
1160 target: appDelegate;
1161 target: appDelegate;
1161 requestedX: root.leftMargin;
1162 requestedX: root.leftMargin;
@@ -1372,6 +1373,7 @@ FocusScope {
1372 }
1373 }
1373 },
1374 },
1374 Transition {
1375 Transition {
1376+ id: windowedTransition
1375 to: "normal,maximized,maximizedLeft,maximizedRight,maximizedTop,maximizedBottom,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen"
1377 to: "normal,maximized,maximizedLeft,maximizedRight,maximizedTop,maximizedBottom,maximizedTopLeft,maximizedTopRight,maximizedBottomLeft,maximizedBottomRight,maximizedHorizontally,maximizedVertically,fullscreen"
1376 enabled: appDelegate.animationsEnabled
1378 enabled: appDelegate.animationsEnabled
1377 SequentialAnimation {
1379 SequentialAnimation {
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}