┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2012-03-19 16:47:11 +0100
committerPeter Penz <[email protected]>2012-03-19 16:53:53 +0100
commit5798e081f52371b9fd91cf0348cc946ebcc28a4a (patch)
tree2e393e81c00b14fbfa6bb31d28ed9b8feb96486f
parent476128f01aba48f6519ead627d39175443f59758 (diff)
Let additional mouse buttons trigger history navigation
Thanks to Sebastian Dörner for the patch! REVIEW: 101335 BUG: 181823 FIXED-IN: 4.9
-rw-r--r--src/dolphinmainwindow.cpp4
-rw-r--r--src/kitemviews/kitemlistcontroller.cpp8
-rw-r--r--src/kitemviews/kitemlistcontroller.h10
-rw-r--r--src/views/dolphinview.cpp18
-rw-r--r--src/views/dolphinview.h13
5 files changed, 43 insertions, 10 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 4c551b2c3..947db7703 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -2123,6 +2123,10 @@ void DolphinMainWindow::connectViewSignals(DolphinViewContainer* container)
this, SLOT(enableStopAction()));
connect(view, SIGNAL(finishedPathLoading(KUrl)),
this, SLOT(disableStopAction()));
+ connect(view, SIGNAL(goBackRequested()),
+ this, SLOT(goBack()));
+ connect(view, SIGNAL(goForwardRequested()),
+ this, SLOT(goForward()));
const KUrlNavigator* navigator = container->urlNavigator();
connect(navigator, SIGNAL(urlChanged(KUrl)),
diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp
index 1ad760ae2..35d503867 100644
--- a/src/kitemviews/kitemlistcontroller.cpp
+++ b/src/kitemviews/kitemlistcontroller.cpp
@@ -454,9 +454,7 @@ bool KItemListController::mousePressEvent(QGraphicsSceneMouseEvent* event, const
m_pressedMousePos = transform.map(event->pos());
m_pressedIndex = m_view->itemAt(m_pressedMousePos);
- if (m_pressedIndex >= 0) {
- emit itemPressed(m_pressedIndex, event->button());
- }
+ emit mouseButtonPressed(m_pressedIndex, event->buttons());
if (m_view->isAboveExpansionToggle(m_pressedIndex, m_pressedMousePos)) {
m_selectionManager->endAnchoredSelection();
@@ -637,9 +635,7 @@ bool KItemListController::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, con
return false;
}
- if (m_pressedIndex >= 0) {
- emit itemReleased(m_pressedIndex, event->button());
- }
+ emit mouseButtonReleased(m_pressedIndex, event->buttons());
const bool isAboveSelectionToggle = m_view->isAboveSelectionToggle(m_pressedIndex, m_pressedMousePos);
if (isAboveSelectionToggle) {
diff --git a/src/kitemviews/kitemlistcontroller.h b/src/kitemviews/kitemlistcontroller.h
index 9ac4c76e6..b44fcca3c 100644
--- a/src/kitemviews/kitemlistcontroller.h
+++ b/src/kitemviews/kitemlistcontroller.h
@@ -177,14 +177,18 @@ signals:
/**
* Is emitted if a mouse-button has been pressed above an item.
+ * If the index is smaller than 0, the mouse-button has been pressed
+ * above the viewport.
*/
- void itemPressed(int index, Qt::MouseButton button);
+ void mouseButtonPressed(int itemIndex, Qt::MouseButtons buttons);
/**
* Is emitted if a mouse-button has been released above an item.
- * It is assured that the signal itemPressed() has been emitted before.
+ * It is assured that the signal mouseButtonPressed() has been emitted before.
+ * If the index is smaller than 0, the mouse-button has been pressed
+ * above the viewport.
*/
- void itemReleased(int index, Qt::MouseButton button);
+ void mouseButtonReleased(int itemIndex, Qt::MouseButtons buttons);
void itemExpansionToggleClicked(int index);
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp
index 29a132184..75561a9c6 100644
--- a/src/views/dolphinview.cpp
+++ b/src/views/dolphinview.cpp
@@ -142,7 +142,7 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
connect(controller, SIGNAL(itemContextMenuRequested(int,QPointF)), this, SLOT(slotItemContextMenuRequested(int,QPointF)));
connect(controller, SIGNAL(viewContextMenuRequested(QPointF)), this, SLOT(slotViewContextMenuRequested(QPointF)));
connect(controller, SIGNAL(headerContextMenuRequested(QPointF)), this, SLOT(slotHeaderContextMenuRequested(QPointF)));
- connect(controller, SIGNAL(itemPressed(int,Qt::MouseButton)), this, SLOT(hideToolTip()));
+ connect(controller, SIGNAL(mouseButtonPressed(int,Qt::MouseButtons)), this, SLOT(slotMouseButtonPressed(int,Qt::MouseButtons)));
connect(controller, SIGNAL(itemHovered(int)), this, SLOT(slotItemHovered(int)));
connect(controller, SIGNAL(itemUnhovered(int)), this, SLOT(slotItemUnhovered(int)));
connect(controller, SIGNAL(itemDropEvent(int,QGraphicsSceneDragDropEvent*)), this, SLOT(slotItemDropEvent(int,QGraphicsSceneDragDropEvent*)));
@@ -889,6 +889,22 @@ void DolphinView::slotModelChanged(KItemModelBase* current, KItemModelBase* prev
m_versionControlObserver->setModel(fileItemModel);
}
+void DolphinView::slotMouseButtonPressed(int itemIndex, Qt::MouseButtons buttons)
+{
+ hideToolTip();
+
+ if (itemIndex < 0) {
+ // Trigger the history navigation only when clicking on the viewport:
+ // Above an item the XButtons provide a simple way to select items in
+ // the singleClick mode.
+ if (buttons & Qt::XButton1) {
+ emit goBackRequested();
+ } else if (buttons & Qt::XButton2) {
+ emit goForwardRequested();
+ }
+ }
+}
+
void DolphinView::slotSelectionChanged(const QSet<int>& current, const QSet<int>& previous)
{
const int currentCount = current.count();
diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h
index 628ab2dc5..48d0646c4 100644
--- a/src/views/dolphinview.h
+++ b/src/views/dolphinview.h
@@ -511,6 +511,18 @@ signals:
*/
void writeStateChanged(bool isFolderWritable);
+ /**
+ * Is emitted if the URL should be changed to the previous URL of the
+ * history (e.g. because the "back"-mousebutton has been pressed).
+ */
+ void goBackRequested();
+
+ /**
+ * Is emitted if the URL should be changed to the next URL of the
+ * history (e.g. because the "next"-mousebutton has been pressed).
+ */
+ void goForwardRequested();
+
protected:
/** Changes the zoom level if Control is pressed during a wheel event. */
virtual void wheelEvent(QWheelEvent* event);
@@ -535,6 +547,7 @@ private slots:
void slotItemUnhovered(int index);
void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event);
void slotModelChanged(KItemModelBase* current, KItemModelBase* previous);
+ void slotMouseButtonPressed(int itemIndex, Qt::MouseButtons buttons);
/**
* Emits the signal \a selectionChanged() with a small delay. This is