Forbid creation of wxPaintEvent objects from user code

This doesn't work anyhow, so it's better to prevent the code doing this
from compiling instead of getting run-time asserts or worse.

Also simplify construction of these events inside wxWidgets by passing
the window itself to the ctor instead of passing just its ID and calling
SetEventObject() separately later.

For consistency, do the same thing for wxNcPaintEvent too.
This commit is contained in:
Vadim Zeitlin
2020-02-10 14:08:53 +01:00
parent b680ba9596
commit 8fcf46f65c
17 changed files with 65 additions and 46 deletions

View File

@@ -5260,8 +5260,7 @@ bool wxWindowMSW::HandlePaint()
paintStack.push(PaintData(this));
wxPaintEvent event(m_windowId);
event.SetEventObject(this);
wxPaintEvent event(this);
bool processed = HandleWindowEvent(event);
@@ -5280,8 +5279,7 @@ bool wxWindowMSW::HandlePaint()
// note that we must generate NC event after the normal one as otherwise
// BeginPaint() will happily overwrite our decorations with the background
// colour
wxNcPaintEvent eventNc(m_windowId);
eventNc.SetEventObject(this);
wxNcPaintEvent eventNc(this);
HandleWindowEvent(eventNc);
// don't keep an HRGN we don't need any longer (GetUpdateRegion() can only