summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/qpa/windows/window.cpp7
-rw-r--r--examples/qpa/windows/window.h1
-rw-r--r--src/corelib/kernel/qcoreevent.cpp1
-rw-r--r--src/gui/kernel/qevent.cpp23
-rw-r--r--src/gui/kernel/qevent.h11
-rw-r--r--src/gui/kernel/qevent_p.h12
-rw-r--r--src/gui/kernel/qwindow.cpp8
-rw-r--r--src/gui/kernel/qwindow.h2
8 files changed, 51 insertions, 14 deletions
diff --git a/examples/qpa/windows/window.cpp b/examples/qpa/windows/window.cpp
index 1c09c6b3da..bbfc6a3116 100644
--- a/examples/qpa/windows/window.cpp
+++ b/examples/qpa/windows/window.cpp
@@ -38,8 +38,6 @@ Window::Window(QWindow *parent)
m_image.fill(colorTable[m_backgroundColorIndex % (sizeof(colorTable) / sizeof(colorTable[0]))].rgba());
m_lastPos = QPoint(-1, -1);
-
- render();
}
void Window::mousePressEvent(QMouseEvent *event)
@@ -71,6 +69,11 @@ void Window::mouseReleaseEvent(QMouseEvent *event)
render();
}
+void Window::exposeEvent(QExposeEvent *)
+{
+ render();
+}
+
void Window::resizeEvent(QResizeEvent *)
{
QImage old = m_image;
diff --git a/examples/qpa/windows/window.h b/examples/qpa/windows/window.h
index f716145f94..546cf67bce 100644
--- a/examples/qpa/windows/window.h
+++ b/examples/qpa/windows/window.h
@@ -13,6 +13,7 @@ protected:
void keyPressEvent(QKeyEvent *);
+ void exposeEvent(QExposeEvent *);
void resizeEvent(QResizeEvent *);
private:
diff --git a/src/corelib/kernel/qcoreevent.cpp b/src/corelib/kernel/qcoreevent.cpp
index fbc935ddde..49c6da42c6 100644
--- a/src/corelib/kernel/qcoreevent.cpp
+++ b/src/corelib/kernel/qcoreevent.cpp
@@ -126,6 +126,7 @@ QT_BEGIN_NAMESPACE
\value Enter Mouse enters widget's boundaries.
\value EnterEditFocus An editor widget gains focus for editing.
\value EnterWhatsThisMode Send to toplevel widgets when the application enters "What's This?" mode.
+ \value Expose Sent to a window when its on-screen contents are invalidated and need to be flushed from the backing store.
\value FileOpen File open request (QFileOpenEvent).
\value FocusIn Widget gains keyboard focus (QFocusEvent).
\value FocusOut Widget loses keyboard focus (QFocusEvent).
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index f5a5c2826a..988d70c6ce 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -1145,6 +1145,29 @@ QMoveEvent::~QMoveEvent()
Returns the old position of the widget.
*/
+/*!
+ \class QExposeEvent
+ \brief The QExposeEvent class contains event parameters for expose events.
+
+ \ingroup events
+
+ Expose events are sent to widgets when an area of the widget is invalidated
+ and needs to be flushed from the backing store.
+
+ The event handler QWindow::exposeEvent() receives expose events.
+*/
+QExposeEvent::QExposeEvent(const QRegion &exposeRegion)
+ : QEvent(Expose)
+ , rgn(exposeRegion)
+{
+}
+
+/*!
+ \internal
+*/
+QExposeEvent::~QExposeEvent()
+{
+}
/*!
\class QResizeEvent
diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h
index fc9e8118fd..809a3d6371 100644
--- a/src/gui/kernel/qevent.h
+++ b/src/gui/kernel/qevent.h
@@ -300,6 +300,17 @@ protected:
friend class QCoreApplication;
};
+class Q_GUI_EXPORT QExposeEvent : public QEvent
+{
+public:
+ QExposeEvent(const QRegion &rgn);
+ ~QExposeEvent();
+
+ inline const QRegion &region() const { return rgn; }
+
+protected:
+ QRegion rgn;
+};
class Q_GUI_EXPORT QResizeEvent : public QEvent
{
diff --git a/src/gui/kernel/qevent_p.h b/src/gui/kernel/qevent_p.h
index a53b2c537a..731cfc97f2 100644
--- a/src/gui/kernel/qevent_p.h
+++ b/src/gui/kernel/qevent_p.h
@@ -167,18 +167,6 @@ public:
QScrollEvent::ScrollState state;
};
-class QExposeEvent : public QEvent
-{
-public:
- inline QExposeEvent(const QRegion &rgn)
- : QEvent(Expose)
- , region(rgn)
- {
- }
-
- QRegion region;
-};
-
QT_END_NAMESPACE
#endif // QEVENT_P_H
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index f56962ddb4..d060adf89e 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -454,6 +454,10 @@ bool QWindow::close()
return true;
}
+void QWindow::exposeEvent(QExposeEvent *)
+{
+}
+
void QWindow::resizeEvent(QResizeEvent *)
{
}
@@ -510,6 +514,10 @@ bool QWindow::event(QEvent *event)
destroy();
break;
+ case QEvent::Expose:
+ exposeEvent(static_cast<QExposeEvent *>(event));
+ break;
+
default:
return QObject::event(event);
}
diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h
index af882b5451..20b6074274 100644
--- a/src/gui/kernel/qwindow.h
+++ b/src/gui/kernel/qwindow.h
@@ -57,6 +57,7 @@ QT_MODULE(Gui)
class QWindowPrivate;
+class QExposeEvent;
class QResizeEvent;
class QShowEvent;
class QHideEvent;
@@ -179,6 +180,7 @@ Q_SIGNALS:
void backBufferReady();
protected:
+ virtual void exposeEvent(QExposeEvent *);
virtual void resizeEvent(QResizeEvent *);
virtual void showEvent(QShowEvent *);