on xenial help sign in
Fixes gap at top of sim-unlock/fullscreen notification (point 1.), fixes blocking overlay if underlying UnityMenuModel vanishes from DBus (point 2.). The third bullet-point of the bug-report, lockup of shell-UI, could not be reproduced. Fixes: 1308011
0230c28Mirco Müller
debian/control+3−3
@@ -17,7 +17,7 @@ Build-Depends: cmake,
17 libhud-client2-dev,
17 libhud-client2-dev,
18 libpay1-dev,
18 libpay1-dev,
19 libpulse-dev,
19 libpulse-dev,
20− libqmenumodel-dev (>= 0.2.7),
20+ libqmenumodel-dev (>= 0.2.8),
21 libqt5xmlpatterns5-dev,
21 libqt5xmlpatterns5-dev,
22 libunity-api-dev (>= 7.85),
22 libunity-api-dev (>= 7.85),
23 libunity-mir-dev,
23 libunity-mir-dev,
@@ -52,7 +52,7 @@ Vcs-Browser: https://bazaar.launchpad.net/~unity-team/unity8/trunk
52
52
53Package: indicators-client
53Package: indicators-client
54Architecture: amd64 armhf i386
54Architecture: amd64 armhf i386
55−Depends: qmenumodel-qml (>= 0.2.7),
55+Depends: qmenumodel-qml (>= 0.2.8),
56 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
56 qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.49) | qtdeclarative5-ubuntu-ui-toolkit-plugin-gles (>= 0.1.49),
57 unity8 (= ${binary:Version}),
57 unity8 (= ${binary:Version}),
58 ${misc:Depends},
58 ${misc:Depends},
@@ -77,7 +77,7 @@ Depends: gsettings-desktop-schemas,
77 libcap2-bin,
77 libcap2-bin,
78 libglib2.0-bin,
78 libglib2.0-bin,
79 libunity-mir1 (>= 0.4),
79 libunity-mir1 (>= 0.4),
80− qmenumodel-qml (>= 0.2.7),
80+ qmenumodel-qml (>= 0.2.8),
81 qml-module-qtquick-xmllistmodel,
81 qml-module-qtquick-xmllistmodel,
82 qtdeclarative5-gsettings1.0,
82 qtdeclarative5-gsettings1.0,
83 qtdeclarative5-ubuntu-settings-components (>= 0.3),
83 qtdeclarative5-ubuntu-settings-components (>= 0.3),
qml/Notifications/Notification.qml+21−7
@@ -36,7 +36,7 @@ Item {
36 property var hints
36 property var hints
37 property var notification
37 property var notification
38 property color color
38 property color color
39− property bool fullscreen
39+ property bool fullscreen: false
40 property int maxHeight
40 property int maxHeight
41 property int margins
41 property int margins
42 property Gradient greenGradient : Gradient {
42 property Gradient greenGradient : Gradient {
@@ -48,7 +48,6 @@ Item {
48 GradientStop { position: 1.0; color: "#4d4745" }
48 GradientStop { position: 1.0; color: "#4d4745" }
49 }
49 }
50
50
51− fullscreen: false
52 objectName: "background"
51 objectName: "background"
53 implicitHeight: type !== Notification.PlaceHolder ? (fullscreen ? maxHeight : contentColumn.height + contentColumn.spacing * 2) : 0
52 implicitHeight: type !== Notification.PlaceHolder ? (fullscreen ? maxHeight : contentColumn.height + contentColumn.spacing * 2) : 0
54
53
@@ -80,7 +79,7 @@ Item {
80 Audio {
79 Audio {
81 id: sound
80 id: sound
82 objectName: "sound"
81 objectName: "sound"
83− source: hints["suppress-sound"] != "" ? hints["sound-file"] : undefined
82+ source: hints["suppress-sound"] != "true" && hints["sound-file"] != undefined ? hints["sound-file"] : ""
84 }
83 }
85
84
86 onOpacityChanged: {
85 onOpacityChanged: {
@@ -159,9 +158,17 @@ Item {
159 UnityMenuModel {
158 UnityMenuModel {
160 id: unityMenuModel
159 id: unityMenuModel
161
160
161+ property string lastNameOwner: ""
162+
162 busName: paths.busName
163 busName: paths.busName
163 actions: paths.actions
164 actions: paths.actions
164 menuObjectPath: paths.menuObjectPath
165 menuObjectPath: paths.menuObjectPath
166+ onNameOwnerChanged: {
167+ if (lastNameOwner != "" && nameOwner == "" && notification.notification != undefined) {
168+ notification.notification.close()
169+ }
170+ lastNameOwner = nameOwner
171+ }
165 }
172 }
166
173
167 Behavior on implicitHeight {
174 Behavior on implicitHeight {
@@ -272,14 +279,18 @@ Item {
272 }
279 }
273
280
274 Column {
281 Column {
282+ id: dialogColumn
275 objectName: "dialogListView"
283 objectName: "dialogListView"
276 spacing: units.gu(2)
284 spacing: units.gu(2)
277
285
278 visible: count > 0
286 visible: count > 0
279
287
288+ anchors {
289+ left: parent.left
280− anchors.left: parent.left; anchors.right: parent.right
290+ right: parent.right
281− anchors.top: fullscreen ? parent.top : undefined
291+ top: fullscreen ? parent.top : undefined
282− anchors.bottom: fullscreen ? parent.bottom : undefined
292+ bottom: fullscreen ? parent.bottom : undefined
293+ }
283
294
284 Repeater {
295 Repeater {
285 model: unityMenuModel
296 model: unityMenuModel
@@ -287,7 +298,10 @@ Item {
287 NotificationMenuItemFactory {
298 NotificationMenuItemFactory {
288 id: menuItemFactory
299 id: menuItemFactory
289
300
290− anchors.left: parent.left; anchors.right: parent.right
301+ anchors {
302+ left: dialogColumn.left
303+ right: dialogColumn.right
304+ }
291
305
292 menuModel: unityMenuModel
306 menuModel: unityMenuModel
293 menuData: model
307 menuData: model
qml/Notifications/NotificationMenuItemFactory.qml+12−3
@@ -50,7 +50,10 @@ Loader {
50 Column {
50 Column {
51 spacing: units.gu(2)
51 spacing: units.gu(2)
52
52
53+ anchors {
54+ left: parent.left
53− anchors.left: parent.left; anchors.right: parent.right
55+ right: parent.right
56+ }
54
57
55 Component.onCompleted: {
58 Component.onCompleted: {
56 menuModel.loadExtendedAttributes(menuIndex, {"x-echo-mode-password": "bool"});
59 menuModel.loadExtendedAttributes(menuIndex, {"x-echo-mode-password": "bool"});
@@ -67,7 +70,10 @@ Loader {
67
70
68 // TODO using Qt.ImhNoPredictiveText here until lp #1291575 is fixed for ubuntu-ui-toolkit
71 // TODO using Qt.ImhNoPredictiveText here until lp #1291575 is fixed for ubuntu-ui-toolkit
69 inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
72 inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
73+ anchors {
74+ left: parent.left
70− anchors.left: parent.left; anchors.right: parent.right
75+ right: parent.right
76+ }
71 echoMode: checkBox.checked ? TextInput.Normal : TextInput.Password
77 echoMode: checkBox.checked ? TextInput.Normal : TextInput.Password
72 height: units.gu(5)
78 height: units.gu(5)
73 onTextChanged: {
79 onTextChanged: {
@@ -98,7 +104,10 @@ Loader {
98 id: pinLock
104 id: pinLock
99
105
100 Lockscreen {
106 Lockscreen {
107+ anchors {
108+ left: parent.left
101− anchors.left: parent.left; anchors.right: parent.right
109+ right: parent.right
110+ }
102 height: menuFactory.maxHeight
111 height: menuFactory.maxHeight
103 placeholderText: i18n.tr("Please enter SIM PIN")
112 placeholderText: i18n.tr("Please enter SIM PIN")
104 background: shell.background
113 background: shell.background
qml/Notifications/Notifications.qml+17−1
@@ -36,8 +36,11 @@ ListView {
36 filterRole: UnityNotifications.ModelInterface.RoleType
36 filterRole: UnityNotifications.ModelInterface.RoleType
37 filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
37 filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
38 }
38 }
39− spacing: delegate.fullscreen ? 0 : units.gu(.5)
40
39
40+ property bool topmostIsFullscreen: false
41+ spacing: topmostIsFullscreen ? 0 : units.gu(.5)
42+
43+ // FIXME: This doesn't make any sense and results in a binding loop
41 currentIndex: (currentIndex < 1 && count > 1) ? 1 : -1
44 currentIndex: (currentIndex < 1 && count > 1) ? 1 : -1
42
45
43 delegate: Notification {
46 delegate: Notification {
@@ -61,6 +64,19 @@ ListView {
61 // make sure there's no opacity-difference between the several
64 // make sure there's no opacity-difference between the several
62 // elements in a notification
65 // elements in a notification
63 layer.enabled: add.running || remove.running || populate.running
66 layer.enabled: add.running || remove.running || populate.running
67+
68+ Component.onCompleted: {
69+ if (index == 1) {
70+ notificationList.topmostIsFullscreen = fullscreen
71+ }
72+ }
73+
74+ onFullscreenChanged: {
75+ // index 1 because 0 is the PlaceHolder...
76+ if (index == 1) {
77+ notificationList.topmostIsFullscreen = fullscreen
78+ }
79+ }
64 }
80 }
65
81
66 populate: Transition {
82 populate: Transition {