Merge pull request #353 from YACReader/fix_drag_n_drop_grid_view

Fix drag&drop in the comics grid view
This commit is contained in:
Luis Ángel San Martín 2022-11-06 13:04:34 +01:00 committed by GitHub
commit 24f855b21d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 1194 additions and 1194 deletions

View File

@ -18,7 +18,7 @@ SplitView {
color: info_container.color color: info_container.color
} }
Rectangle { Rectangle {
id: main id: main
clip: true clip: true
@ -413,46 +413,6 @@ Rectangle {
grid.contentX = grid.originX grid.contentX = grid.originX
} }
DropArea {
anchors.fill: parent
onEntered: {
if(drag.hasUrls)
{
if(dropManager.canDropUrls(drag.urls, drag.action))
{
drag.accepted = true;
}else
drag.accepted = false;
}
else if (dropManager.canDropFormats(drag.formats)) {
drag.accepted = true;
} else
drag.accepted = false;
}
onDropped: {
if(drop.hasUrls && dropManager.canDropUrls(drop.urls, drop.action))
{
dropManager.droppedFiles(drop.urls, drop.action);
}
else{
if (dropManager.canDropFormats(drop.formats))
{
var destItem = grid.itemAt(drop.x,drop.y + grid.contentY);
var destLocalX = grid.mapToItem(destItem,drop.x,drop.y + grid.contentY).x
var realIndex = grid.indexAt(drop.x,drop.y + grid.contentY);
if(realIndex === -1)
realIndex = grid.count - 1;
var destIndex = destLocalX < (grid.cellWidth / 2) ? realIndex : realIndex + 1;
dropManager.droppedComicsForResortingAt(drop.getDataAsString(), destIndex);
}
}
}
}
property Component currentComicView: Component { property Component currentComicView: Component {
id: currentComicView id: currentComicView
Rectangle { Rectangle {
@ -809,11 +769,51 @@ Rectangle {
currentIndexHelper.setCurrentIndex(ci); currentIndexHelper.setCurrentIndex(ci);
grid.currentIndex = ci; grid.currentIndex = ci;
} }
}
}
}
Rectangle { DropArea {
anchors.fill: parent
onEntered: drag => {
if(drag.hasUrls)
{
if(dropManager.canDropUrls(drag.urls, drag.action))
{
drag.accepted = true;
}else
drag.accepted = false;
}
else if (dropManager.canDropFormats(drag.formats)) {
drag.accepted = true;
} else
drag.accepted = false;
}
onDropped: drop => {
if(drop.hasUrls && dropManager.canDropUrls(drop.urls, drop.action))
{
dropManager.droppedFiles(drop.urls, drop.action);
}
else{
if (dropManager.canDropFormats(drop.formats))
{
var destItem = grid.itemAt(drop.x,drop.y + grid.contentY);
var destLocalX = grid.mapToItem(destItem,drop.x,drop.y + grid.contentY).x
var realIndex = grid.indexAt(drop.x,drop.y + grid.contentY);
if(realIndex === -1)
realIndex = grid.count - 1;
var destIndex = destLocalX < (grid.cellWidth / 2) ? realIndex : realIndex + 1;
dropManager.droppedComicsForResortingAt("", destIndex);
}
}
}
}
}
}
}
Rectangle {
id: info_container id: info_container
objectName: "infoContainer" objectName: "infoContainer"
SplitView.preferredWidth: 350 SplitView.preferredWidth: 350
@ -868,5 +868,5 @@ Rectangle {
} }
} }
} }
} }

View File

@ -20,7 +20,7 @@ SplitView {
color: info_container.color color: info_container.color
} }
Rectangle { Rectangle {
id: main id: main
clip: true clip: true
@ -416,46 +416,6 @@ Rectangle {
grid.contentX = grid.originX grid.contentX = grid.originX
} }
DropArea {
anchors.fill: parent
onEntered: {
if(drag.hasUrls)
{
if(dropManager.canDropUrls(drag.urls, drag.action))
{
drag.accepted = true;
}else
drag.accepted = false;
}
else if (dropManager.canDropFormats(drag.formats)) {
drag.accepted = true;
} else
drag.accepted = false;
}
onDropped: {
if(drop.hasUrls && dropManager.canDropUrls(drop.urls, drop.action))
{
dropManager.droppedFiles(drop.urls, drop.action);
}
else{
if (dropManager.canDropFormats(drop.formats))
{
var destItem = grid.itemAt(drop.x,drop.y + grid.contentY);
var destLocalX = grid.mapToItem(destItem,drop.x,drop.y + grid.contentY).x
var realIndex = grid.indexAt(drop.x,drop.y + grid.contentY);
if(realIndex === -1)
realIndex = grid.count - 1;
var destIndex = destLocalX < (grid.cellWidth / 2) ? realIndex : realIndex + 1;
dropManager.droppedComicsForResortingAt(drop.getDataAsString(), destIndex);
}
}
}
}
property Component currentComicView: Component { property Component currentComicView: Component {
id: currentComicView id: currentComicView
Rectangle { Rectangle {
@ -816,11 +776,51 @@ Rectangle {
currentIndexHelper.setCurrentIndex(ci); currentIndexHelper.setCurrentIndex(ci);
grid.currentIndex = ci; grid.currentIndex = ci;
} }
}
}
}
Rectangle { DropArea {
anchors.fill: parent
onEntered: drag => {
if(drag.hasUrls)
{
if(dropManager.canDropUrls(drag.urls, drag.action))
{
drag.accepted = true;
}else
drag.accepted = false;
}
else if (dropManager.canDropFormats(drag.formats)) {
drag.accepted = true;
} else
drag.accepted = false;
}
onDropped: drop => {
if(drop.hasUrls && dropManager.canDropUrls(drop.urls, drop.action))
{
dropManager.droppedFiles(drop.urls, drop.action);
}
else{
if (dropManager.canDropFormats(drop.formats))
{
var destItem = grid.itemAt(drop.x,drop.y + grid.contentY);
var destLocalX = grid.mapToItem(destItem,drop.x,drop.y + grid.contentY).x
var realIndex = grid.indexAt(drop.x,drop.y + grid.contentY);
if(realIndex === -1)
realIndex = grid.count - 1;
var destIndex = destLocalX < (grid.cellWidth / 2) ? realIndex : realIndex + 1;
dropManager.droppedComicsForResortingAt("", destIndex);
}
}
}
}
}
}
}
Rectangle {
id: info_container id: info_container
objectName: "infoContainer" objectName: "infoContainer"
SplitView.preferredWidth: 350 SplitView.preferredWidth: 350
@ -875,5 +875,5 @@ Rectangle {
} }
} }
} }
} }