Add setCursor API to QWindow
Change-Id: Id430ea9c94475356c9367a135f678f5f9ef795fc Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
This commit is contained in:
parent
5c2a055230
commit
5190beae81
@ -59,6 +59,7 @@
|
||||
#include <QtCore/QDebug>
|
||||
|
||||
#include <QStyleHints>
|
||||
#include <QPlatformCursor>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -1684,4 +1685,64 @@ void QWindowPrivate::maybeQuitOnLastWindowClosed()
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
\property QWindow::cursor
|
||||
\brief the cursor shape for this window
|
||||
|
||||
The mouse cursor will assume this shape when it is over this
|
||||
window, unless an override cursor is set. See the \link
|
||||
Qt::CursorShape list of predefined cursor objects\endlink for a
|
||||
range of useful shapes.
|
||||
|
||||
By default, this property contains a cursor with the Qt::ArrowCursor
|
||||
shape.
|
||||
|
||||
Some underlying window implementations will reset the cursor if it
|
||||
leaves a window even if the mouse is grabbed. If you want to have
|
||||
a cursor set for all windows, even when outside the window, consider
|
||||
QGuiApplication::setOverrideCursor().
|
||||
|
||||
\sa QGuiApplication::setOverrideCursor()
|
||||
*/
|
||||
|
||||
#ifndef QT_NO_CURSOR
|
||||
QCursor QWindow::cursor() const
|
||||
{
|
||||
Q_D(const QWindow);
|
||||
return d->cursor;
|
||||
}
|
||||
|
||||
void QWindow::setCursor(const QCursor &cursor)
|
||||
{
|
||||
Q_D(QWindow);
|
||||
if (QPlatformCursor *platformCursor = d->screen->handle()->cursor()) {
|
||||
d->cursor = cursor;
|
||||
QCursor *oc = QGuiApplication::overrideCursor();
|
||||
QCursor c = oc ? *oc : d->cursor;
|
||||
platformCursor->changeCursor(&c, this);
|
||||
QEvent event(QEvent::CursorChange);
|
||||
QGuiApplication::sendEvent(this, &event);
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief Restores the default arrow cursor for this window.
|
||||
*/
|
||||
void QWindow::unsetCursor()
|
||||
{
|
||||
Q_D(QWindow);
|
||||
if (QPlatformCursor *platformCursor = d->screen->handle()->cursor()) {
|
||||
d->cursor = Qt::ArrowCursor;
|
||||
QCursor *oc = QGuiApplication::overrideCursor();
|
||||
if (!oc) {
|
||||
QCursor c = d->cursor;
|
||||
platformCursor->changeCursor(&c, this);
|
||||
}
|
||||
QEvent event(QEvent::CursorChange);
|
||||
QGuiApplication::sendEvent(this, &event);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -53,6 +53,10 @@
|
||||
#include <QtGui/qsurfaceformat.h>
|
||||
#include <QtGui/qwindowdefs.h>
|
||||
|
||||
#ifndef QT_NO_CURSOR
|
||||
#include <QtGui/qcursor.h>
|
||||
#endif
|
||||
|
||||
QT_BEGIN_HEADER
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
@ -92,6 +96,9 @@ class Q_GUI_EXPORT QWindow : public QObject, public QSurface
|
||||
Q_PROPERTY(int height READ height WRITE setHeight NOTIFY heightChanged)
|
||||
Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged)
|
||||
Q_PROPERTY(Qt::ScreenOrientation contentOrientation READ contentOrientation WRITE reportContentOrientationChange NOTIFY contentOrientationChanged)
|
||||
#ifndef QT_NO_CURSOR
|
||||
Q_PROPERTY(QCursor cursor READ cursor WRITE setCursor RESET unsetCursor)
|
||||
#endif
|
||||
|
||||
public:
|
||||
|
||||
@ -205,6 +212,12 @@ public:
|
||||
QPoint mapToGlobal(const QPoint &pos) const;
|
||||
QPoint mapFromGlobal(const QPoint &pos) const;
|
||||
|
||||
#ifndef QT_NO_CURSOR
|
||||
QCursor cursor() const;
|
||||
void setCursor(const QCursor &);
|
||||
void unsetCursor();
|
||||
#endif
|
||||
|
||||
public Q_SLOTS:
|
||||
void setVisible(bool visible);
|
||||
|
||||
|
@ -84,6 +84,9 @@ public:
|
||||
, blockedByModalWindow(false)
|
||||
, transientParent(0)
|
||||
, screen(0)
|
||||
#ifndef QT_NO_CURSOR
|
||||
, cursor(Qt::ArrowCursor)
|
||||
#endif
|
||||
{
|
||||
isWindow = true;
|
||||
}
|
||||
@ -128,6 +131,10 @@ public:
|
||||
|
||||
QPointer<QWindow> transientParent;
|
||||
QScreen *screen;
|
||||
|
||||
#ifndef QT_NO_CURSOR
|
||||
QCursor cursor;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user