on xenial help sign in
Replaced indicator page dynamic menuSelected binding with Connection to listview selectedIndex property. Fixes: https://bugs.launchpad.net/bugs/1243146.
5411ba9Nick Dedekind
plugins/Unity/Indicators/Messaging/qml/MessageMenuItemFactory.qml+12−22
@@ -37,28 +37,6 @@ Indicators.BaseMenuItem {
37
37
38 sourceComponent: loadMessage(actionsDescription);
38 sourceComponent: loadMessage(actionsDescription);
39
39
40− // Binding all properties for the item, to make sure that any change in the
41− // property will be propagated to the contents.item at any time
42− Binding {
43− target: contents.item
44− property: "menuSelected"
45− value: menuSelected
46− when: (contents.status == Loader.Ready)
47− }
48−
49− Binding {
50− target: contents.item
51− property: "menu"
52− value: menu
53− when: (contents.status == Loader.Ready)
54− }
55−
56− Connections {
57− target: contents.item ? contents.item : null
58− onSelectMenu: selectMenu()
59− onDeselectMenu: deselectMenu()
60− }
61−
62 Component {
40 Component {
63 id: simpleTextMessage
41 id: simpleTextMessage
64 SimpleTextMessage {
42 SimpleTextMessage {
@@ -76,6 +54,10 @@ Indicators.BaseMenuItem {
76 onDismiss: {
54 onDismiss: {
77 menuItem.model.activate(modelIndex, false);
55 menuItem.model.activate(modelIndex, false);
78 }
56 }
57+
58+ menuSelected: menuItem.menuSelected
59+ onSelectMenu: menuItem.selectMenu()
60+ onDeselectMenu: menuItem.deselectMenu()
79 }
61 }
80 }
62 }
81 Component {
63 Component {
@@ -107,6 +89,10 @@ Indicators.BaseMenuItem {
107 onReply: {
89 onReply: {
108 replyAction.activate(value);
90 replyAction.activate(value);
109 }
91 }
92+
93+ menuSelected: menuItem.menuSelected
94+ onSelectMenu: menuItem.selectMenu()
95+ onDeselectMenu: menuItem.deselectMenu()
110 }
96 }
111 }
97 }
112 Component {
98 Component {
@@ -149,6 +135,10 @@ Indicators.BaseMenuItem {
149 onReply: {
135 onReply: {
150 replyAction.activate(value);
136 replyAction.activate(value);
151 }
137 }
138+
139+ menuSelected: menuItem.menuSelected
140+ onSelectMenu: menuItem.selectMenu()
141+ onDeselectMenu: menuItem.deselectMenu()
152 }
142 }
153 }
143 }
154 }
144 }
plugins/Unity/Indicators/qml/IndicatorPage.qml+13−1
@@ -140,10 +140,11 @@ IndicatorBase {
140
140
141 onLoaded: {
141 onLoaded: {
142 if (item.hasOwnProperty("menuSelected")) {
142 if (item.hasOwnProperty("menuSelected")) {
143− item.menuSelected = Qt.binding(function() { return mainMenu.selectedIndex == index; });
143+ item.menuSelected = mainMenu.selectedIndex == index;
144 item.selectMenu.connect(function() { mainMenu.selectedIndex = index; });
144 item.selectMenu.connect(function() { mainMenu.selectedIndex = index; });
145 item.deselectMenu.connect(function() { mainMenu.selectedIndex = -1; });
145 item.deselectMenu.connect(function() { mainMenu.selectedIndex = -1; });
146 }
146 }
147+
147 if (item.hasOwnProperty("menu")) {
148 if (item.hasOwnProperty("menu")) {
148 item.menu = Qt.binding(function() { return model; });
149 item.menu = Qt.binding(function() { return model; });
149 }
150 }
@@ -154,6 +155,17 @@ IndicatorBase {
154 property: "objectName"
155 property: "objectName"
155 value: model.action
156 value: model.action
156 }
157 }
158+
159+ // TODO: Fixes lp#1243146
160+ // This is a workaround for a Qt bug. https://bugreports.qt-project.org/browse/QTBUG-34351
161+ Connections {
162+ target: mainMenu
163+ onSelectedIndexChanged: {
164+ if (loader.item && loader.item.hasOwnProperty("menuSelected")) {
165+ loader.item.menuSelected = mainMenu.selectedIndex == index;
166+ }
167+ }
168+ }
157 }
169 }
158 }
170 }
159 }
171 }