on xenial help sign in
Merge
a735eeeAlbert Astals Cid
debian/changelog+12
@@ -1,3 +1,15 @@
1+unity8 (8.11+15.04.20150817-0ubuntu1) vivid; urgency=medium
2+
3+ [ Albert Astals Cid ]
4+ * Drop gcc 4.9 requirement in debian/rules
5+ * Make the test more stable
6+ * Optimize scope.preview() calls (LP: #1478022)
7+
8+ [ Alberto Mardegan ]
9+ * Set currentIndex after the model change is completed (LP: #1433442)
10+
11+ -- CI Train Bot <ci-train-bot@canonical.com> Mon, 17 Aug 2015 11:57:31 +0000
12+
1unity8 (8.11+15.04.20150814-0ubuntu1) vivid; urgency=medium
13unity8 (8.11+15.04.20150814-0ubuntu1) vivid; urgency=medium
2
14
3 [ Albert Astals Cid ]
15 [ Albert Astals Cid ]
debian/rules−5
@@ -8,11 +8,6 @@ include /usr/share/dpkg/default.mk
8export DPKG_GENSYMBOLS_CHECK_LEVEL=4
8export DPKG_GENSYMBOLS_CHECK_LEVEL=4
9export NO_PNG_PKG_MANGLE=1
9export NO_PNG_PKG_MANGLE=1
10
10
11−# Explicitly selecting a G{CC,++}-version here to avoid accidental
12−# ABI breaks introduced by toolchain updates.
13−export CC=$(DEB_HOST_GNU_TYPE)-gcc-4.9
14−export CXX=$(DEB_HOST_GNU_TYPE)-g++-4.9
15−
16%:
11%:
17 dh $@ --parallel --fail-missing --with python3
12 dh $@ --parallel --fail-missing --with python3
18
13
qml/Dash/GenericScopeView.qml+21−15
@@ -99,23 +99,25 @@ FocusScope {
99 function itemPressedAndHeld(index, result, resultsModel, limitedCategoryItemCount, categoryId) {
99 function itemPressedAndHeld(index, result, resultsModel, limitedCategoryItemCount, categoryId) {
100 clearMaybePreviewData();
100 clearMaybePreviewData();
101
101
102− if (scope.preview(result, categoryId)) {
103− openPreview(index, resultsModel, limitedCategoryItemCount, categoryId);
102+ openPreview(result, index, resultsModel, limitedCategoryItemCount, categoryId);
104− }
105 }
103 }
106
104
107− function openPreview(index, resultsModel, limitedCategoryItemCount, categoryId) {
105+ function openPreview(result, index, resultsModel, limitedCategoryItemCount, categoryId) {
106+ var previewStack = scope.preview(result, categoryId);
107+ if (previewStack) {
108− if (limitedCategoryItemCount > 0) {
108+ if (limitedCategoryItemCount > 0) {
109− previewLimitModel.model = resultsModel;
109+ previewLimitModel.model = resultsModel;
110− previewLimitModel.limit = limitedCategoryItemCount;
110+ previewLimitModel.limit = limitedCategoryItemCount;
111− subPageLoader.model = previewLimitModel;
111+ subPageLoader.model = previewLimitModel;
112− } else {
112+ } else {
113− subPageLoader.model = resultsModel;
113+ subPageLoader.model = resultsModel;
114+ }
115+ subPageLoader.initialIndex = -1;
116+ subPageLoader.initialIndex = index;
117+ subPageLoader.categoryId = categoryId;
118+ subPageLoader.previewStack = previewStack;
119+ subPageLoader.openSubPage("preview");
114 }
120 }
115− subPageLoader.initialIndex = -1;
116− subPageLoader.initialIndex = index;
117− subPageLoader.categoryId = categoryId;
118− subPageLoader.openSubPage("preview");
119 }
121 }
120
122
121 Binding {
123 Binding {
@@ -163,7 +165,8 @@ FocusScope {
163 onHideDash: subPageLoader.closeSubPage()
165 onHideDash: subPageLoader.closeSubPage()
164 onPreviewRequested: { // (QVariant const& result)
166 onPreviewRequested: { // (QVariant const& result)
165 if (result === scopeView.maybePreviewResult) {
167 if (result === scopeView.maybePreviewResult) {
168+ openPreview(result,
166− openPreview(scopeView.maybePreviewIndex,
169+ scopeView.maybePreviewIndex,
167 scopeView.maybePreviewResultsModel,
170 scopeView.maybePreviewResultsModel,
168 scopeView.maybePreviewLimitedCategoryItemCount,
171 scopeView.maybePreviewLimitedCategoryItemCount,
169 scopeView.maybePreviewCategoryId);
172 scopeView.maybePreviewCategoryId);
@@ -758,6 +761,7 @@ FocusScope {
758 property var scope: scopeView.scope
761 property var scope: scopeView.scope
759 property var scopeStyle: scopeView.scopeStyle
762 property var scopeStyle: scopeView.scopeStyle
760 property int initialIndex: -1
763 property int initialIndex: -1
764+ property var previewStack;
761 property string categoryId
765 property string categoryId
762 property var model: null
766 property var model: null
763
767
@@ -791,6 +795,8 @@ FocusScope {
791 item.initialIndex = Qt.binding(function() { return subPageLoader.initialIndex; } )
795 item.initialIndex = Qt.binding(function() { return subPageLoader.initialIndex; } )
792 item.model = Qt.binding(function() { return subPageLoader.model; } )
796 item.model = Qt.binding(function() { return subPageLoader.model; } )
793 item.categoryId = Qt.binding(function() { return subPageLoader.categoryId; } )
797 item.categoryId = Qt.binding(function() { return subPageLoader.categoryId; } )
798+ item.initialIndexPreviewStack = subPageLoader.previewStack;
799+ subPageLoader.previewStack = null;
794 }
800 }
795 open = true;
801 open = true;
796 }
802 }
qml/Dash/PreviewListView.qml+16−6
@@ -24,9 +24,11 @@ Item {
24 id: root
24 id: root
25
25
26 property int initialIndex: -1
26 property int initialIndex: -1
27+ property var initialIndexPreviewStack: null
27 property var scope: null
28 property var scope: null
28 property var scopeStyle: null
29 property var scopeStyle: null
29 property string categoryId
30 property string categoryId
31+ property bool usedInitialIndex: false
30
32
31 property alias showSignatureLine: header.showSignatureLine
33 property alias showSignatureLine: header.showSignatureLine
32
34
@@ -84,10 +86,10 @@ Item {
84 }
86 }
85 }
87 }
86
88
87− onCountChanged: {
89+ onModelChanged: {
88− if (count > 0 && initialIndex >= 0) {
90+ if (count > 0 && initialIndex >= 0 && !usedInitialIndex) {
89− currentIndex = initialIndex;
91+ usedInitialIndex = true;
90− initialIndex = -1;
92+ previewListView.positionViewAtIndex(initialIndex, ListView.SnapPosition);
91 }
93 }
92 }
94 }
93
95
@@ -100,8 +102,16 @@ Item {
100 isCurrent: ListView.isCurrentItem
102 isCurrent: ListView.isCurrentItem
101
103
102 previewModel: {
104 previewModel: {
105+ if (root.open) {
106+ if (index === root.initialIndex) {
107+ return root.initialIndexPreviewStack.getPreviewModel(0);
108+ } else {
103− var previewStack = root.scope.preview(result, root.categoryId);
109+ var previewStack = root.scope.preview(result, root.categoryId);
104− return previewStack.getPreviewModel(0);
110+ return previewStack.getPreviewModel(0);
111+ }
112+ } else {
113+ return null;
114+ }
105 }
115 }
106 scopeStyle: root.scopeStyle
116 scopeStyle: root.scopeStyle
107 }
117 }
tests/qmltests/Dash/tst_PageHeader.qml+16−12
@@ -33,13 +33,18 @@ Item {
33
33
34 property alias searchEnabled : pageHeader.searchEntryEnabled
34 property alias searchEnabled : pageHeader.searchEntryEnabled
35 property alias searchQuery : pageHeader.searchQuery
35 property alias searchQuery : pageHeader.searchQuery
36+ property var headerContainer: findChild(pageHeader, "headerContainer")
36
37
37 function doTypeString(text) {
38 function doTypeString(text) {
38− var headerContainer = findChild(pageHeader, "headerContainer");
39 tryCompare(headerContainer, "contentY", 0);
39 tryCompare(headerContainer, "contentY", 0);
40 typeString(text);
40 typeString(text);
41 }
41 }
42
42
43+ function doResetSearch() {
44+ pageHeader.resetSearch();
45+ tryCompare(headerContainer, "contentY", headerContainer.height);
46+ }
47+
43 function init() {
48 function init() {
44 searchEnabled = true;
49 searchEnabled = true;
45
50
@@ -49,14 +54,13 @@ Item {
49 pageHeader.searchHistory.clear();
54 pageHeader.searchHistory.clear();
50
55
51 // Check initial state
56 // Check initial state
52− var headerContainer = findChild(pageHeader, "headerContainer");
53 tryCompareFunction(function() { return headerContainer.popover === null; }, true);
57 tryCompareFunction(function() { return headerContainer.popover === null; }, true);
54 compare(pageHeader.searchHistory.count, 0);
58 compare(pageHeader.searchHistory.count, 0);
55 }
59 }
56
60
57 function test_search_disabled() {
61 function test_search_disabled() {
58 searchEnabled = false
62 searchEnabled = false
59− pageHeader.resetSearch()
63+ doResetSearch();
60
64
61 pageHeader.triggerSearch()
65 pageHeader.triggerSearch()
62 keyClick(Qt.Key_S)
66 keyClick(Qt.Key_S)
@@ -66,7 +70,7 @@ Item {
66
70
67 function test_search_enable() {
71 function test_search_enable() {
68 searchEnabled = true
72 searchEnabled = true
69− pageHeader.resetSearch()
73+ doResetSearch();
70
74
71 pageHeader.triggerSearch()
75 pageHeader.triggerSearch()
72 doTypeString("test")
76 doTypeString("test")
@@ -84,42 +88,42 @@ Item {
84
88
85 function test_reset_search() {
89 function test_reset_search() {
86 searchEnabled = true
90 searchEnabled = true
87− pageHeader.resetSearch()
91+ doResetSearch();
88
92
89 pageHeader.triggerSearch()
93 pageHeader.triggerSearch()
90 keyClick(Qt.Key_S)
94 keyClick(Qt.Key_S)
91
95
92 compare(searchQuery, "s", "Could not type in TextField.")
96 compare(searchQuery, "s", "Could not type in TextField.")
93
97
94− pageHeader.resetSearch()
98+ doResetSearch();
95 compare(searchQuery, "", "Reset search did not reset searchQuery correctly.")
99 compare(searchQuery, "", "Reset search did not reset searchQuery correctly.")
96 }
100 }
97
101
98 function test_history() {
102 function test_history() {
99 pageHeader.triggerSearch()
103 pageHeader.triggerSearch()
100 doTypeString("humppa1")
104 doTypeString("humppa1")
101− pageHeader.resetSearch()
105+ doResetSearch();
102
106
103 tryCompare(pageHeader.searchHistory, "count", 1)
107 tryCompare(pageHeader.searchHistory, "count", 1)
104 compare(pageHeader.searchHistory.get(0).query, "humppa1")
108 compare(pageHeader.searchHistory.get(0).query, "humppa1")
105
109
106 pageHeader.triggerSearch()
110 pageHeader.triggerSearch()
107 doTypeString("humppa2")
111 doTypeString("humppa2")
108− pageHeader.resetSearch()
112+ doResetSearch();
109
113
110 compare(pageHeader.searchHistory.count, 2)
114 compare(pageHeader.searchHistory.count, 2)
111 compare(pageHeader.searchHistory.get(0).query, "humppa2")
115 compare(pageHeader.searchHistory.get(0).query, "humppa2")
112
116
113 pageHeader.triggerSearch()
117 pageHeader.triggerSearch()
114 doTypeString("humppa3")
118 doTypeString("humppa3")
115− pageHeader.resetSearch()
119+ doResetSearch();
116
120
117 compare(pageHeader.searchHistory.count, 3)
121 compare(pageHeader.searchHistory.count, 3)
118 compare(pageHeader.searchHistory.get(0).query, "humppa3")
122 compare(pageHeader.searchHistory.get(0).query, "humppa3")
119
123
120 pageHeader.triggerSearch()
124 pageHeader.triggerSearch()
121 doTypeString("humppa4")
125 doTypeString("humppa4")
122− pageHeader.resetSearch()
126+ doResetSearch();
123
127
124 compare(pageHeader.searchHistory.count, 3)
128 compare(pageHeader.searchHistory.count, 3)
125 compare(pageHeader.searchHistory.get(0).query, "humppa4")
129 compare(pageHeader.searchHistory.get(0).query, "humppa4")
@@ -139,7 +143,7 @@ Item {
139 }
143 }
140
144
141 function cleanup() {
145 function cleanup() {
142− pageHeader.resetSearch();
146+ doResetSearch();
143 }
147 }
144
148
145 function test_popover() {
149 function test_popover() {
@@ -223,7 +227,7 @@ Item {
223 tryCompare(headerContainer, "showSearch", !data.hideSearch);
227 tryCompare(headerContainer, "showSearch", !data.hideSearch);
224 tryCompareFunction(function() { return headerContainer.popover === null; }, true);
228 tryCompareFunction(function() { return headerContainer.popover === null; }, true);
225
229
226− pageHeader.resetSearch();
230+ doResetSearch();
227 }
231 }
228
232
229 function test_search_change_shows_search() {
233 function test_search_change_shows_search() {