Bug in Qt 5.12 drag n'drop ?
-
@jsulm said in Bug in Qt 5.12 drag n'drop ?:
t prove that there is a bug in
I also have an Application which has a drag n'drop problem since I've updated to Qt 5.12.0 (macOS 10.14.2 Mojave). The eventFilter method is not called anymore with QEvent::Drop
Therefore I can not drop anything into my QLineEdit derived object...
// MyLineEdit is derived from QLineEdit bool MyLineEdit::eventFilter(QObject* object, QEvent* event) { if(m_droppable) { if(event->type() == QEvent::DragEnter) { event->accept(); } // since Qt 5.12.0 the following condition is never true! if(event->type() == QEvent::Drop) { // this line is never reached // .. } } }
-
This works fine with 5.11 and 5.12 on Linux:
class MyLineEdit : public QLineEdit { Q_OBJECT public: using QLineEdit::QLineEdit; bool eventFilter(QObject *object, QEvent *event) { if (event->type() == QEvent::DragEnter) event->accept(); if (event->type() == QEvent::Drop) qDebug() << "Drop"; return QLineEdit::eventFilter(object, event); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); MyLineEdit le; le.installEventFilter(&le); le.show(); return app.exec(); } #include "main.moc"
If it does not work on Mac please open a bug report.
/edit: There were some dnd changes between 5.11 and 5.12: 10b3286313c78fa380b5fe676a7c14f3ae84f017 - it works fine on Linux, did not yet test on windows and don't have a mac...
-
Hello guys... Since we are talking about Drag and Drop. Can somebody also look into this bug report?
-
@Christian-Ehrlicher said in Bug in Qt 5.12 drag n'drop ?:
MyLineEdit
Hm... this works on mac too!
Seems to be a special constelation which doesn't work or it's a bug in specific circumstancens only...
-
@armindev said in Bug in Qt 5.12 drag n'drop ?:
Seems to be a special constelation
Is it possible to simplify your program until the bug is gone away?
-
I will try this but this will take a while ..
-
@armindev said in Bug in Qt 5.12 drag n'drop ?:
I will try this but this will take a while ..
Thx and take your time. There seems to be something wrong in a corner case and it would be really good to find it out :)
-
I have checked the drag & drop in my app when running on Ubuntu 16.04. The drag is from a QListWidgetItem to a drop on a QGraphicsView. I appropriately overrode QGraphicsView::dropEvent (and all the drag methods of QGraphicsView). It still works in Qt5.12.0 although the willingness to accept the QMimeData constructed from the QListWidgetItem as a droppable on the QGraphicsView (visible as a change in the mouse pointer icon) seems to be less than it was with Qt5.7 that I used up to yesterday. No clue whether this is in any way related, but perhaps it brings some ideas of what causes the issue for dropping on a QLineEdit.
-
@ModelTech can you provide a minimal compilable example that shows that change of behaviour ?
-
Hi. I had the same problem. Everything worked fine on Qt 5.7 then after I updated to Qt 5.12 dropping would not work at all.
At least in my case it seems that for previous version of Qt only implementingdragEnterEvent
was enough but with 5.12 I had to also override thedragMoveEvent
event.
So, basically I have this 2 things and now it works as expected. Hope it helps someone.void QtDropArea::dragEnterEvent(QDragEnterEvent *event) { event->acceptProposedAction(); } // this was added after updating to Qt 5.12 void QtDropArea::dragMoveEvent(QDragMoveEvent *event) { event->acceptProposedAction(); }
-
-
Thx for your hint with the dragMoveEvent() reimpl. I think I can reproduce your issue and also found the corresponding commit.
-
Can you please check if you get a dragEnterEvent in the problematic case? I would guess no.
The problem was introduced with f8944a7f07112c85dc4f66848cabb490514cd28e which is a bugfix for QTBUG-67155. -
@Christian-Ehrlicher I already did some cross-links, can you create a bugreport for that issue?
-
-
The bug will be fixed in 5.12.1