From ce3d1a153aad353ad5e50b935bc1d1494cbbeeee Mon Sep 17 00:00:00 2001 From: Corentin Jabot Date: Thu, 17 May 2012 10:35:32 +0200 Subject: Implement QWindow::setWindowIcon Since QIcon has been moved back to QtGui, QWindow::setWindowIcon can use it. That way, the api is exactly the same as in QWidgets and one can deal properly with multi-sized icon. I added a getter so the api is consistent with QWidget (Maybe there should be properties for windowIcon and windowTitle) Change-Id: I2f463dbe39673f41a3201ef8fed27b3fcac2125f Reviewed-by: Girish Ramakrishnan --- src/gui/kernel/qplatformwindow.h | 2 ++ src/gui/kernel/qplatformwindow_qpa.cpp | 5 +++++ src/gui/kernel/qwindow.cpp | 41 +++++++++++++++++++--------------- src/gui/kernel/qwindow.h | 6 ++++- src/gui/kernel/qwindow_p.h | 2 ++ 5 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/gui/kernel/qplatformwindow.h b/src/gui/kernel/qplatformwindow.h index 50efe88a52..7cb8d8cdb8 100644 --- a/src/gui/kernel/qplatformwindow.h +++ b/src/gui/kernel/qplatformwindow.h @@ -67,6 +67,7 @@ QT_BEGIN_NAMESPACE class QPlatformScreen; class QPlatformWindowPrivate; class QWindow; +class QIcon; class Q_GUI_EXPORT QPlatformWindow : public QPlatformSurface { @@ -95,6 +96,7 @@ public: virtual void setParent(const QPlatformWindow *window); virtual void setWindowTitle(const QString &title); + virtual void setWindowIcon(const QIcon &icon); virtual void raise(); virtual void lower(); diff --git a/src/gui/kernel/qplatformwindow_qpa.cpp b/src/gui/kernel/qplatformwindow_qpa.cpp index 20817361f8..4e464d7838 100644 --- a/src/gui/kernel/qplatformwindow_qpa.cpp +++ b/src/gui/kernel/qplatformwindow_qpa.cpp @@ -215,6 +215,11 @@ void QPlatformWindow::setParent(const QPlatformWindow *parent) */ void QPlatformWindow::setWindowTitle(const QString &title) { Q_UNUSED(title); } +/*! + Reimplement to set the window icon to \a icon +*/ +void QPlatformWindow::setWindowIcon(const QIcon &icon) { Q_UNUSED(icon); } + /*! Reimplement to be able to let Qt raise windows to the top of the desktop */ diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index d43b37d080..94e8979ca5 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -516,9 +516,8 @@ void QWindow::setWindowTitle(const QString &title) { Q_D(QWindow); d->windowTitle = title; - if (d->platformWindow) { + if (d->platformWindow) d->platformWindow->setWindowTitle(title); - } } QString QWindow::windowTitle() const @@ -527,6 +526,26 @@ QString QWindow::windowTitle() const return d->windowTitle; } +/*! + Sets the window icon to the given \a icon. + + The window icon might be used by the windowing system for example to decorate the window, + or in the task switcher. +*/ +void QWindow::setWindowIcon(const QIcon &icon) +{ + Q_D(QWindow); + d->windowIcon = icon; + if (d->platformWindow) + d->platformWindow->setWindowIcon(icon); +} + +QIcon QWindow::windowIcon() const +{ + Q_D(const QWindow); + return d->windowIcon; +} + /*! Raise the window in the windowing system. @@ -535,9 +554,8 @@ QString QWindow::windowTitle() const void QWindow::raise() { Q_D(QWindow); - if (d->platformWindow) { + if (d->platformWindow) d->platformWindow->raise(); - } } /*! @@ -548,9 +566,8 @@ void QWindow::raise() void QWindow::lower() { Q_D(QWindow); - if (d->platformWindow) { + if (d->platformWindow) d->platformWindow->lower(); - } } /*! @@ -1055,18 +1072,6 @@ void QWindow::resize(const QSize &newSize) } } -/*! - Sets the window icon to the given \a icon image. - - The window icon might be used by the windowing system for example to decorate the window, - or in the task switcher. -*/ -void QWindow::setWindowIcon(const QImage &icon) const -{ - Q_UNUSED(icon); - qDebug() << "unimplemented:" << __FILE__ << __LINE__; -} - /*! Releases the native platform resources associated with this window. diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h index 629e462da0..9c70395d08 100644 --- a/src/gui/kernel/qwindow.h +++ b/src/gui/kernel/qwindow.h @@ -53,6 +53,8 @@ #include #include +#include + #ifndef QT_NO_CURSOR #include #endif @@ -89,6 +91,7 @@ class Q_GUI_EXPORT QWindow : public QObject, public QSurface Q_DECLARE_PRIVATE(QWindow) Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle) + Q_PROPERTY(QIcon windowIcon READ windowIcon WRITE setWindowIcon) Q_PROPERTY(Qt::WindowModality windowModality READ windowModality WRITE setWindowModality NOTIFY windowModalityChanged) Q_PROPERTY(int x READ x WRITE setX NOTIFY xChanged) Q_PROPERTY(int y READ y WRITE setY NOTIFY yChanged) @@ -194,7 +197,8 @@ public: void resize(const QSize &newSize); inline void resize(int w, int h) { resize(QSize(w, h)); } - void setWindowIcon(const QImage &icon) const; + void setWindowIcon(const QIcon &icon); + QIcon windowIcon() const; void destroy(); diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h index 92eaf90188..d034ad0e4d 100644 --- a/src/gui/kernel/qwindow_p.h +++ b/src/gui/kernel/qwindow_p.h @@ -46,6 +46,7 @@ #include #include +#include QT_BEGIN_HEADER @@ -113,6 +114,7 @@ public: bool exposed; QSurfaceFormat requestedFormat; QString windowTitle; + QIcon windowIcon; QRect geometry; Qt::WindowState windowState; bool resizeEventPending; -- cgit v1.2.3