diff options
-rw-r--r-- | src/bookmarks/bookmarkstoolbar.cpp | 77 |
1 files changed, 59 insertions, 18 deletions
diff --git a/src/bookmarks/bookmarkstoolbar.cpp b/src/bookmarks/bookmarkstoolbar.cpp index 8da30c62..3667503b 100644 --- a/src/bookmarks/bookmarkstoolbar.cpp +++ b/src/bookmarks/bookmarkstoolbar.cpp @@ -36,6 +36,7 @@ #include "application.h" #include "bookmarkprovider.h" #include "bookmarkowner.h" +#include "webtab.h" // Qt Includes #include <QtGui/QFrame> @@ -232,10 +233,16 @@ bool BookmarkToolBar::eventFilter(QObject *watched, QEvent *event) QPoint pos = toolBar()->mapToGlobal(toolBar()->widgetForAction(act)->pos()); act->menu()->popup(QPoint(pos.x(), pos.y() + toolBar()->widgetForAction(act)->height())); } + + return QObject::eventFilter(watched, event); } - else if (watched == toolBar()) + + if (watched != toolBar()) + return QObject::eventFilter(watched, event); + + switch (event->type()) { - if (event->type() == QEvent::Show) + case QEvent::Show: { if (!m_filled) { @@ -243,7 +250,9 @@ bool BookmarkToolBar::eventFilter(QObject *watched, QEvent *event) m_filled = true; } } - if (event->type() == QEvent::ActionRemoved) + break; + + case QEvent::ActionRemoved: { QActionEvent *actionEvent = static_cast<QActionEvent*>(event); if (actionEvent && actionEvent->action() != m_dropAction) @@ -255,7 +264,9 @@ bool BookmarkToolBar::eventFilter(QObject *watched, QEvent *event) } } } - else if (event->type() == QEvent::ParentChange) + break; + + case QEvent::ParentChange: { QActionEvent *actionEvent = static_cast<QActionEvent*>(event); if (actionEvent && actionEvent->action() != m_dropAction) @@ -267,10 +278,12 @@ bool BookmarkToolBar::eventFilter(QObject *watched, QEvent *event) } } } - else if (event->type() == QEvent::DragEnter) + break; + + case QEvent::DragEnter: { QDragEnterEvent *dragEvent = static_cast<QDragEnterEvent*>(event); - if (dragEvent->mimeData()->hasFormat("application/rekonq-bookmark") || dragEvent->mimeData()->hasFormat("text/uri-list")) + if (dragEvent->mimeData()->hasFormat("application/rekonq-bookmark") || dragEvent->mimeData()->hasFormat("text/uri-list") || dragEvent->mimeData()->hasFormat("text/plain")) { QFrame* dropIndicatorWidget = new QFrame(toolBar()); dropIndicatorWidget->setFrameShape(QFrame::VLine); @@ -279,10 +292,12 @@ bool BookmarkToolBar::eventFilter(QObject *watched, QEvent *event) dragEvent->accept(); } } - else if (event->type() == QEvent::DragMove) + break; + + case QEvent::DragMove: { QDragMoveEvent *dragEvent = static_cast<QDragMoveEvent*>(event); - if (dragEvent->mimeData()->hasFormat("application/rekonq-bookmark") || dragEvent->mimeData()->hasFormat("text/uri-list")) + if (dragEvent->mimeData()->hasFormat("application/rekonq-bookmark") || dragEvent->mimeData()->hasFormat("text/uri-list") || dragEvent->mimeData()->hasFormat("text/plain")) { QAction *overAction = toolBar()->actionAt(dragEvent->pos()); KBookmarkActionInterface *overActionBK = dynamic_cast<KBookmarkActionInterface*>(overAction); @@ -312,14 +327,18 @@ bool BookmarkToolBar::eventFilter(QObject *watched, QEvent *event) } } } - else if (event->type() == QEvent::DragLeave) + break; + + case QEvent::DragLeave: { QDragLeaveEvent *dragEvent = static_cast<QDragLeaveEvent*>(event); delete m_dropAction; m_dropAction = 0; dragEvent->accept(); } - else if (event->type() == QEvent::Drop) + break; + + case QEvent::Drop: { QDropEvent *dropEvent = static_cast<QDropEvent*>(event); KBookmark bookmark; @@ -334,10 +353,26 @@ bool BookmarkToolBar::eventFilter(QObject *watched, QEvent *event) } else if (dropEvent->mimeData()->hasFormat("text/uri-list")) { - QString title = dropEvent->mimeData()->text(); + kDebug() << "DROP is URL"; QString url = dropEvent->mimeData()->urls().at(0).toString(); + QString title = url.contains( rApp->mainWindow()->currentTab()->url().url() ) + ? rApp->mainWindow()->currentTab()->view()->title() + : url; bookmark = root.addBookmark(title, url); } + else if (dropEvent->mimeData()->hasFormat("text/plain")) + { + kDebug() << "DROP is TEXT"; + QString url = dropEvent->mimeData()->text(); + KUrl u(url); + if (u.isValid()) + { + QString title = url.contains( rApp->mainWindow()->currentTab()->url().url() ) + ? rApp->mainWindow()->currentTab()->view()->title() + : url; + bookmark = root.addBookmark(title, url); + } + } else { return false; @@ -391,11 +426,9 @@ bool BookmarkToolBar::eventFilter(QObject *watched, QEvent *event) } dropEvent->accept(); } - } - else - { - // Drag handling - if (event->type() == QEvent::MouseButtonPress) + break; + + case QEvent::MouseButtonPress: // drag handling { QPoint pos = toolBar()->mapFromGlobal(QCursor::pos()); KBookmarkActionInterface *action = dynamic_cast<KBookmarkActionInterface *>(toolBar()->actionAt(pos)); @@ -410,7 +443,9 @@ bool BookmarkToolBar::eventFilter(QObject *watched, QEvent *event) return true; } } - else if (event->type() == QEvent::MouseMove) + break; + + case QEvent::MouseMove: { int distance = (toolBar()->mapFromGlobal(QCursor::pos()) - m_startDragPos).manhattanLength(); if (!m_currentMenu && distance >= QApplication::startDragDistance()) @@ -418,7 +453,9 @@ bool BookmarkToolBar::eventFilter(QObject *watched, QEvent *event) startDrag(); } } - else if (event->type() == QEvent::MouseButtonRelease) + break; + + case QEvent::MouseButtonRelease: { int distance = (toolBar()->mapFromGlobal(QCursor::pos()) - m_startDragPos).manhattanLength(); KBookmarkActionInterface *action = dynamic_cast<KBookmarkActionInterface *>(toolBar()->actionAt(m_startDragPos)); @@ -430,6 +467,10 @@ bool BookmarkToolBar::eventFilter(QObject *watched, QEvent *event) menu->menu()->popup(QPoint(actionPos.x(), actionPos.y() + toolBar()->widgetForAction(menu)->height())); } } + break; + + default: + break; } return QObject::eventFilter(watched, event); |