Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-27406

Wrong cursor when using messagebox inside dropevent

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • None
    • 5.0.0 Beta 1
    • GUI: Drag and Drop
    • None
    • Ubuntu 12.04, xcb
    • e840b8b2e3d62dfc222b672a0ba32e7da8dc159e

    Description

      Star a drag from the demo application and drop inside the sample application. Move cursor over messagebox. It shows 'do not drop cursor', but should show an arrow.

      #include <QtWidgets/QMessageBox>
      #include <QtCore/QDebug>
      #include <QtGui/QDropEvent>
      #include <QtGui/QDrag>
      #include <QtGui/QClipboard>
      #include <QtWidgets/QInputDialog>
      #include <QtWidgets/QLabel>
      #include <QtWidgets/QApplication>
      #include <QtCore/QMimeData>
      #include <QtCore/QBuffer>
      #include <QtGui/QImage>
      #include <QtGui/QPixmap>
      //#include <QtGui>
      //#include <QtCore>
      
      class MyWidget : public QLabel
      {
          Q_OBJECT
      public:
          MyWidget()
              : QLabel(0) {
              setMinimumSize(QSize(200, 200));
              setAcceptDrops(true);
          }
      
      protected:
          virtual void mouseMoveEvent(QMouseEvent*) {
              QDrag* drag = new QDrag(this);
              QMimeData* mimeData = new QMimeData;
      
              mimeData->setText(text());
              drag->setMimeData(mimeData);
              drag->exec();
          }
      
          virtual void dragEnterEvent(QDragEnterEvent* event) {
              //qDebug() << "dragEnterEvent: " << event->proposedAction();
              event->acceptProposedAction();
          }
          virtual void dragMoveEvent(QDragMoveEvent* event) {
              //qDebug() << "dragMoveEvent: " << event->proposedAction();
              event->acceptProposedAction();
          }
      
          virtual void dropEvent(QDropEvent* event) {
              const QMimeData* mimeData = event->mimeData();
              if (QMessageBox::question(0, "Confirmation required", "Do you want to paste?",
                                           QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
                  if (mimeData->hasText()) {
                      qWarning("retrieving text");
                      setText("#" + mimeData->text() + " yo");
                  }
      }
      
              qDebug() << "done with data";
              event->acceptProposedAction();
          }
      };
      
      int main( int argc, char ** argv )
      {
          QApplication app(argc, argv);
          qDebug() << "V: " << qVersion();
          MyWidget w1;
          w1.setText("Drag/drop widget");
          w1.show();
      
          return app.exec();
      }
      
      #include "dnd_modaldlg.moc"
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            paeglis Gatis Paeglis
            paeglis Gatis Paeglis
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes