Skip to content

Commit 6a371b7

Browse files
committed
gui: Avoid pathological QT text/markdown behavior...
during text selection by only setting plaintext mime data.
1 parent 689a321 commit 6a371b7

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/qt/forms/debugwindow.ui

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -573,7 +573,7 @@
573573
</layout>
574574
</item>
575575
<item>
576-
<widget class="QTextEdit" name="messagesWidget">
576+
<widget class="PlainCopyTextEdit" name="messagesWidget">
577577
<property name="minimumSize">
578578
<size>
579579
<width>0</width>
@@ -1868,6 +1868,10 @@
18681868
<slot>clear()</slot>
18691869
</slots>
18701870
</customwidget>
1871+
<customwidget>
1872+
<class>PlainCopyTextEdit</class>
1873+
<extends>QTextEdit</extends>
1874+
</customwidget>
18711875
</customwidgets>
18721876
<resources>
18731877
<include location="../bitcoin.qrc"/>

src/qt/rpcconsole.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515

1616
#include <QByteArray>
1717
#include <QCompleter>
18+
#include <QMimeData>
19+
#include <QTextDocumentFragment>
20+
#include <QTextEdit>
1821
#include <QThread>
1922
#include <QWidget>
2023

@@ -191,4 +194,20 @@ private Q_SLOTS:
191194
void updateAlerts(const QString& warnings);
192195
};
193196

197+
/**
198+
* A version of QTextEdit that only populates plaintext mime data from a
199+
* selection, this avoids some bad behavior in QT's HTML->Markdown conversion.
200+
*/
201+
class PlainCopyTextEdit : public QTextEdit {
202+
Q_OBJECT
203+
public:
204+
using QTextEdit::QTextEdit;
205+
protected:
206+
QMimeData* createMimeDataFromSelection() const override {
207+
auto md = new QMimeData();
208+
md->setText(textCursor().selection().toPlainText());
209+
return md;
210+
}
211+
};
212+
194213
#endif // BITCOIN_QT_RPCCONSOLE_H

0 commit comments

Comments
 (0)