diff --git a/src/nsterm.m b/src/nsterm.m index f6fd43a1889..46bb3f5dd7a 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -9790,6 +9790,13 @@ - (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen NSTRACE ("[EmacsWindow constrainFrameRect:" NSTRACE_FMT_RECT " toScreen:]", NSTRACE_ARG_RECT (frameRect)); + /* Don't do anything for child frames because that leads to weird + child frame placement in some cases involving Dock placement and + Dock Hiding. */ + struct frame *f = ((EmacsView *) [self delegate])->emacsframe; + if (FRAME_PARENT_FRAME (f)) + return frameRect; + #ifdef NS_IMPL_COCOA #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1090 // If separate spaces is on, it is like each screen is independent. There is