Debugger: Use new clipboard setting convenience

Change-Id: I4bbbff708287a0999c8009b6c2bd91967ee63808
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
hjk
2022-06-20 11:42:24 +02:00
parent 2f54c9a364
commit c3dcc1ee38
4 changed files with 13 additions and 26 deletions

View File

@@ -30,12 +30,12 @@
#include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/editormanager.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/stringutils.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
#include <QApplication>
#include <QAbstractTextDocumentLayout> #include <QAbstractTextDocumentLayout>
#include <QAction> #include <QAction>
#include <QApplication>
#include <QClipboard>
#include <QContextMenuEvent> #include <QContextMenuEvent>
#include <QFileInfo> #include <QFileInfo>
#include <QHeaderView> #include <QHeaderView>
@@ -54,12 +54,12 @@ DetailedErrorView::DetailedErrorView(QWidget *parent) :
m_copyAction->setIcon(Utils::Icons::COPY.icon()); m_copyAction->setIcon(Utils::Icons::COPY.icon());
m_copyAction->setShortcut(QKeySequence::Copy); m_copyAction->setShortcut(QKeySequence::Copy);
m_copyAction->setShortcutContext(Qt::WidgetWithChildrenShortcut); m_copyAction->setShortcutContext(Qt::WidgetWithChildrenShortcut);
connect(m_copyAction, &QAction::triggered, [this] { connect(m_copyAction, &QAction::triggered, this, [this] {
const QModelIndexList selectedRows = selectionModel()->selectedRows(); const QModelIndexList selectedRows = selectionModel()->selectedRows();
QStringList data; QStringList data;
for (const QModelIndex &index : selectedRows) for (const QModelIndex &index : selectedRows)
data << model()->data(index, FullTextRole).toString(); data << model()->data(index, FullTextRole).toString();
QApplication::clipboard()->setText(data.join('\n')); Utils::setClipboardAndSelection(data.join('\n'));
}); });
connect(this, &QAbstractItemView::clicked, [](const QModelIndex &index) { connect(this, &QAbstractItemView::clicked, [](const QModelIndex &index) {
if (index.column() == LocationColumn) { if (index.column() == LocationColumn) {

View File

@@ -30,14 +30,15 @@
#include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/manhattanstyle.h> #include <coreplugin/manhattanstyle.h>
#include <qtsupport/baseqtversion.h> #include <qtsupport/baseqtversion.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/stringutils.h>
#include <QAction> #include <QAction>
#include <QMenu> #include <QMenu>
#include <QMouseEvent> #include <QMouseEvent>
#include <QPainter> #include <QPainter>
#include <QApplication> #include <QApplication>
#include <QClipboard>
#include <QAbstractProxyModel> #include <QAbstractProxyModel>
#include <QFileInfo> #include <QFileInfo>
#include <QScrollBar> #include <QScrollBar>
@@ -204,8 +205,7 @@ void ConsoleView::copyToClipboard(const QModelIndex &index)
contents = QString::fromLatin1("%1 %2: %3").arg(contents).arg(filePath).arg( contents = QString::fromLatin1("%1 %2: %3").arg(contents).arg(filePath).arg(
model()->data(index, ConsoleItem::LineRole).toString()); model()->data(index, ConsoleItem::LineRole).toString());
} }
QClipboard *cb = QApplication::clipboard(); Utils::setClipboardAndSelection(contents);
cb->setText(contents);
} }
bool ConsoleView::canShowItemInTextEditor(const QModelIndex &index) bool ConsoleView::canShowItemInTextEditor(const QModelIndex &index)

View File

@@ -26,7 +26,6 @@
#include "debuggertooltipmanager.h" #include "debuggertooltipmanager.h"
#include "debuggeractions.h" #include "debuggeractions.h"
#include "debuggercore.h"
#include "debuggerengine.h" #include "debuggerengine.h"
#include "debuggerinternalconstants.h" #include "debuggerinternalconstants.h"
#include "debuggermainwindow.h" #include "debuggermainwindow.h"
@@ -34,7 +33,6 @@
#include "sourceutils.h" #include "sourceutils.h"
#include "stackhandler.h" #include "stackhandler.h"
#include "watchhandler.h" #include "watchhandler.h"
#include "watchwindow.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
@@ -53,6 +51,7 @@
#include <utils/porting.h> #include <utils/porting.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/tooltip/tooltip.h> #include <utils/tooltip/tooltip.h>
#include <utils/stringutils.h>
#include <utils/treemodel.h> #include <utils/treemodel.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
@@ -577,17 +576,14 @@ DebuggerToolTipWidget::DebuggerToolTipWidget()
mainLayout->addWidget(toolBar); mainLayout->addWidget(toolBar);
mainLayout->addWidget(treeView); mainLayout->addWidget(treeView);
connect(copyButton, &QAbstractButton::clicked, [this] { connect(copyButton, &QAbstractButton::clicked, this, [this] {
QString text; QString text;
QTextStream str(&text); QTextStream str(&text);
model.forAllItems([&str](ToolTipWatchItem *item) { model.forAllItems([&str](ToolTipWatchItem *item) {
str << QString(item->level(), '\t') str << QString(item->level(), '\t')
<< item->name << '\t' << item->value << '\t' << item->type << '\n'; << item->name << '\t' << item->value << '\t' << item->type << '\n';
}); });
QClipboard *clipboard = QApplication::clipboard(); setClipboardAndSelection(text);
if (clipboard->supportsSelection())
clipboard->setText(text, QClipboard::Selection);
clipboard->setText(text, QClipboard::Clipboard);
}); });
connect(treeView, &QTreeView::expanded, &model, &ToolTipModel::expandNode); connect(treeView, &QTreeView::expanded, &model, &ToolTipModel::expandNode);

View File

@@ -40,9 +40,8 @@
#include <utils/basetreeview.h> #include <utils/basetreeview.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/stringutils.h>
#include <QApplication>
#include <QClipboard>
#include <QContextMenuEvent> #include <QContextMenuEvent>
#include <QDebug> #include <QDebug>
#include <QDir> #include <QDir>
@@ -410,14 +409,6 @@ static QString selectedText(QWidget *widget, bool useAll)
return str; return str;
} }
static void copyTextToClipboard(const QString &str)
{
QClipboard *clipboard = QApplication::clipboard();
if (clipboard->supportsSelection())
clipboard->setText(str, QClipboard::Selection);
clipboard->setText(str, QClipboard::Clipboard);
}
// Write stack frames as task file for displaying it in the build issues pane. // Write stack frames as task file for displaying it in the build issues pane.
void StackHandler::saveTaskFile() void StackHandler::saveTaskFile()
{ {
@@ -458,11 +449,11 @@ bool StackHandler::contextMenuEvent(const ItemViewEvent &ev)
menu->addAction(debuggerSettings()->expandStack.action()); menu->addAction(debuggerSettings()->expandStack.action());
addAction(this, menu, tr("Copy Contents to Clipboard"), true, [ev] { addAction(this, menu, tr("Copy Contents to Clipboard"), true, [ev] {
copyTextToClipboard(selectedText(ev.view(), true)); setClipboardAndSelection(selectedText(ev.view(), true));
}); });
addAction(this, menu, tr("Copy Selection to Clipboard"), true, [ev] { addAction(this, menu, tr("Copy Selection to Clipboard"), true, [ev] {
copyTextToClipboard(selectedText(ev.view(), false)); setClipboardAndSelection(selectedText(ev.view(), false));
}); });
addAction(this, menu, tr("Save as Task File..."), true, [this] { saveTaskFile(); }); addAction(this, menu, tr("Save as Task File..."), true, [this] { saveTaskFile(); });