Use deferred window positioning in wxWindow::Layout() in wxMSW.
Ensure that {Begin,End}RepositioningChildren() are called before/after changing the positions of multiple children, whether we're using sizers or constraints. This fixes display corruption which could happen under Windows 7 and a child resized first became bigger, pushing off the children resized later. Closes #15214. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74067 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
1a986642f5
commit
ff3493c0ce
@ -976,6 +976,8 @@ void wxSizer::Layout()
|
||||
CalcMin();
|
||||
|
||||
// Applies the layout and repositions/resizes the items
|
||||
wxWindow::ChildrenRepositioningGuard repositionGuard(m_containingWindow);
|
||||
|
||||
RecalcSizes();
|
||||
}
|
||||
|
||||
|
@ -2610,6 +2610,8 @@ void wxWindowBase::SetConstraintSizes(bool recurse)
|
||||
wxLayoutConstraints *constr = GetConstraints();
|
||||
if ( constr && constr->AreSatisfied() )
|
||||
{
|
||||
ChildrenRepositioningGuard repositionGuard(this);
|
||||
|
||||
int x = constr->left.GetValue();
|
||||
int y = constr->top.GetValue();
|
||||
int w = constr->width.GetValue();
|
||||
|
Loading…
Reference in New Issue
Block a user