From 95ac842f2973b64380a93fbe5e46e94646bf5a38 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sun, 11 May 2008 21:51:04 +0000 Subject: [PATCH] A middle click on an item of the tree view panel should open the URL inside a new tab. TODO: cleanup some obsolete signals/structure inside SidebarPage and TreeviewSidebarPage. svn path=/trunk/KDE/kdebase/apps/; revision=806635 --- src/dolphinmainwindow.cpp | 4 ++-- src/sidebarpage.h | 24 ------------------------ src/treeviewsidebarpage.cpp | 11 ++++++++++- src/treeviewsidebarpage.h | 24 ++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 149f58b0f..51cb22e9d 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -1046,8 +1046,8 @@ void DolphinMainWindow::setupDockWidgets() addDockWidget(Qt::LeftDockWidgetArea, treeViewDock); connect(this, SIGNAL(urlChanged(KUrl)), treeWidget, SLOT(setUrl(KUrl))); - connect(treeWidget, SIGNAL(changeUrl(KUrl)), - this, SLOT(changeUrl(KUrl))); + connect(treeWidget, SIGNAL(changeUrl(KUrl, Qt::MouseButtons)), + this, SLOT(handlePlacesClick(KUrl, Qt::MouseButtons))); connect(treeWidget, SIGNAL(changeSelection(KFileItemList)), this, SLOT(changeSelection(KFileItemList))); connect(treeWidget, SIGNAL(urlsDropped(KUrl::List, KUrl)), diff --git a/src/sidebarpage.h b/src/sidebarpage.h index 697e8de58..1c6b26be3 100644 --- a/src/sidebarpage.h +++ b/src/sidebarpage.h @@ -54,30 +54,6 @@ public slots: */ virtual void setSelection(const KFileItemList& selection); -signals: - /** - * This signal is emitted when the sidebar requests an URL-change in the - * currently active file-management view. The view is not requested to - * accept this change, if it is accepted the sidebar will be informed via - * the setUrl() slot. - */ - void changeUrl(const KUrl& url); - - /** - * This signal is emitted when the sidebar requests a change in the - * current selection. The file-management view recieving this signal is - * not required to select all listed files, limiting the selection to - * e.g. the current folder. The new selection will be reported via the - * setSelection slot. - */ - void changeSelection(const KFileItemList& selection); - - /** - * This signal is emitted whenever a drop action on this widget needs the - * MainWindow's attention. - */ - void urlsDropped(const KUrl::List& urls, const KUrl& destination); - private: KUrl m_url; KFileItemList m_currentSelection; diff --git a/src/treeviewsidebarpage.cpp b/src/treeviewsidebarpage.cpp index 84991bc43..d5f5f4053 100644 --- a/src/treeviewsidebarpage.cpp +++ b/src/treeviewsidebarpage.cpp @@ -31,6 +31,7 @@ #include #include +#include #include #include #include @@ -41,6 +42,7 @@ TreeViewSidebarPage::TreeViewSidebarPage(QWidget* parent) : SidebarPage(parent), m_setLeafVisible(false), + m_mouseButtons(Qt::NoButton), m_dirLister(0), m_dolphinModel(0), m_proxyModel(0), @@ -135,6 +137,8 @@ void TreeViewSidebarPage::showEvent(QShowEvent* event) this, SLOT(updateActiveView(const QModelIndex&))); connect(m_treeView, SIGNAL(urlsDropped(const KUrl::List&, const QModelIndex&)), this, SLOT(dropUrls(const KUrl::List&, const QModelIndex&))); + connect(m_treeView, SIGNAL(pressed(const QModelIndex&)), + this, SLOT(updateMouseButtons())); QVBoxLayout* layout = new QVBoxLayout(this); layout->setMargin(0); @@ -166,7 +170,7 @@ void TreeViewSidebarPage::updateActiveView(const QModelIndex& index) const QModelIndex dirIndex = m_proxyModel->mapToSource(index); const KFileItem item = m_dolphinModel->itemForIndex(dirIndex); if (!item.isNull()) { - emit changeUrl(item.url()); + emit changeUrl(item.url(), m_mouseButtons); } } @@ -238,6 +242,11 @@ void TreeViewSidebarPage::scrollToLeaf() } } +void TreeViewSidebarPage::updateMouseButtons() +{ + m_mouseButtons = QApplication::mouseButtons(); +} + void TreeViewSidebarPage::loadTree(const KUrl& url) { Q_ASSERT(m_dirLister != 0); diff --git a/src/treeviewsidebarpage.h b/src/treeviewsidebarpage.h index 336d2a6ca..ba820ff20 100644 --- a/src/treeviewsidebarpage.h +++ b/src/treeviewsidebarpage.h @@ -51,6 +51,27 @@ public: void setShowHiddenFiles(bool show); bool showHiddenFiles() const; +signals: + /** + * Is emitted if the an URL change is requested. + */ + void changeUrl(const KUrl& url, Qt::MouseButtons buttons); + + /** + * This signal is emitted when the sidebar requests a change in the + * current selection. The file-management view recieving this signal is + * not required to select all listed files, limiting the selection to + * e.g. the current folder. The new selection will be reported via the + * setSelection slot. + */ + void changeSelection(const KFileItemList& selection); + + /** + * This signal is emitted whenever a drop action on this widget needs the + * MainWindow's attention. + */ + void urlsDropped(const KUrl::List& urls, const KUrl& destination); + public slots: /** * Changes the current selection inside the tree to \a url. @@ -107,6 +128,8 @@ private slots: */ void scrollToLeaf(); + void updateMouseButtons(); + private: /** * Initializes the base URL of the tree and expands all @@ -124,6 +147,7 @@ private: private: bool m_setLeafVisible; + Qt::MouseButtons m_mouseButtons; KDirLister* m_dirLister; DolphinModel* m_dolphinModel; DolphinSortFilterProxyModel* m_proxyModel; -- 2.47.3