summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@digia.com>2014-06-20 10:55:18 +0200
committerJ-P Nurmi <jpnurmi@digia.com>2014-07-02 00:44:18 +0200
commit82d906a20d3769425dec6a3c618262de9bbaee45 (patch)
treead1f2c90d8312df78bfb63d665a2caf490b9ad96
parentb31c9d8c03c471c9bb9296408f1f7ee6a512d3db (diff)
QGuiApplication::paletteChanged(const QPalette &palette) [signal]
This allows QQuickSystemPalette to listen to palette changes without installing an expensive event filter on the application object. Change-Id: I8b693e047d993c444e393d7a714a5709692c3560 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
-rw-r--r--src/gui/kernel/qguiapplication.cpp10
-rw-r--r--src/gui/kernel/qguiapplication.h1
-rw-r--r--tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp27
3 files changed, 38 insertions, 0 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 6ac84c6cab..87c95e6420 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -2653,6 +2653,15 @@ QClipboard * QGuiApplication::clipboard()
#endif
/*!
+ \since 5.4
+ \fn void QGuiApplication::paletteChanged(const QPalette &palette)
+
+ This signal is emitted when the \a palette of the application changes.
+
+ \sa palette()
+*/
+
+/*!
Returns the default application palette.
\sa setPalette()
@@ -2678,6 +2687,7 @@ void QGuiApplication::setPalette(const QPalette &pal)
else
*QGuiApplicationPrivate::app_pal = pal;
applicationResourceFlags |= ApplicationPaletteExplicitlySet;
+ emit qGuiApp->paletteChanged(*QGuiApplicationPrivate::app_pal);
}
QRect QGuiApplicationPrivate::applyWindowGeometrySpecification(const QRect &windowGeometry, const QWindow *window)
diff --git a/src/gui/kernel/qguiapplication.h b/src/gui/kernel/qguiapplication.h
index 560b2c827d..1b1e1dabff 100644
--- a/src/gui/kernel/qguiapplication.h
+++ b/src/gui/kernel/qguiapplication.h
@@ -174,6 +174,7 @@ Q_SIGNALS:
void commitDataRequest(QSessionManager &sessionManager);
void saveStateRequest(QSessionManager &sessionManager);
#endif
+ void paletteChanged(const QPalette &pal);
protected:
bool event(QEvent *);
diff --git a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
index 54b6fc6c44..9a6b9f488b 100644
--- a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
+++ b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
@@ -45,6 +45,7 @@
#include <QtGui/QWindow>
#include <QtGui/QScreen>
#include <QtGui/QCursor>
+#include <QtGui/QPalette>
#include <qpa/qwindowsysteminterface.h>
#include <qgenericplugin.h>
@@ -72,6 +73,7 @@ private slots:
void abortQuitOnShow();
void changeFocusWindow();
void keyboardModifiers();
+ void palette();
void modalWindow();
void quitOnLastWindowClosed();
void genericPluginsAndWindowSystemEvents();
@@ -434,6 +436,31 @@ void tst_QGuiApplication::keyboardModifiers()
window->close();
}
+void tst_QGuiApplication::palette()
+{
+ int argc = 1;
+ char *argv[] = { const_cast<char*>("tst_qguiapplication") };
+ QGuiApplication app(argc, argv);
+ QSignalSpy signalSpy(&app, SIGNAL(paletteChanged(QPalette)));
+
+ QPalette oldPalette = QGuiApplication::palette();
+ QPalette newPalette = QPalette(Qt::red);
+
+ QGuiApplication::setPalette(newPalette);
+ QCOMPARE(QGuiApplication::palette(), newPalette);
+ QCOMPARE(signalSpy.count(), 1);
+ QCOMPARE(signalSpy.at(0).at(0), QVariant(newPalette));
+
+ QGuiApplication::setPalette(oldPalette);
+ QCOMPARE(QGuiApplication::palette(), oldPalette);
+ QCOMPARE(signalSpy.count(), 2);
+ QCOMPARE(signalSpy.at(1).at(0), QVariant(oldPalette));
+
+ QGuiApplication::setPalette(oldPalette);
+ QCOMPARE(QGuiApplication::palette(), oldPalette);
+ QCOMPARE(signalSpy.count(), 2);
+}
+
class BlockableWindow : public QWindow
{
Q_OBJECT