|
@@ -6,6 +6,7 @@
|
|
#include <QScrollBar>
|
|
#include <QScrollBar>
|
|
#include <QDropEvent>
|
|
#include <QDropEvent>
|
|
#include <QPushButton>
|
|
#include <QPushButton>
|
|
|
|
+#include <QTimer>
|
|
|
|
|
|
SceneTree::SceneTree(QWidget *parent_) : QListWidget(parent_)
|
|
SceneTree::SceneTree(QWidget *parent_) : QListWidget(parent_)
|
|
{
|
|
{
|
|
@@ -67,8 +68,6 @@ bool SceneTree::eventFilter(QObject *obj, QEvent *event)
|
|
|
|
|
|
void SceneTree::resizeEvent(QResizeEvent *event)
|
|
void SceneTree::resizeEvent(QResizeEvent *event)
|
|
{
|
|
{
|
|
- QListWidget::resizeEvent(event);
|
|
|
|
-
|
|
|
|
if (gridMode) {
|
|
if (gridMode) {
|
|
int scrollWid = verticalScrollBar()->sizeHint().width();
|
|
int scrollWid = verticalScrollBar()->sizeHint().width();
|
|
int h = visualItemRect(item(count() - 1)).bottom();
|
|
int h = visualItemRect(item(count() - 1)).bottom();
|
|
@@ -96,6 +95,8 @@ void SceneTree::resizeEvent(QResizeEvent *event)
|
|
item(i)->setData(Qt::SizeHintRole, QVariant());
|
|
item(i)->setData(Qt::SizeHintRole, QVariant());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ QListWidget::resizeEvent(event);
|
|
}
|
|
}
|
|
|
|
|
|
void SceneTree::startDrag(Qt::DropActions supportedActions)
|
|
void SceneTree::startDrag(Qt::DropActions supportedActions)
|
|
@@ -105,10 +106,10 @@ void SceneTree::startDrag(Qt::DropActions supportedActions)
|
|
|
|
|
|
void SceneTree::dropEvent(QDropEvent *event)
|
|
void SceneTree::dropEvent(QDropEvent *event)
|
|
{
|
|
{
|
|
- QListWidget::dropEvent(event);
|
|
|
|
-
|
|
|
|
- if (event->source() != this)
|
|
|
|
|
|
+ if (event->source() != this) {
|
|
|
|
+ QListWidget::dropEvent(event);
|
|
return;
|
|
return;
|
|
|
|
+ }
|
|
|
|
|
|
if (gridMode) {
|
|
if (gridMode) {
|
|
int scrollWid = verticalScrollBar()->sizeHint().width();
|
|
int scrollWid = verticalScrollBar()->sizeHint().width();
|
|
@@ -136,7 +137,9 @@ void SceneTree::dropEvent(QDropEvent *event)
|
|
resize(size());
|
|
resize(size());
|
|
}
|
|
}
|
|
|
|
|
|
- emit scenesReordered();
|
|
|
|
|
|
+ QListWidget::dropEvent(event);
|
|
|
|
+
|
|
|
|
+ QTimer::singleShot(100, [this]() { emit scenesReordered(); });
|
|
}
|
|
}
|
|
|
|
|
|
void SceneTree::dragMoveEvent(QDragMoveEvent *event)
|
|
void SceneTree::dragMoveEvent(QDragMoveEvent *event)
|
|
@@ -181,15 +184,15 @@ void SceneTree::dragMoveEvent(QDragMoveEvent *event)
|
|
QPoint position(xPos * g.width(), yPos * g.height());
|
|
QPoint position(xPos * g.width(), yPos * g.height());
|
|
setPositionForIndex(position, index);
|
|
setPositionForIndex(position, index);
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- QListWidget::dragMoveEvent(event);
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ QListWidget::dragMoveEvent(event);
|
|
}
|
|
}
|
|
|
|
|
|
void SceneTree::rowsInserted(const QModelIndex &parent, int start, int end)
|
|
void SceneTree::rowsInserted(const QModelIndex &parent, int start, int end)
|
|
{
|
|
{
|
|
- QListWidget::rowsInserted(parent, start, end);
|
|
|
|
-
|
|
|
|
QResizeEvent event(size(), size());
|
|
QResizeEvent event(size(), size());
|
|
SceneTree::resizeEvent(&event);
|
|
SceneTree::resizeEvent(&event);
|
|
|
|
+
|
|
|
|
+ QListWidget::rowsInserted(parent, start, end);
|
|
}
|
|
}
|