summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorentin Jabot <corentinjabot@gmail.com>2012-05-17 10:35:32 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-24 20:20:52 +0200
commitce3d1a153aad353ad5e50b935bc1d1494cbbeeee (patch)
tree48ec8fa90c7aa9d3873b578d7f4668177b62e154
parentdf7a1a28aaab315dc8ed5eb5bac6f4883e646613 (diff)
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 <girish.1.ramakrishnan@nokia.com>
-rw-r--r--src/gui/kernel/qplatformwindow.h2
-rw-r--r--src/gui/kernel/qplatformwindow_qpa.cpp5
-rw-r--r--src/gui/kernel/qwindow.cpp41
-rw-r--r--src/gui/kernel/qwindow.h6
-rw-r--r--src/gui/kernel/qwindow_p.h2
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
@@ -216,6 +216,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
*/
void QPlatformWindow::raise() { qWarning("This plugin does not support raise()"); }
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
@@ -528,6 +527,26 @@ QString QWindow::windowTitle() const
}
/*!
+ 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.
Requests that the window be raised to appear above other windows.
@@ -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();
- }
}
/*!
@@ -1056,18 +1073,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.
\sa create()
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 <QtGui/qsurfaceformat.h>
#include <QtGui/qwindowdefs.h>
+#include <QtGui/qicon.h>
+
#ifndef QT_NO_CURSOR
#include <QtGui/qcursor.h>
#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 <qpa/qplatformwindow.h>
#include <QtCore/private/qobject_p.h>
+#include <QtGui/QIcon>
QT_BEGIN_HEADER
@@ -113,6 +114,7 @@ public:
bool exposed;
QSurfaceFormat requestedFormat;
QString windowTitle;
+ QIcon windowIcon;
QRect geometry;
Qt::WindowState windowState;
bool resizeEventPending;