diff options
Diffstat (limited to 'src/VBox/Frontends/VirtualBox/src/runtime/UIDnDHandler.cpp')
| -rw-r--r-- | src/VBox/Frontends/VirtualBox/src/runtime/UIDnDHandler.cpp | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/UIDnDHandler.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/UIDnDHandler.cpp index cfa9a5f0..6cce2484 100644 --- a/src/VBox/Frontends/VirtualBox/src/runtime/UIDnDHandler.cpp +++ b/src/VBox/Frontends/VirtualBox/src/runtime/UIDnDHandler.cpp @@ -93,11 +93,10 @@ Qt::DropAction UIDnDHandler::dragHGDrop(CGuest &guest, ulong screenId, int x, in memcpy(dv.data(), d.constData(), d.size()); CProgress progress = guest.DragHGPutData(screenId, format, dv); - if ( guest.isOk() - && !progress.isNull()) + if (guest.isOk()) { - msgCenter().showModalProgressDialog(progress, tr("Dropping data ..."), ":/progress_dnd_hg_90px.png", pParent, true); - if (!progress.GetCanceled() && progress.isOk() && progress.GetResultCode() != 0) + msgCenter().showModalProgressDialog(progress, tr("Dropping data ..."), ":/progress_dnd_hg_90px.png", pParent); + if (!progress.GetCanceled() && (!progress.isOk() || progress.GetResultCode() != 0)) { msgCenter().cannotDropData(progress, pParent); result = KDragAndDropAction_Ignore; @@ -184,36 +183,40 @@ protected: /* No, start getting the data from the guest. First inform the guest we * want the data in the specified mime-type. */ CProgress progress = guest.DragGHDropped(mimeType, UIDnDHandler::toVBoxDnDAction(m_defAction)); - if ( guest.isOk() - && !progress.isNull()) + if (guest.isOk()) { - msgCenter().showModalProgressDialog(progress, tr("Dropping data ..."), ":/progress_dnd_gh_90px.png", m_pParent, true); - if (!progress.GetCanceled() && progress.isOk() && progress.GetResultCode() != 0) - msgCenter().cannotDropData(progress, m_pParent); - else if (!progress.GetCanceled()) + msgCenter().showModalProgressDialog(progress, tr("Dropping data ..."), ":/progress_dnd_gh_90px.png", m_pParent); + if (!progress.GetCanceled()) { - /* After the data is successfully arrived from the guest, we - * query it from Main. */ - QVector<uint8_t> data = guest.DragGHGetData(); - if (!data.isEmpty()) + if (progress.isOk() && progress.GetResultCode() == 0) { -// printf("qt data (%d, %d, '%s'): %s\n", data.size(), type, qPrintable(mimeType), data.data()); - /* Todo: not sure what to add here more: needs more testing. */ - switch (type) + /* After the data is successfully arrived from the guest, we query it from Main. */ + QVector<uint8_t> data = guest.DragGHGetData(); + if (!data.isEmpty()) { - case QVariant::String: m_data = QVariant(QString(reinterpret_cast<const char*>(data.data()))); break; - case QVariant::ByteArray: + /* Todo: not sure what to add here more: needs more testing. */ + switch (type) { - QByteArray ba(reinterpret_cast<const char*>(data.constData()), data.size()); - m_data = QVariant(ba); - break; + case QVariant::String: + { + m_data = QVariant(QString(reinterpret_cast<const char*>(data.data()))); + break; + } + case QVariant::ByteArray: + { + QByteArray ba(reinterpret_cast<const char*>(data.constData()), data.size()); + m_data = QVariant(ba); + break; + } + default: break; } - default: break; } + m_fState = Finished; } - m_fState = Finished; + else + msgCenter().cannotDropData(progress, m_pParent); } - if (progress.GetCanceled()) + else m_fState = Canceled; } else |
