summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@nokia.com>2011-08-29 08:26:37 +0200
committerSamuel Rødal <samuel.rodal@nokia.com>2011-08-29 08:30:00 +0200
commita001bde5bfc8b782231d7f9c42dbeb82ff25fc81 (patch)
treeb9c04a176dc76eb3a3913143f8182152f546df00 /src
parent30c23971d0e584a5cbfa1787f60e0f5837efd046 (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')
-rw-r--r--src/gui/kernel/qwindow.cpp35
-rw-r--r--src/gui/kernel/qwindow.h7
-rw-r--r--src/gui/kernel/qwindow_p.h9
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;