diff options
author | Andy Shaw <andy.shaw@digia.com> | 2015-04-08 13:09:10 +0200 |
---|---|---|
committer | Andy Shaw <andy.shaw@digia.com> | 2015-04-10 10:10:25 +0000 |
commit | 34ec0713bb5a2bc12782ab17ceabfead37c4b584 (patch) | |
tree | 8fccfe0caa8627c6afff7c5176ce6b3dd17d52e6 /src/gui | |
parent | b59521f2a40fab1205e7cec1c99c8c109f98021a (diff) |
Add a means to set the application icon where supported
On OS X the application icon can be changed at runtime, so this adds a way
to set this via the QPlatformIntegration.
[ChangeLog][OS X] QApplication::setWindowIcon now changes the icon for the
application in the dock.
Task-number: QTBUG-43999
Change-Id: Ice298c0bd52f10f4866f37c6d3f20cf5419b7a1b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 3 | ||||
-rw-r--r-- | src/gui/kernel/qplatformintegration.cpp | 14 | ||||
-rw-r--r-- | src/gui/kernel/qplatformintegration.h | 5 |
3 files changed, 20 insertions, 2 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 47c20a71fc..3e2b692cd0 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -2840,6 +2840,9 @@ void QGuiApplication::setWindowIcon(const QIcon &icon) if (!QGuiApplicationPrivate::app_icon) QGuiApplicationPrivate::app_icon = new QIcon(); *QGuiApplicationPrivate::app_icon = icon; + if (QGuiApplicationPrivate::platform_integration + && QGuiApplicationPrivate::platform_integration->hasCapability(QPlatformIntegration::ApplicationIcon)) + QGuiApplicationPrivate::platform_integration->setApplicationIcon(icon); if (QGuiApplicationPrivate::is_app_running && !QGuiApplicationPrivate::is_app_closing) QGuiApplicationPrivate::self->notifyWindowIconChanged(); } diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp index f2a92e10df..f917c09f6d 100644 --- a/src/gui/kernel/qplatformintegration.cpp +++ b/src/gui/kernel/qplatformintegration.cpp @@ -231,6 +231,8 @@ QPlatformServices *QPlatformIntegration::services() const implementation for QOpenGLContext::getProcAddress() and support returning a function pointer also for the standard, non-extension functions. This capability is a prerequisite for dynamic OpenGL loading. + + \value ApplicationIcon The platform supports setting the application icon. (since 5.5) */ /*! @@ -544,4 +546,16 @@ QOpenGLContext::OpenGLModuleType QPlatformIntegration::openGLModuleType() } #endif +/*! + \since 5.5 + + Platform integration function for setting the application icon. + + \sa QGuiApplication::setWindowIcon() +*/ +void QPlatformIntegration::setApplicationIcon(const QIcon &icon) const +{ + Q_UNUSED(icon); +} + QT_END_NAMESPACE diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h index 34639e6929..473c75a9e0 100644 --- a/src/gui/kernel/qplatformintegration.h +++ b/src/gui/kernel/qplatformintegration.h @@ -90,7 +90,8 @@ public: WindowManagement, SyncState, RasterGLSurface, - AllGLFunctionsQueryable + AllGLFunctionsQueryable, + ApplicationIcon }; virtual ~QPlatformIntegration() { } @@ -169,7 +170,7 @@ public: #ifndef QT_NO_OPENGL virtual QOpenGLContext::OpenGLModuleType openGLModuleType(); #endif - + virtual void setApplicationIcon(const QIcon &icon) const; protected: void screenAdded(QPlatformScreen *screen, bool isPrimary = false); void destroyScreen(QPlatformScreen *screen); |