on xenial help sign in
fix preview background positioning
86ff26fMichael Zanetti
Dash/GenericScopeView.qml+11−4
@@ -151,7 +151,7 @@ ScopeView {
151 }
151 }
152 }
152 }
153 onPressAndHold: {
153 onPressAndHold: {
154− effect.positionPx = mapToItem(categoryView, 0, itemY).y
154+ effect.positionPx = Math.max(mapToItem(categoryView, 0, itemY).y, pageHeader.height + units.gu(5));
155 previewListView.categoryId = categoryId
155 previewListView.categoryId = categoryId
156 previewListView.categoryDelegate = rendererLoader.item
156 previewListView.categoryDelegate = rendererLoader.item
157 previewListView.model = model;
157 previewListView.model = model;
@@ -393,12 +393,19 @@ ScopeView {
393
393
394 if (!init && model !== undefined) {
394 if (!init && model !== undefined) {
395 var item = model.get(currentIndex)
395 var item = model.get(currentIndex)
396− scopeView.scope.preview( item.uri, item.icon, item.category, 0, item.mimetype, item.title, item.comment, item.dndUri, item.metadata)
396+ scopeView.scope.preview(item.uri, item.icon, item.category, 0, item.mimetype, item.title, item.comment, item.dndUri, item.metadata)
397 }
397 }
398
398
399 var itemY = categoryView.contentItem.mapFromItem(categoryDelegate.currentItem).y;
399 var itemY = categoryView.contentItem.mapFromItem(categoryDelegate.currentItem).y;
400+
401+ // Find new contentY and effect.postionPx
400 var newContentY = itemY - effect.positionPx - categoryDelegate.verticalSpacing;
402 var newContentY = itemY - effect.positionPx - categoryDelegate.verticalSpacing;
403+
404+ // Make sure the item is not covered by a header. Move the effect split down if necessary
405+ var headerHeight = pageHeader.height + units.gu(5); // sectionHeader's height
401− var effectAdjust = effect.positionPx;
406+ var effectAdjust = Math.max(effect.positionPx, headerHeight);
407+
408+ // Make sure we don't overscroll the listview. If yes, adjust effect position
402 if (newContentY < 0) {
409 if (newContentY < 0) {
403 effectAdjust += newContentY;
410 effectAdjust += newContentY;
404 newContentY = 0;
411 newContentY = 0;
@@ -409,7 +416,7 @@ ScopeView {
409 }
416 }
410
417
411 effect.positionPx = effectAdjust;
418 effect.positionPx = effectAdjust;
412− categoryView.contentY = newContentY - categoryView.originY;
419+ categoryView.contentY = newContentY;
413 }
420 }
414
421
415 property bool open: false
422 property bool open: false
tests/qmltests/Dash/tst_GenericScopeView.qml+17−2
@@ -132,7 +132,23 @@ Item {
132 tryCompare(previewListView, "open", false);
132 tryCompare(previewListView, "open", false);
133 }
133 }
134
134
135− function test_previewCycleOne() {
135+ function test_hiddenPreviewOpen() {
136+ var categoryListView = findChild(genericScopeView, "categoryListView");
137+ categoryListView.positionAtBeginning();
138+ waitForRendering(categoryListView);
139+ categoryListView.flick(0, -units.gu(80));
140+ tryCompare(categoryListView.flicking, false);
141+
142+ var tile = findChild(genericScopeView, "delegate0");
143+ mouseClick(tile, tile.width / 2, tile.height - 1);
144+ var openEffect = findChild(genericScopeView, "openEffect");
145+ tryCompare(openEffect, "gap", 1);
146+
147+ var pageHeader = findChild(genericScopeView, "pageHeader");
148+ verify(openEffect.positionPx >= pageHeader.height + units.gu(5));
149+ }
150+
151+ function test_previewCycle() {
136 var previewListView = findChild(genericScopeView, "previewListView");
152 var previewListView = findChild(genericScopeView, "previewListView");
137 tryCompare(previewListView, "open", false);
153 tryCompare(previewListView, "open", false);
138
154
@@ -173,7 +189,6 @@ Item {
173
189
174 checkArrowPosition(i);
190 checkArrowPosition(i);
175 }
191 }
176−
177 closePreview();
192 closePreview();
178 }
193 }
179
194