X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3ec9ba039f446a54576bd6a79cbf298b76e70bc7..ae26e17b93fd8c3dce7c66ce9f23475867160f62:/src/common/toplvcmn.cpp diff --git a/src/common/toplvcmn.cpp b/src/common/toplvcmn.cpp index c45dd1d55e..ceee633abf 100644 --- a/src/common/toplvcmn.cpp +++ b/src/common/toplvcmn.cpp @@ -226,7 +226,10 @@ void wxTopLevelWindowBase::DoCentre(int dir) { // on some platforms centering top level windows is impossible // because they are always maximized by guidelines or limitations - if(IsAlwaysMaximized()) + // + // and centering a maximized window doesn't make sense as its position + // can't change + if ( IsAlwaysMaximized() || IsMaximized() ) return; // we need the display rect anyhow so store it first: notice that we should @@ -248,25 +251,19 @@ void wxTopLevelWindowBase::DoCentre(int dir) // parent frame under Mac but could happen elsewhere too if the frame // was hidden/moved away for some reason), don't use it as otherwise // this window wouldn't be visible at all - if ( !rectDisplay.Contains(rectParent.GetTopLeft()) && - !rectParent.Contains(rectParent.GetBottomRight()) ) + if ( !rectParent.Intersects(rectDisplay) ) { - // this is enough to make IsEmpty() test below pass - rectParent.width = 0; + // just centre on screen then + rectParent = rectDisplay; } } - - if ( rectParent.IsEmpty() ) + else { // we were explicitly asked to centre this window on the entire screen // or if we have no parent anyhow and so can't centre on it rectParent = rectDisplay; } - // centering maximized window on screen is no-op - if((rectParent == rectDisplay) && IsMaximized()) - return; - if ( !(dir & wxBOTH) ) dir |= wxBOTH; // if neither is specified, center in both directions