summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2024-02-05 19:42:45 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-02-09 08:37:04 +0000
commitb47ad83d7c84c30506b47787b58cc26a4baa214c (patch)
treee280ab111757be2d69b6d31caa1141d5a99848e3
parent303586dd180a03697c332c451e8659209a21aa1e (diff)
Q(Plain)TextEdit: don't crash when using a style sheet
When using a style sheet, Q(Plain)TextEdit::isReadOnly() might get called during the initialization before d->control is properly initialized which lead to a crash. This amends 43ce457cbd093fc06d99b5ac833c789ef7c893d5. Fixes: QTBUG-121697 Fixes: QTBUG-121790 Task-number: QTBUG-1857 Change-Id: I15c357c9eef7f6559bcc2ad89033a3d8e7fcbfef Reviewed-by: David Faure <david.faure@kdab.com> (cherry picked from commit c6af5b9c12e1ea4cec007c5efe869636ce97a9d2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit e9b187a836974f05ba8f42eb72854a5effdc6c15) (cherry picked from commit ff1f12d5a0f57143e0e3c8d781bb3fdc884af7bc)
-rw-r--r--src/widgets/widgets/qplaintextedit.cpp2
-rw-r--r--src/widgets/widgets/qtextedit.cpp2
-rw-r--r--tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp10
-rw-r--r--tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp11
4 files changed, 23 insertions, 2 deletions
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp
index 134fc30964..087b7e4d21 100644
--- a/src/widgets/widgets/qplaintextedit.cpp
+++ b/src/widgets/widgets/qplaintextedit.cpp
@@ -2600,7 +2600,7 @@ void QPlainTextEdit::insertFromMimeData(const QMimeData *source)
bool QPlainTextEdit::isReadOnly() const
{
Q_D(const QPlainTextEdit);
- return !(d->control->textInteractionFlags() & Qt::TextEditable);
+ return !d->control || !(d->control->textInteractionFlags() & Qt::TextEditable);
}
void QPlainTextEdit::setReadOnly(bool ro)
diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp
index d403ba73d1..b0f14cfa75 100644
--- a/src/widgets/widgets/qtextedit.cpp
+++ b/src/widgets/widgets/qtextedit.cpp
@@ -2213,7 +2213,7 @@ void QTextEdit::insertFromMimeData(const QMimeData *source)
bool QTextEdit::isReadOnly() const
{
Q_D(const QTextEdit);
- return !(d->control->textInteractionFlags() & Qt::TextEditable);
+ return !d->control || !(d->control->textInteractionFlags() & Qt::TextEditable);
}
void QTextEdit::setReadOnly(bool ro)
diff --git a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
index 3a1d414376..e5a700298f 100644
--- a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
+++ b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
@@ -133,6 +133,7 @@ private slots:
void placeholderVisibility_data();
void placeholderVisibility();
void scrollBarSignals();
+ void dontCrashWithCss();
private:
void createSelection();
@@ -1944,5 +1945,14 @@ void tst_QPlainTextEdit::scrollBarSignals()
QTRY_COMPARE(spy.count(), 5);
}
+void tst_QPlainTextEdit::dontCrashWithCss()
+{
+ qApp->setStyleSheet("QWidget { font: 10pt; }");
+ QPlainTextEdit edit;
+ edit.show();
+ qApp->setStyleSheet(QString());
+}
+
+
QTEST_MAIN(tst_QPlainTextEdit)
#include "tst_qplaintextedit.moc"
diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
index 47e85cd839..ef9b0703b7 100644
--- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
+++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
@@ -198,6 +198,8 @@ private slots:
void nextFormatAfterEnterPressed_data();
void nextFormatAfterEnterPressed();
+ void dontCrashWithCss();
+
private:
void createSelection();
int blockCount() const;
@@ -3064,5 +3066,14 @@ void tst_QTextEdit::nextFormatAfterEnterPressed()
QCOMPARE(prevBlockCursor.charFormat().property(it.key()), it.value());
}
+void tst_QTextEdit::dontCrashWithCss()
+{
+ qApp->setStyleSheet("QWidget { font: 10pt; }");
+ QTextEdit edit;
+ edit.show();
+ qApp->setStyleSheet(QString());
+}
+
+
QTEST_MAIN(tst_QTextEdit)
#include "tst_qtextedit.moc"