From 6e80911b95e7a91f9a1f2adfa8da11a1c23da4be Mon Sep 17 00:00:00 2001
From: shibakaneki <ShibaKaneki@MacBook-Pro-de-Shiba.local>
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<QUrl> 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<QImage>(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();
         }
     }