summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/widgets/widgets/qstatusbar.cpp5
-rw-r--r--tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp27
2 files changed, 30 insertions, 2 deletions
diff --git a/src/widgets/widgets/qstatusbar.cpp b/src/widgets/widgets/qstatusbar.cpp
index 86fd10699c..7b1d66cf0d 100644
--- a/src/widgets/widgets/qstatusbar.cpp
+++ b/src/widgets/widgets/qstatusbar.cpp
@@ -551,8 +551,6 @@ void QStatusBar::showMessage(const QString &message, int timeout)
{
Q_D(QStatusBar);
- d->tempItem = message;
-
if (timeout > 0) {
if (!d->timer) {
d->timer = new QTimer(this);
@@ -563,6 +561,9 @@ void QStatusBar::showMessage(const QString &message, int timeout)
delete d->timer;
d->timer = 0;
}
+ if (d->tempItem == message)
+ return;
+ d->tempItem = message;
hideOrShow();
}
diff --git a/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp b/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp
index 3bdf583153..a301d51c4c 100644
--- a/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp
+++ b/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp
@@ -74,6 +74,7 @@ private slots:
void task194017_hiddenWidget();
void QTBUG4334_hiddenOnMaximizedWindow();
void QTBUG25492_msgtimeout();
+ void messageChangedSignal();
private:
QStatusBar *testWidget;
@@ -95,6 +96,8 @@ void tst_QStatusBar::init()
QWidget *item1 = new QWidget(testWidget);
testWidget->addWidget(item1);
+ // currentMessage needs to be null as the code relies on this
+ currentMessage = QString();
}
void tst_QStatusBar::cleanup()
@@ -316,6 +319,30 @@ void tst_QStatusBar::QTBUG25492_msgtimeout()
QCOMPARE(testWidget->currentMessage(), currentMessage);
}
+void tst_QStatusBar::messageChangedSignal()
+{
+ QVERIFY(testWidget->currentMessage().isNull());
+ QVERIFY(currentMessage.isNull());
+ testWidget->show();
+
+ QSignalSpy spy(testWidget, SIGNAL(messageChanged(QString)));
+ testWidget->showMessage("Ready", 0);
+ QCOMPARE(testWidget->currentMessage(), QString("Ready"));
+ QCOMPARE(testWidget->currentMessage(), currentMessage);
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.takeFirst().at(0).toString(), currentMessage);
+ testWidget->clearMessage();
+ QCOMPARE(testWidget->currentMessage(), QString());
+ QCOMPARE(testWidget->currentMessage(), currentMessage);
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.takeFirst().at(0).toString(), currentMessage);
+ testWidget->showMessage("Ready", 0);
+ testWidget->showMessage("Ready", 0);
+ QCOMPARE(testWidget->currentMessage(), QString("Ready"));
+ QCOMPARE(testWidget->currentMessage(), currentMessage);
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.takeFirst().at(0).toString(), currentMessage);
+}
QTEST_MAIN(tst_QStatusBar)
#include "tst_qstatusbar.moc"