未验证 提交 5969d835 编写于 作者: J Jim 提交者: GitHub

Merge pull request #3398 from cg2121/scene-tree-fix

UI: Fix scene tree event handling
......@@ -6,6 +6,7 @@
#include <QScrollBar>
#include <QDropEvent>
#include <QPushButton>
#include <QTimer>
SceneTree::SceneTree(QWidget *parent_) : QListWidget(parent_)
{
......@@ -67,8 +68,6 @@ bool SceneTree::eventFilter(QObject *obj, QEvent *event)
void SceneTree::resizeEvent(QResizeEvent *event)
{
QListWidget::resizeEvent(event);
if (gridMode) {
int scrollWid = verticalScrollBar()->sizeHint().width();
int h = visualItemRect(item(count() - 1)).bottom();
......@@ -96,6 +95,8 @@ void SceneTree::resizeEvent(QResizeEvent *event)
item(i)->setData(Qt::SizeHintRole, QVariant());
}
}
QListWidget::resizeEvent(event);
}
void SceneTree::startDrag(Qt::DropActions supportedActions)
......@@ -105,10 +106,10 @@ void SceneTree::startDrag(Qt::DropActions supportedActions)
void SceneTree::dropEvent(QDropEvent *event)
{
QListWidget::dropEvent(event);
if (event->source() != this)
if (event->source() != this) {
QListWidget::dropEvent(event);
return;
}
if (gridMode) {
int scrollWid = verticalScrollBar()->sizeHint().width();
......@@ -136,7 +137,9 @@ void SceneTree::dropEvent(QDropEvent *event)
resize(size());
}
emit scenesReordered();
QListWidget::dropEvent(event);
QTimer::singleShot(100, [this]() { emit scenesReordered(); });
}
void SceneTree::dragMoveEvent(QDragMoveEvent *event)
......@@ -181,15 +184,15 @@ void SceneTree::dragMoveEvent(QDragMoveEvent *event)
QPoint position(xPos * g.width(), yPos * g.height());
setPositionForIndex(position, index);
}
} else {
QListWidget::dragMoveEvent(event);
}
QListWidget::dragMoveEvent(event);
}
void SceneTree::rowsInserted(const QModelIndex &parent, int start, int end)
{
QListWidget::rowsInserted(parent, start, end);
QResizeEvent event(size(), size());
SceneTree::resizeEvent(&event);
QListWidget::rowsInserted(parent, start, end);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册