Prevent windows from jumping when changing geometry on OS X
We were setting the frame origin and content size as two separate steps. The frame origin was asynchronous, while the content size was synchronous. This resulted in the window visually jumping/moving, instead of applying the new geometry in one single step. We now set both in one go using setFrame, by manually calculating the frameRectForContentRect. This makes the whole process asynchronous. Task-number: QTBUG-31039 Change-Id: Iaba46106b9f200c707507f330fa801c99e2e7d89 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>bb10
parent
69c05bbef4
commit
3c69751ef2
|
|
@ -272,8 +272,7 @@ void QCocoaWindow::setCocoaGeometry(const QRect &rect)
|
|||
|
||||
if (m_nsWindow) {
|
||||
NSRect bounds = qt_mac_flipRect(rect, window());
|
||||
[m_nsWindow setContentSize : bounds.size];
|
||||
[m_nsWindow setFrameOrigin : bounds.origin];
|
||||
[m_nsWindow setFrame:[m_nsWindow frameRectForContentRect:bounds] display:YES animate:NO];
|
||||
} else {
|
||||
[m_contentView setFrame : NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height())];
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue