]> cloud.milkyroute.net Git - dolphin.git/commitdiff
jump to the URL of the clipboard content if a middle click on an empty area inside...
authorPeter Penz <peter.penz19@gmail.com>
Tue, 3 Jun 2008 20:30:39 +0000 (20:30 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Tue, 3 Jun 2008 20:30:39 +0000 (20:30 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=816421

src/dolphincolumnwidget.cpp
src/dolphincontroller.cpp
src/dolphincontroller.h
src/dolphindetailsview.cpp
src/dolphiniconsview.cpp

index a380dc52bf09256d4cb36a3f1e6677c6517a13bb..2ca4cdbbfea88fc13dc91fc53d96efd89985f1f2 100644 (file)
@@ -337,7 +337,11 @@ void DolphinColumnWidget::paintEvent(QPaintEvent* event)
 void DolphinColumnWidget::mousePressEvent(QMouseEvent* event)
 {
     requestActivation();
-    if (indexAt(event->pos()).isValid() && (event->button() == Qt::LeftButton)) {
+    if (!indexAt(event->pos()).isValid()) {
+        if (QApplication::mouseButtons() & Qt::MidButton) {
+            m_view->m_controller->replaceUrlByClipboard();
+        }
+    } else if (event->button() == Qt::LeftButton) {
         // TODO: see comment in DolphinIconsView::mousePressEvent()
         setState(QAbstractItemView::DraggingState);
     }
index 57d4a76fb6cad74dfda5749248caf840ed3b56bb..8a5ba55187b1792bd8b62c7d5ef479caa7304c3d 100644 (file)
@@ -22,6 +22,7 @@
 #include <kdirmodel.h>
 #include <QAbstractProxyModel>
 #include <QApplication>
+#include <QClipboard>
 
 DolphinController::DolphinController(DolphinView* dolphinView) :
     QObject(dolphinView),
@@ -133,6 +134,16 @@ void DolphinController::handleKeyPressEvent(QKeyEvent* event)
     }
 }
 
+void DolphinController::replaceUrlByClipboard()
+{
+    QClipboard* clipboard = QApplication::clipboard();
+    const QMimeData* mimeData = clipboard->mimeData();
+    if (mimeData->hasText()) {
+        const QString text = mimeData->text();
+        m_dolphinView->setUrl(KUrl(text));
+    }
+}
+
 KFileItem DolphinController::itemForIndex(const QModelIndex& index) const
 {
     Q_ASSERT(m_itemView != 0);
index 191bd1e6339d6bd1c1d329b34a3ef52189159257..d5e9325d360616bd932b5c4f89c931cae912bdf4 100644 (file)
@@ -65,6 +65,7 @@ class QWidget;
  * - handleKeyPressEvent()
  * - emitItemEntered()
  * - emitViewportEntered()
+ * - replaceUrlByClipboard()
  *
  * The communication of the abstract view to the view implementations is done by:
  * - setUrl()
@@ -212,6 +213,13 @@ public:
      */
     void handleKeyPressEvent(QKeyEvent* event);
 
+    /**
+     * Replaces the URL of the abstract Dolphin view  with the content
+     * of the clipboard as URL. If the clipboard contains no text,
+     * nothing will be done.
+     */
+    void replaceUrlByClipboard();
+
     /**
      * Returns the file item for the proxy index \a index of the view \a view.
      */
index b725b0da237451f7ea8fab7f9cd3a17febe1c5ce..932efcb1e1dee735fde1300c30bb0a5eee5447af 100644 (file)
@@ -206,6 +206,10 @@ void DolphinDetailsView::mousePressEvent(QMouseEvent* event)
     }
 
     if (!index.isValid() || (index.column() != DolphinModel::Name)) {
+        if (QApplication::mouseButtons() & Qt::MidButton) {
+            m_controller->replaceUrlByClipboard();
+        }
+
         const Qt::KeyboardModifiers modifier = QApplication::keyboardModifiers();
         if (!(modifier & Qt::ShiftModifier) && !(modifier & Qt::ControlModifier)) {
             clearSelection();
index a7b256d2be8ab261e1413e1516c6872fda959aff..3cb9b929d59786b66ac070d29b9c8f7c1877e1b2 100644 (file)
@@ -34,8 +34,6 @@
 
 #include <QAbstractProxyModel>
 #include <QApplication>
-#include <QPainter>
-#include <QPoint>
 #include <QScrollBar>
 
 DolphinIconsView::DolphinIconsView(QWidget* parent, DolphinController* controller) :
@@ -192,6 +190,9 @@ void DolphinIconsView::mousePressEvent(QMouseEvent* event)
     }
 
     if (!index.isValid()) {
+        if (QApplication::mouseButtons() & Qt::MidButton) {
+            m_controller->replaceUrlByClipboard();
+        }
         const Qt::KeyboardModifiers modifier = QApplication::keyboardModifiers();
         if (!(modifier & Qt::ShiftModifier) && !(modifier & Qt::ControlModifier)) {
             clearSelection();