Generate wxWindowCreateEvent when creating windows in wxQt

Send the expected event at the very end of window creation process.

Closes https://github.com/wxWidgets/wxWidgets/pull/1119
This commit is contained in:
Graham Dawes
2019-01-07 11:26:17 +00:00
committed by Vadim Zeitlin
parent 61b2136bee
commit 34ecc6efc4
4 changed files with 17 additions and 6 deletions

View File

@@ -58,9 +58,12 @@ bool wxControl::QtCreateControl( wxWindow *parent, wxWindowID id,
// Let Qt handle the background: // Let Qt handle the background:
SetBackgroundStyle(wxBG_STYLE_SYSTEM); SetBackgroundStyle(wxBG_STYLE_SYSTEM);
PostCreation(false);
return CreateControl( parent, id, pos, size, style, validator, name ); if (!CreateControl( parent, id, pos, size, style, validator, name ))
return false;
PostCreation(false);
return true;
} }
wxSize wxControl::DoGetBestSize() const wxSize wxControl::DoGetBestSize() const

View File

@@ -59,10 +59,13 @@ bool wxDialog::Create( wxWindow *parent, wxWindowID id,
style |= wxTAB_TRAVERSAL; style |= wxTAB_TRAVERSAL;
m_qtWindow = new wxQtDialog( parent, this ); m_qtWindow = new wxQtDialog( parent, this );
if ( !wxTopLevelWindow::Create( parent, id, title, pos, size, style, name ) )
return false;
PostCreation(); PostCreation();
return wxTopLevelWindow::Create( parent, id, title, pos, size, style, name ); return true;
} }
int wxDialog::ShowModal() int wxDialog::ShowModal()

View File

@@ -70,9 +70,11 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString& title,
GetQMainWindow()->setCentralWidget( new wxQtCentralWidget( parent, this ) ); GetQMainWindow()->setCentralWidget( new wxQtCentralWidget( parent, this ) );
PostCreation(); if ( !wxFrameBase::Create( parent, id, title, pos, size, style, name ) )
return false;
return wxFrameBase::Create( parent, id, title, pos, size, style, name ); PostCreation();
return true;
} }
void wxFrame::SetMenuBar( wxMenuBar *menuBar ) void wxFrame::SetMenuBar( wxMenuBar *menuBar )

View File

@@ -287,6 +287,9 @@ void wxWindowQt::PostCreation(bool generic)
SetForegroundColour(wxColour(GetHandle()->palette().foreground().color())); SetForegroundColour(wxColour(GetHandle()->palette().foreground().color()));
GetHandle()->setFont( wxWindowBase::GetFont().GetHandle() ); GetHandle()->setFont( wxWindowBase::GetFont().GetHandle() );
wxWindowCreateEvent event(this);
HandleWindowEvent(event);
} }
void wxWindowQt::AddChild( wxWindowBase *child ) void wxWindowQt::AddChild( wxWindowBase *child )