diff options
author | Gunnar Sletta <gunnar.sletta@nokia.com> | 2011-08-29 08:26:37 +0200 |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2011-08-29 08:30:00 +0200 |
commit | a001bde5bfc8b782231d7f9c42dbeb82ff25fc81 (patch) | |
tree | b9c04a176dc76eb3a3913143f8182152f546df00 /src/gui/kernel | |
parent | 30c23971d0e584a5cbfa1787f60e0f5837efd046 (diff) |
QWindow::mapToGlobal/mapFromGlobal and move()
Change-Id: If1909b9ce468a8708cb25d5a2fbe8ebd90bd958a
Reviewed-on: http://codereview.qt.nokia.com/3702
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Diffstat (limited to 'src/gui/kernel')
-rw-r--r-- | src/gui/kernel/qwindow.cpp | 35 | ||||
-rw-r--r-- | src/gui/kernel/qwindow.h | 7 | ||||
-rw-r--r-- | src/gui/kernel/qwindow_p.h | 9 |
3 files changed, 51 insertions, 0 deletions
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp index d850cd6020..6fbc249631 100644 --- a/src/gui/kernel/qwindow.cpp +++ b/src/gui/kernel/qwindow.cpp @@ -631,6 +631,41 @@ void QWindow::wheelEvent(QWheelEvent *) } #endif //QT_NO_WHEELEVENT + + +/*! + \fn QPoint QWindow::mapToGlobal(const QPoint &pos) const + + Translates the window coordinate \a pos to global screen + coordinates. For example, \c{mapToGlobal(QPoint(0,0))} would give + the global coordinates of the top-left pixel of the window. + + \sa mapFromGlobal() +*/ + +QPoint QWindow::mapToGlobal(const QPoint &pos) const +{ + return pos + d_func()->globalPosition(); +} + + + +/*! + \fn QPoint QWindow::mapFromGlobal(const QPoint &pos) const + + Translates the global screen coordinate \a pos to window + coordinates. + + \sa mapToGlobal() +*/ + +QPoint QWindow::mapFromGlobal(const QPoint &pos) const +{ + return pos - d_func()->globalPosition(); +} + + + Q_GUI_EXPORT QWindowPrivate *qt_window_private(QWindow *window) { return window->d_func(); diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h index 6c8fda5768..c64ad13363 100644 --- a/src/gui/kernel/qwindow.h +++ b/src/gui/kernel/qwindow.h @@ -155,6 +155,7 @@ public: void setBaseSize(const QSize &size); void setSizeIncrement(const QSize &size); + void setGeometry(int x, int y, int w, int h) { setGeometry(QRect(x, y, w, h)); } void setGeometry(const QRect &rect); QRect geometry() const; @@ -166,6 +167,9 @@ public: inline QSize size() const { return geometry().size(); } inline QPoint pos() const { return geometry().topLeft(); } + inline void move(const QPoint &pt) { setGeometry(QRect(pt, size())); } + inline void move(int x, int y) { move(QPoint(x, y)); } + inline void resize(const QSize &size) { setGeometry(QRect(pos(), size)); } inline void resize(int w, int h) { setGeometry(QRect(x(), y(), w, h)); } @@ -183,6 +187,9 @@ public: QScreen *screen() const; void setScreen(QScreen *screen); + QPoint mapToGlobal(const QPoint &pos) const; + QPoint mapFromGlobal(const QPoint &pos) const; + public Q_SLOTS: inline void show() { setVisible(true); } inline void hide() { setVisible(false); } diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h index 0a051ae965..38b90fdd73 100644 --- a/src/gui/kernel/qwindow_p.h +++ b/src/gui/kernel/qwindow_p.h @@ -81,6 +81,15 @@ public: void maybeQuitOnLastWindowClosed(); + QPoint globalPosition() const { + Q_Q(const QWindow); + QPoint offset = q->pos(); + for (const QWindow *p = q->parent(); p; p = p->parent()) + offset += p->pos(); + return offset; + } + + QWindow::SurfaceType surfaceType; Qt::WindowFlags windowFlags; QWindow *parentWindow; |