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)),
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();
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) {
/**
* 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);
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*)));
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();
*/
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);
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