From a4681572cc04e89e02743999897051c5442533e6 Mon Sep 17 00:00:00 2001 From: Tim Kosse Date: Sat, 18 Jul 2015 02:17:38 +0200 Subject: [PATCH] Fix initial position of controls with layout insets in wxOSX. For such controls (e.g. wxButton, wxChoice, wxGauge), their initial position was different from the one specified when creating them, even though calling SetPosition() later did position them at exactly the position passed as argument. See #16780. --- src/osx/window_osx.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/osx/window_osx.cpp b/src/osx/window_osx.cpp index 5b63ad7de0..f268f45143 100644 --- a/src/osx/window_osx.cpp +++ b/src/osx/window_osx.cpp @@ -456,9 +456,16 @@ void wxWindowMac::MacChildAdded() #endif } -void wxWindowMac::MacPostControlCreate(const wxPoint& WXUNUSED(pos), +void wxWindowMac::MacPostControlCreate(const wxPoint& pos, const wxSize& WXUNUSED(size)) { + // Some controls may have a nonzero layout inset, + // so we may need to adjust control position. + if ( pos.IsFullySpecified() && GetPosition() != pos ) + { + SetPosition(pos); + } + // todo remove if refactoring works correctly #if 0 wxASSERT_MSG( GetPeer() != NULL && GetPeer()->IsOk() , wxT("No valid mac control") ) ;