From: Peter Penz Date: Tue, 19 Jun 2007 18:58:30 +0000 (+0000) Subject: when requesting a context menu provide a URL for the viewport, because in the column... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/eaa0ff560b273d785d8f7524bc3ddc597ba14d96 when requesting a context menu provide a URL for the viewport, because in the column view this URL can differ from the navigator URL svn path=/trunk/KDE/kdebase/apps/; revision=677704 --- diff --git a/src/dolphincolumnview.cpp b/src/dolphincolumnview.cpp index 32a8553f9..3251f56c2 100644 --- a/src/dolphincolumnview.cpp +++ b/src/dolphincolumnview.cpp @@ -64,6 +64,7 @@ protected: virtual void dropEvent(QDropEvent* event); virtual void mousePressEvent(QMouseEvent* event); virtual void paintEvent(QPaintEvent* event); + virtual void contextMenuEvent(QContextMenuEvent* event); private: /** Used by ColumnWidget::setActive(). */ @@ -215,6 +216,12 @@ void ColumnWidget::paintEvent(QPaintEvent* event) } } +void ColumnWidget::contextMenuEvent(QContextMenuEvent* event) +{ + QListView::contextMenuEvent(event); + m_columnView->m_controller->triggerContextMenuRequest(event->pos(), m_url); +} + void ColumnWidget::activate() { const QColor bgColor = KColorScheme(KColorScheme::View).background(); @@ -338,12 +345,6 @@ QAbstractItemView* DolphinColumnView::createColumn(const QModelIndex& index) return view; } -void DolphinColumnView::contextMenuEvent(QContextMenuEvent* event) -{ - QColumnView::contextMenuEvent(event); - m_controller->triggerContextMenuRequest(event->pos()); -} - void DolphinColumnView::mousePressEvent(QMouseEvent* event) { m_controller->triggerActivation(); diff --git a/src/dolphincolumnview.h b/src/dolphincolumnview.h index 266e5ee97..06f9b887f 100644 --- a/src/dolphincolumnview.h +++ b/src/dolphincolumnview.h @@ -41,7 +41,6 @@ public: protected: virtual QAbstractItemView* createColumn(const QModelIndex& index); - virtual void contextMenuEvent(QContextMenuEvent* event); virtual void mousePressEvent(QMouseEvent* event); virtual void dragEnterEvent(QDragEnterEvent* event); virtual void dropEvent(QDropEvent* event); diff --git a/src/dolphincontroller.cpp b/src/dolphincontroller.cpp index 1831c15c3..413152522 100644 --- a/src/dolphincontroller.cpp +++ b/src/dolphincontroller.cpp @@ -34,10 +34,10 @@ DolphinController::~DolphinController() { } -void DolphinController::triggerContextMenuRequest(const QPoint& pos) +void DolphinController::triggerContextMenuRequest(const QPoint& pos, const KUrl& url) { emit activated(); - emit requestContextMenu(pos); + emit requestContextMenu(pos, url); } void DolphinController::triggerActivation() diff --git a/src/dolphincontroller.h b/src/dolphincontroller.h index aa0eab22f..c45c55980 100644 --- a/src/dolphincontroller.h +++ b/src/dolphincontroller.h @@ -60,7 +60,7 @@ public: inline void setUrl(const KUrl& url); inline const KUrl& url() const; - void triggerContextMenuRequest(const QPoint& pos); + void triggerContextMenuRequest(const QPoint& pos, const KUrl& url); void triggerActivation(); @@ -116,8 +116,10 @@ signals: * context menu should be opened. It is recommended * to get the corresponding model index from * this position. + * @param url URL of the viewport, if there is no valid model + * index on the given position. */ - void requestContextMenu(const QPoint& pos); + void requestContextMenu(const QPoint& pos, const KUrl& url); /** * Is emitted if the view has been activated by e. g. a mouse click. diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp index ba82fc901..3672fe18c 100644 --- a/src/dolphindetailsview.cpp +++ b/src/dolphindetailsview.cpp @@ -150,7 +150,7 @@ QStyleOptionViewItem DolphinDetailsView::viewOptions() const void DolphinDetailsView::contextMenuEvent(QContextMenuEvent* event) { QTreeView::contextMenuEvent(event); - m_controller->triggerContextMenuRequest(event->pos()); + m_controller->triggerContextMenuRequest(event->pos(), m_controller->url()); } void DolphinDetailsView::mousePressEvent(QMouseEvent* event) diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp index d2bac6b13..4a3bdfbbe 100644 --- a/src/dolphiniconsview.cpp +++ b/src/dolphiniconsview.cpp @@ -103,7 +103,7 @@ QStyleOptionViewItem DolphinIconsView::viewOptions() const void DolphinIconsView::contextMenuEvent(QContextMenuEvent* event) { KListView::contextMenuEvent(event); - m_controller->triggerContextMenuRequest(event->pos()); + m_controller->triggerContextMenuRequest(event->pos(), m_controller->url()); } void DolphinIconsView::mousePressEvent(QMouseEvent* event) diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index acd51d7d7..f3758ce25 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -89,8 +89,8 @@ DolphinView::DolphinView(QWidget* parent, m_controller = new DolphinController(this); m_controller->setUrl(url); - connect(m_controller, SIGNAL(requestContextMenu(const QPoint&)), - this, SLOT(openContextMenu(const QPoint&))); + connect(m_controller, SIGNAL(requestContextMenu(const QPoint&, const KUrl&)), + this, SLOT(openContextMenu(const QPoint&, const KUrl&))); connect(m_controller, SIGNAL(urlsDropped(const KUrl::List&, const QModelIndex&, QWidget*)), this, SLOT(dropUrls(const KUrl::List&, const QModelIndex&, QWidget*))); connect(m_controller, SIGNAL(sortingChanged(DolphinView::Sorting)), @@ -697,7 +697,7 @@ void DolphinView::changeSelection(const KFileItemList& selection) | QItemSelectionModel::Current); } -void DolphinView::openContextMenu(const QPoint& pos) +void DolphinView::openContextMenu(const QPoint& pos, const KUrl& url) { KFileItem* item = 0; @@ -706,7 +706,7 @@ void DolphinView::openContextMenu(const QPoint& pos) item = fileItem(index); } - emit requestContextMenu(item, url()); + emit requestContextMenu(item, url); } void DolphinView::dropUrls(const KUrl::List& urls, diff --git a/src/dolphinview.h b/src/dolphinview.h index 1a240be7a..0d8ffea19 100644 --- a/src/dolphinview.h +++ b/src/dolphinview.h @@ -413,9 +413,12 @@ private slots: /** * Opens the context menu on position \a pos. The position * is used to check whether the context menu is related to an - * item or to the viewport. + * item or to the viewport. If the context menu should be + * opened on the viewport, the URL \a url should be taken + * as viewport URL (the viewport URL can be different from + * DolphinView::url() for e. g. the column view). */ - void openContextMenu(const QPoint& pos); + void openContextMenu(const QPoint& pos, const KUrl& url); /** * Drops the URLs \a urls to the index \a index. \a source