From 6e80911b95e7a91f9a1f2adfa8da11a1c23da4be Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Mon, 14 Nov 2011 09:47:03 +0100 Subject: [PATCH] Added some optimization for the drag and drop from Safari: user cannot drop something with missing mimedata --- src/board/UBBoardController.cpp | 6 ++++-- src/gui/UBLibraryWidget.cpp | 37 +++++++++++++++------------------ 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 78b43e81..3aa16d7d 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1846,7 +1846,7 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint QString qsHtml = pMimeData->html(); QString url = UBApplication::urlFromHtml(qsHtml); - if(!("" == url)) + if("" != url) { downloadURL(url, pPos); return; @@ -1883,7 +1883,9 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint if (pMimeData->hasText()) { - mActiveScene->addText(pMimeData->text(), pPos); + if("" != pMimeData->text()){ + mActiveScene->addText(pMimeData->text(), pPos); + } } } diff --git a/src/gui/UBLibraryWidget.cpp b/src/gui/UBLibraryWidget.cpp index 72fa4cc2..b88f8e8f 100644 --- a/src/gui/UBLibraryWidget.cpp +++ b/src/gui/UBLibraryWidget.cpp @@ -348,19 +348,16 @@ void UBLibraryWidget::dropEvent(QDropEvent *event) } } } - else - { + else{ bool bDropAccepted = false; // We must check the URLs first because an image dropped from the web can contains the image datas, as well as the URLs // and if we want to display the download widget in order to make the user wait for the end of the download, we need // to check the URLs first! - if (pMimeData->hasUrls()) - { + if (pMimeData->hasUrls()){ qDebug() << "hasUrls"; QList urlList = pMimeData->urls(); - for (int i = 0; i < urlList.size() && i < 32; ++i) - { + for (int i = 0; i < urlList.size() && i < 32; ++i){ QString filePath; #ifdef Q_WS_MACX filePath = QUrl(urlList.at(i)).toString(); @@ -374,8 +371,7 @@ void UBLibraryWidget::dropEvent(QDropEvent *event) // When an HTML is present, it means that we dropped something from the web. Normally, the HTML contains the element // of the webpage and has a 'src' attribute containing the URL of the web ressource. Here we are looking for this // 'src' attribute, get its value and download the ressource from this URL. - else if (pMimeData->hasHtml()) - { + else if (pMimeData->hasHtml()){ qDebug() << "hasHtml"; QString html = pMimeData->html(); QString url = UBApplication::urlFromHtml(html); @@ -385,33 +381,34 @@ void UBLibraryWidget::dropEvent(QDropEvent *event) bDropAccepted = true; } } - else if (pMimeData->hasText()) - { + else if (pMimeData->hasText()){ // On linux external dragged element are considered as text; qDebug() << "hasText: " << pMimeData->text(); QString filePath = QUrl(pMimeData->text()).toLocalFile(); - mLibraryController->importItemOnLibrary(filePath); - bDropAccepted = true; + if("" != filePath){ + mLibraryController->importItemOnLibrary(filePath); + bDropAccepted = true; + } } - else if (pMimeData->hasImage()) - { + else if (pMimeData->hasImage()){ qDebug() << "hasImage"; QImage image = qvariant_cast(pMimeData->imageData()); mLibraryController->importImageOnLibrary(image); bDropAccepted = true; } - else - { + else{ qWarning() << "Cannot import data"; } - if(bDropAccepted) - { + if(bDropAccepted){ onRefreshCurrentFolder(); +#ifdef Q_WS_MACX + event->acceptProposedAction(); +#else event->accept(); +#endif } - else - { + else{ event->ignore(); } }