Files
wxWidgets/src/qt/control.cpp
Graham Dawes 34ecc6efc4 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
2019-01-10 03:50:43 +01:00

80 lines
2.4 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: src/qt/control.cpp
// Author: Peter Most, Mariano Reingart
// Copyright: (c) 2009 wxWidgets dev team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/control.h"
#include "wx/qt/private/converter.h"
#include <QtWidgets/QWidget>
wxIMPLEMENT_DYNAMIC_CLASS(wxControl, wxWindow);
wxControl::wxControl()
{
}
wxControl::wxControl(wxWindow *parent, wxWindowID id,
const wxPoint& pos,
const wxSize& size, long style,
const wxValidator& validator,
const wxString& name )
{
Create( parent, id, pos, size, style, validator, name );
}
bool wxControl::Create(wxWindow *parent, wxWindowID id,
const wxPoint& pos,
const wxSize& size, long style,
const wxValidator& validator,
const wxString& name )
{
bool isCreated = wxWindow::Create(parent, id, pos, size, style, name);
#if wxUSE_VALIDATORS
SetValidator(validator);
#endif
return isCreated;
}
bool wxControl::QtCreateControl( wxWindow *parent, wxWindowID id,
const wxPoint &pos, const wxSize &size, long style,
const wxValidator &validator, const wxString &name )
{
// The Qt widget has been created without a position/size so move/resize it:
wxSize bestSize = GetBestSize();
int width = ( size.GetWidth() == wxDefaultCoord ) ? bestSize.GetWidth() : size.GetWidth();
int height = ( size.GetHeight() == wxDefaultCoord ) ? bestSize.GetHeight() : size.GetHeight();
DoMoveWindow( pos.x, pos.y, width, height );
// Let Qt handle the background:
SetBackgroundStyle(wxBG_STYLE_SYSTEM);
if (!CreateControl( parent, id, pos, size, style, validator, name ))
return false;
PostCreation(false);
return true;
}
wxSize wxControl::DoGetBestSize() const
{
wxSize minsize = wxQtConvertSize( GetHandle()->minimumSizeHint() );
wxSize size = wxQtConvertSize( GetHandle()->sizeHint() );
// best effort to ensure a correct size (note that some qt controls implement just one or both size hints)
if (size.GetWidth() < minsize.GetWidth())
size.SetWidth(minsize.GetWidth());
if (size.GetHeight() < minsize.GetHeight())
size.SetHeight(minsize.GetHeight());
return size;
}