gui: Avoid pathological QT text/markdown behavior...

during text selection by only setting plaintext mime data.

Github-Pull: https://github.com/bitcoin-core/gui/pull/886
Rebased-From: 6a371b70c8
This commit is contained in:
David Gumberg
2025-09-03 16:00:31 -07:00
committed by fanquake
parent 9be27b86c8
commit 6b19ede1a5
2 changed files with 24 additions and 1 deletions

View File

@@ -573,7 +573,7 @@
</layout> </layout>
</item> </item>
<item> <item>
<widget class="QTextEdit" name="messagesWidget"> <widget class="PlainCopyTextEdit" name="messagesWidget">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
@@ -1868,6 +1868,10 @@
<slot>clear()</slot> <slot>clear()</slot>
</slots> </slots>
</customwidget> </customwidget>
<customwidget>
<class>PlainCopyTextEdit</class>
<extends>QTextEdit</extends>
</customwidget>
</customwidgets> </customwidgets>
<resources> <resources>
<include location="../bitcoin.qrc"/> <include location="../bitcoin.qrc"/>

View File

@@ -15,6 +15,9 @@
#include <QByteArray> #include <QByteArray>
#include <QCompleter> #include <QCompleter>
#include <QMimeData>
#include <QTextDocumentFragment>
#include <QTextEdit>
#include <QThread> #include <QThread>
#include <QWidget> #include <QWidget>
@@ -191,4 +194,20 @@ private Q_SLOTS:
void updateAlerts(const QString& warnings); void updateAlerts(const QString& warnings);
}; };
/**
* A version of QTextEdit that only populates plaintext mime data from a
* selection, this avoids some bad behavior in QT's HTML->Markdown conversion.
*/
class PlainCopyTextEdit : public QTextEdit {
Q_OBJECT
public:
using QTextEdit::QTextEdit;
protected:
QMimeData* createMimeDataFromSelection() const override {
auto md = new QMimeData();
md->setText(textCursor().selection().toPlainText());
return md;
}
};
#endif // BITCOIN_QT_RPCCONSOLE_H #endif // BITCOIN_QT_RPCCONSOLE_H