From ac5736e558ea8806ee409c213ad1af3a93242684 Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Thu, 18 Jun 2009 18:09:08 +0200 Subject: [PATCH] Add a copy full path to clipboard to open edtiors combobox As requested on irc, and another common IDE has it at the same place. I wonder whether we should have more options in that context menu. I mainly put this in, because we don't have a good way to copy that full path and I don't see a particular nice way to add it. Though I dislike that it is only available in the context menu. --- .../coreplugin/editormanager/editorview.cpp | 18 +++++++++++++++++- .../coreplugin/editormanager/editorview.h | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/editormanager/editorview.cpp b/src/plugins/coreplugin/editormanager/editorview.cpp index 633cc933971..a3f02f8c715 100644 --- a/src/plugins/coreplugin/editormanager/editorview.cpp +++ b/src/plugins/coreplugin/editormanager/editorview.cpp @@ -50,6 +50,9 @@ #include <QtGui/QStyleOption> #include <QtGui/QToolBar> #include <QtGui/QToolButton> +#include <QtGui/QMenu> +#include <QtGui/QClipboard> + #ifdef Q_WS_MAC #include <qmacstyle_mac.h> #endif @@ -341,6 +344,7 @@ EditorView::EditorView(EditorModel *model, QWidget *parent) : m_editorList->setMinimumContentsLength(20); m_editorList->setModel(m_model); m_editorList->setMaxVisibleItems(40); + m_editorList->setContextMenuPolicy(Qt::CustomContextMenu); QToolBar *editorListToolBar = new QToolBar; @@ -383,6 +387,7 @@ EditorView::EditorView(EditorModel *model, QWidget *parent) : tl->addWidget(top); connect(m_editorList, SIGNAL(activated(int)), this, SLOT(listSelectionActivated(int))); + connect(m_editorList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(listContextMenu(QPoint))); connect(m_lockButton, SIGNAL(clicked()), this, SLOT(makeEditorWritable())); connect(m_closeButton, SIGNAL(clicked()), this, SLOT(closeView()), Qt::QueuedConnection); } @@ -659,7 +664,18 @@ void EditorView::listSelectionActivated(int index) } } - +void EditorView::listContextMenu(QPoint pos) +{ + QModelIndex index = m_model->index(m_editorList->currentIndex(), 0); + QString fileName = m_model->data(index, Qt::UserRole + 1).toString(); + if (fileName.isEmpty()) + return; + QMenu menu; + menu.addAction(tr("Copy full path to clipboard")); + if (menu.exec(m_editorList->mapToGlobal(pos))) { + QApplication::clipboard()->setText(fileName); + } +} SplitterOrView::SplitterOrView(Internal::EditorModel *model) { diff --git a/src/plugins/coreplugin/editormanager/editorview.h b/src/plugins/coreplugin/editormanager/editorview.h index 54ec9cf07ef..5e9ce5fbe05 100644 --- a/src/plugins/coreplugin/editormanager/editorview.h +++ b/src/plugins/coreplugin/editormanager/editorview.h @@ -149,6 +149,7 @@ private slots: void checkEditorStatus(); void makeEditorWritable(); void listSelectionActivated(int index); + void listContextMenu(QPoint); private: void updateToolBar(IEditor *editor); -- GitLab