mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-19 00:11:21 +00:00
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
This commit is contained in:
parent
f9f4dbf005
commit
eaa0ff560b
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue