┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphincontroller.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-04-12 16:12:57 +0000
committerPeter Penz <[email protected]>2008-04-12 16:12:57 +0000
commit030a5d5433e0ae613f4de32d9d1277ac2405b8f4 (patch)
tree104b4d0aabbe2f86bb90870dbc9560272c176e13 /src/dolphincontroller.cpp
parent3b06c2120dad8efc79471a82b81c08f2d5834062 (diff)
when clicking with the middle mouse button on a directory, a new tab should be opened
svn path=/trunk/KDE/kdebase/apps/; revision=796116
Diffstat (limited to 'src/dolphincontroller.cpp')
-rw-r--r--src/dolphincontroller.cpp29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/dolphincontroller.cpp b/src/dolphincontroller.cpp
index a0aa1d895..7dd6133f0 100644
--- a/src/dolphincontroller.cpp
+++ b/src/dolphincontroller.cpp
@@ -21,11 +21,13 @@
#include <kdirmodel.h>
#include <QAbstractProxyModel>
+#include <QApplication>
DolphinController::DolphinController(DolphinView* dolphinView) :
QObject(dolphinView),
m_zoomInPossible(false),
m_zoomOutPossible(false),
+ m_openTab(false),
m_url(),
m_dolphinView(dolphinView),
m_itemView(0)
@@ -46,7 +48,16 @@ void DolphinController::setUrl(const KUrl& url)
void DolphinController::setItemView(QAbstractItemView* view)
{
+ if (m_itemView != 0) {
+ disconnect(m_itemView, SIGNAL(pressed(const QModelIndex&)),
+ this, SLOT(updateOpenTabState()));
+ }
+
m_itemView = view;
+
+ // TODO: this is a workaround until Qt-issue 176832 has been fixed
+ connect(m_itemView, SIGNAL(pressed(const QModelIndex&)),
+ this, SLOT(updateOpenTabState()));
}
void DolphinController::triggerUrlChangeRequest(const KUrl& url)
@@ -134,12 +145,21 @@ KFileItem DolphinController::itemForIndex(const QModelIndex& index) const
void DolphinController::triggerItem(const QModelIndex& index)
{
+ const bool openTab = m_openTab;
+ m_openTab = false;
+
const KFileItem item = itemForIndex(index);
if (index.isValid() && (index.column() == KDirModel::Name)) {
- emit itemTriggered(item);
+ if (openTab && item.isDir()) {
+ emit tabRequested(item.url());
+ } else {
+ emit itemTriggered(item);
+ }
} else {
m_itemView->clearSelection();
- emit itemEntered(item);
+ if (!openTab) {
+ emit itemEntered(item);
+ }
}
}
@@ -156,4 +176,9 @@ void DolphinController::emitViewportEntered()
emit viewportEntered();
}
+void DolphinController::updateOpenTabState()
+{
+ m_openTab = QApplication::mouseButtons() & Qt::MidButton;
+}
+
#include "dolphincontroller.moc"