#include <konq_operations.h>
DolphinFilePlacesView::DolphinFilePlacesView(QWidget* parent) :
- KFilePlacesView(parent)
+ KFilePlacesView(parent),
+ m_mouseButtons(Qt::NoButton)
{
setDropOnPlaceEnabled(true);
connect(this, SIGNAL(urlsDropped(const KUrl&, QDropEvent*, QWidget*)),
this, SLOT(slotUrlsDropped(const KUrl&, QDropEvent*, QWidget*)));
+ connect(this, SIGNAL(urlChanged(const KUrl&)),
+ this, SLOT(emitExtendedUrlChangedSignal(const KUrl&)));
}
DolphinFilePlacesView::~DolphinFilePlacesView()
{
}
+void DolphinFilePlacesView::mousePressEvent(QMouseEvent* event)
+{
+ m_mouseButtons = event->buttons();
+ KFilePlacesView::mousePressEvent(event);
+}
+
void DolphinFilePlacesView::slotUrlsDropped(const KUrl& dest, QDropEvent* event, QWidget* parent)
{
const KUrl::List urls = KUrl::List::fromMimeData(event->mimeData());
dropController.dropUrls(urls, dest);
}
+void DolphinFilePlacesView::emitExtendedUrlChangedSignal(const KUrl& url)
+{
+ emit urlChanged(url, m_mouseButtons);
+}
+
#include "dolphinfileplacesview.moc"
DolphinFilePlacesView(QWidget* parent);
virtual ~DolphinFilePlacesView();
+signals:
+ void urlChanged(const KUrl& url, Qt::MouseButtons buttons);
+
+protected:
+ virtual void mousePressEvent(QMouseEvent* event);
+
private slots:
void slotUrlsDropped(const KUrl& dest, QDropEvent* event, QWidget* parent);
+ void emitExtendedUrlChangedSignal(const KUrl& url);
+
+private:
+ Qt::MouseButtons m_mouseButtons;
};
#endif // DOLPHINFILEPLACESVIEW_H
}
}
+void DolphinMainWindow::handlePlacesClick(const KUrl& url, Qt::MouseButtons buttons)
+{
+ if (buttons & Qt::MidButton) {
+ openNewTab(url);
+ m_tabBar->setCurrentIndex(m_viewTab.count() - 1);
+ } else {
+ changeUrl(url);
+ }
+}
+
void DolphinMainWindow::init()
{
DolphinSettings& settings = DolphinSettings::instance();
actionCollection()->addAction("show_places_panel", placesDock->toggleViewAction());
addDockWidget(Qt::LeftDockWidgetArea, placesDock);
- connect(placesView, SIGNAL(urlChanged(KUrl)),
- this, SLOT(changeUrl(KUrl)));
+ connect(placesView, SIGNAL(urlChanged(KUrl, Qt::MouseButtons)),
+ this, SLOT(handlePlacesClick(KUrl, Qt::MouseButtons)));
connect(this, SIGNAL(urlChanged(KUrl)),
placesView, SLOT(setUrl(KUrl)));
}
*/
void openTabContextMenu(int index, const QPoint& pos);
+ /**
+ * Handles a click on a places item: if the middle mouse button is
+ * clicked, a new tab is opened for \a url, otherwise the current
+ * view is replaced by \a url.
+ */
+ void handlePlacesClick(const KUrl& url, Qt::MouseButtons buttons);
+
private:
DolphinMainWindow(int id);
void init();