De-inline all setters in QWindow
authorShawn Rutledge <shawn.rutledge@digia.com>
Wed, 12 Dec 2012 11:55:21 +0000 (12:55 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Wed, 12 Dec 2012 13:49:46 +0000 (14:49 +0100)
If we don't do this, we can have binary compatibility issues later.
For example https://codereview.qt-project.org/#change,41700 will change
the behavior of setWidth and setHeight to call setSize instead of
setGeometry, because we don't want changing the height to also set
the position of a window; if x and y are left uninitialized it needs
to remember that fact.  But if setWidth is left as an inline method,
calling setGeometry, then an application which was built with 5.0
would behave differently than an application built with 5.1, even if
Qt is upgraded after the application was built.  To generalize,
setters should never be inlined.

Change-Id: I1ec42cb61a45fe541b3f3bb99d1b1ca24ad2a517
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
src/gui/kernel/qwindow.cpp
src/gui/kernel/qwindow.h

index b1fd2d3..6868757 100644 (file)
@@ -934,11 +934,59 @@ void QWindow::setMinimumSize(const QSize &size)
         emit minimumHeightChanged(d->minimumSize.height());
 }
 
+/*!
+    \property QWindow::x
+    \brief the x position of the window's geometry
+*/
+void QWindow::setX(int arg)
+{
+    if (x() != arg)
+        setGeometry(QRect(arg, y(), width(), height()));
+}
+
+/*!
+    \property QWindow::y
+    \brief the y position of the window's geometry
+*/
+void QWindow::setY(int arg)
+{
+    if (y() != arg)
+        setGeometry(QRect(x(), arg, width(), height()));
+}
+
+/*!
+    \property QWindow::width
+    \brief the width of the window's geometry
+*/
+void QWindow::setWidth(int arg)
+{
+    if (width() != arg)
+        setGeometry(QRect(x(), y(), arg, height()));
+}
+
+/*!
+    \property QWindow::height
+    \brief the height of the window's geometry
+*/
+void QWindow::setHeight(int arg)
+{
+    if (height() != arg)
+        setGeometry(QRect(x(), y(), width(), arg));
+}
+
+/*!
+    \property QWindow::minimumWidth
+    \brief the minimum width of the window's geometry
+*/
 void QWindow::setMinimumWidth(int w)
 {
     setMinimumSize(QSize(w, minimumHeight()));
 }
 
+/*!
+    \property QWindow::minimumHeight
+    \brief the minimum height of the window's geometry
+*/
 void QWindow::setMinimumHeight(int h)
 {
     setMinimumSize(QSize(minimumWidth(), h));
@@ -967,11 +1015,19 @@ void QWindow::setMaximumSize(const QSize &size)
         emit maximumHeightChanged(d->maximumSize.height());
 }
 
+/*!
+    \property QWindow::maximumWidth
+    \brief the maximum width of the window's geometry
+*/
 void QWindow::setMaximumWidth(int w)
 {
     setMaximumSize(QSize(w, maximumHeight()));
 }
 
+/*!
+    \property QWindow::maximumHeight
+    \brief the maximum height of the window's geometry
+*/
 void QWindow::setMaximumHeight(int h)
 {
     setMaximumSize(QSize(maximumWidth(), h));
@@ -1020,13 +1076,15 @@ void QWindow::setSizeIncrement(const QSize &size)
 }
 
 /*!
-    \fn void QWindow::setGeometry(int posx, int posy, int w, int h)
-
     Sets the geometry of the window, excluding its window frame, to a
     rectangle constructed from \a posx, \a posy, \a w and \a h.
 
     \sa geometry()
 */
+void QWindow::setGeometry(int posx, int posy, int w, int h)
+{
+    setGeometry(QRect(posx, posy, w, h));
+}
 
 /*!
     \brief Sets the geometry of the window, excluding its window frame, to \a rect.
@@ -1058,46 +1116,6 @@ void QWindow::setGeometry(const QRect &rect)
 }
 
 /*!
-    \property QWindow::x
-    \brief the x position of the window's geometry
-*/
-
-/*!
-    \property QWindow::y
-    \brief the y position of the window's geometry
-*/
-
-/*!
-    \property QWindow::width
-    \brief the width of the window's geometry
-*/
-
-/*!
-    \property QWindow::height
-    \brief the height of the window's geometry
-*/
-
-/*!
-    \property QWindow::minimumWidth
-    \brief the minimum width of the window's geometry
-*/
-
-/*!
-    \property QWindow::minimumHeight
-    \brief the minimum height of the window's geometry
-*/
-
-/*!
-    \property QWindow::maximumWidth
-    \brief the maximum width of the window's geometry
-*/
-
-/*!
-    \property QWindow::maximumHeight
-    \brief the maximum height of the window's geometry
-*/
-
-/*!
     Returns the geometry of the window, excluding its window frame.
 
     \sa frameMargins(), frameGeometry()
@@ -1172,18 +1190,24 @@ void QWindow::setFramePosition(const QPoint &point)
 }
 
 /*!
-    \fn void QWindow::setPosition(const QPoint &pt)
     \brief set the position of the window on the desktop to \a pt
 
     \sa position()
 */
+void QWindow::setPosition(const QPoint &pt)
+{
+    setGeometry(QRect(pt, size()));
+}
 
 /*!
-    \fn void QWindow::setPosition(int posx, int posy)
     \brief set the position of the window on the desktop to \a posx, \a posy
 
     \sa position()
 */
+void QWindow::setPosition(int posx, int posy)
+{
+    setPosition(QPoint(posx, posy));
+}
 
 /*!
     \fn QPoint QWindow::position() const
@@ -1200,13 +1224,15 @@ void QWindow::setFramePosition(const QPoint &point)
 */
 
 /*!
-    \fn void QWindow::resize(int w, int h)
-
     set the size of the window, excluding any window frame, to a QSize
     constructed from width \a w and height \a h
 
     \sa size(), geometry()
 */
+void QWindow::resize(int w, int h)
+{
+    resize(QSize(w, h));
+}
 
 /*!
     \brief set the size of the window, excluding any window frame, to \a newSize
index 6dcd4ed..c1a8e79 100644 (file)
@@ -172,10 +172,10 @@ public:
 
     bool isExposed() const;
 
-    int minimumWidth() const { return minimumSize().width(); }
-    int minimumHeight() const { return minimumSize().height(); }
-    int maximumWidth() const { return maximumSize().width(); }
-    int maximumHeight() const { return maximumSize().height(); }
+    inline int minimumWidth() const { return minimumSize().width(); }
+    inline int minimumHeight() const { return minimumSize().height(); }
+    inline int maximumWidth() const { return maximumSize().width(); }
+    inline int maximumHeight() const { return maximumSize().height(); }
 
     QSize minimumSize() const;
     QSize maximumSize() const;
@@ -187,7 +187,7 @@ public:
     void setBaseSize(const QSize &size);
     void setSizeIncrement(const QSize &size);
 
-    void setGeometry(int posx, int posy, int w, int h) { setGeometry(QRect(posx, posy, w, h)); }
+    void setGeometry(int posx, int posy, int w, int h);
     void setGeometry(const QRect &rect);
     QRect geometry() const;
 
@@ -205,11 +205,11 @@ public:
     inline QSize size() const { return geometry().size(); }
     inline QPoint position() const { return geometry().topLeft(); }
 
-    inline void setPosition(const QPoint &pt) { setGeometry(QRect(pt, size())); }
-    inline void setPosition(int posx, int posy) { setPosition(QPoint(posx, posy)); }
+    void setPosition(const QPoint &pt);
+    void setPosition(int posx, int posy);
 
     void resize(const QSize &newSize);
-    inline void resize(int w, int h) { resize(QSize(w, h)); }
+    void resize(int w, int h);
 
     void setFilePath(const QString &filePath);
     QString filePath() const;
@@ -256,29 +256,10 @@ public Q_SLOTS:
 
     void setTitle(const QString &);
 
-    void setX(int arg)
-    {
-        if (x() != arg)
-            setGeometry(QRect(arg, y(), width(), height()));
-    }
-
-    void setY(int arg)
-    {
-        if (y() != arg)
-            setGeometry(QRect(x(), arg, width(), height()));
-    }
-
-    void setWidth(int arg)
-    {
-        if (width() != arg)
-            setGeometry(QRect(x(), y(), arg, height()));
-    }
-
-    void setHeight(int arg)
-    {
-        if (height() != arg)
-            setGeometry(QRect(x(), y(), width(), arg));
-    }
+    void setX(int arg);
+    void setY(int arg);
+    void setWidth(int arg);
+    void setHeight(int arg);
 
     void setMinimumWidth(int w);
     void setMinimumHeight(int h);