From 1912c35d6d3f682e75cf47cf1dcdb0466aa2c382 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Tue, 20 Aug 2019 12:23:35 +0200 Subject: [PATCH] GUI: sysinfo: copy the whole Markdown text on Ctrl+C --- .../util/text_display_dialog.cpp | 25 ++++++++++++++++++- src/mkvtoolnix-gui/util/text_display_dialog.h | 4 +++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/mkvtoolnix-gui/util/text_display_dialog.cpp b/src/mkvtoolnix-gui/util/text_display_dialog.cpp index 631b0d225..c944544fc 100644 --- a/src/mkvtoolnix-gui/util/text_display_dialog.cpp +++ b/src/mkvtoolnix-gui/util/text_display_dialog.cpp @@ -1,6 +1,9 @@ #include "common/common_pch.h" #include +#include +#include +#include #include "common/markdown.h" #include "common/qt.h" @@ -14,6 +17,7 @@ class TextDisplayDialogPrivate { std::unique_ptr ui; QString m_text; + TextDisplayDialog::Format m_format{TextDisplayDialog::Format::Plain}; TextDisplayDialogPrivate() : ui{new Ui::TextDisplayDialog} @@ -30,6 +34,8 @@ TextDisplayDialog::TextDisplayDialog(QWidget *parent) // Setup UI controls. p->ui->setupUi(this); + p->ui->text->installEventFilter(this); + connect(p->ui->pbClose, &QPushButton::clicked, this, &TextDisplayDialog::accept); connect(p->ui->pbCopyToClipboard, &QPushButton::clicked, this, &TextDisplayDialog::copyToClipboard); } @@ -62,7 +68,8 @@ TextDisplayDialog::setText(QString const &text, break; } - p->m_text = text; + p->m_text = text; + p->m_format = format; return *this; } @@ -72,4 +79,20 @@ TextDisplayDialog::copyToClipboard() { QApplication::clipboard()->setText(p_func()->m_text); } +bool +TextDisplayDialog::eventFilter(QObject *o, + QEvent *e) { + auto p = p_func(); + + if ( (p->m_format == Format::Markdown) + && (o == p->ui->text) + && (e->type() == QEvent::KeyPress) + && (static_cast(e)->matches(QKeySequence::Copy))) { + copyToClipboard(); + return true; + } + + return QDialog::eventFilter(o, e); +} + }}} diff --git a/src/mkvtoolnix-gui/util/text_display_dialog.h b/src/mkvtoolnix-gui/util/text_display_dialog.h index 79847d2be..960c12d2b 100644 --- a/src/mkvtoolnix-gui/util/text_display_dialog.h +++ b/src/mkvtoolnix-gui/util/text_display_dialog.h @@ -4,6 +4,8 @@ #include +class QEvent; + namespace mtx { namespace gui { namespace Util { class TextDisplayDialogPrivate; @@ -29,6 +31,8 @@ public: TextDisplayDialog &setTitle(QString const &title); TextDisplayDialog &setText(QString const &text, Format format); + virtual bool eventFilter(QObject *o, QEvent *e) override; + public slots: virtual void copyToClipboard(); };