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(). */
}
}
+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();
return view;
}
-void DolphinColumnView::contextMenuEvent(QContextMenuEvent* event)
-{
- QColumnView::contextMenuEvent(event);
- m_controller->triggerContextMenuRequest(event->pos());
-}
-
void DolphinColumnView::mousePressEvent(QMouseEvent* event)
{
m_controller->triggerActivation();
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);
{
}
-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()
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();
* 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.
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)
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)
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)),
| QItemSelectionModel::Current);
}
-void DolphinView::openContextMenu(const QPoint& pos)
+void DolphinView::openContextMenu(const QPoint& pos, const KUrl& url)
{
KFileItem* item = 0;
item = fileItem(index);
}
- emit requestContextMenu(item, url());
+ emit requestContextMenu(item, url);
}
void DolphinView::dropUrls(const KUrl::List& urls,
/**
* 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