mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-25 10:47:00 +00:00
Constrain non-child frames to screen area in OS X
* src/nsterm.m (constrainFrameRect:toScreen:): Constrain non-child frames in OS X, if they would otherwise go offscreen. Fixes: debbugs:25818
This commit is contained in:
parent
b50dda3fa2
commit
6e0cac4896
35
src/nsterm.m
35
src/nsterm.m
@ -8040,7 +8040,40 @@ - (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen
|
|||||||
NSTRACE_RETURN_RECT (frameRect);
|
NSTRACE_RETURN_RECT (frameRect);
|
||||||
return frameRect;
|
return frameRect;
|
||||||
}
|
}
|
||||||
#endif
|
else
|
||||||
|
#endif /* MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9 */
|
||||||
|
// Check that the proposed frameRect is visible in at least one
|
||||||
|
// screen. If it is not, ask the system to reposition it (only
|
||||||
|
// for non-child windows).
|
||||||
|
|
||||||
|
if (!FRAME_PARENT_FRAME (((EmacsView *)[self delegate])->emacsframe))
|
||||||
|
{
|
||||||
|
NSArray *screens = [NSScreen screens];
|
||||||
|
NSUInteger nr_screens = [screens count];
|
||||||
|
|
||||||
|
int i;
|
||||||
|
BOOL frame_on_screen = NO;
|
||||||
|
|
||||||
|
for (i = 0; i < nr_screens; ++i)
|
||||||
|
{
|
||||||
|
NSScreen *s = [screens objectAtIndex: i];
|
||||||
|
NSRect scrRect = [s frame];
|
||||||
|
|
||||||
|
if (NSIntersectsRect(frameRect, scrRect))
|
||||||
|
{
|
||||||
|
frame_on_screen = YES;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!frame_on_screen)
|
||||||
|
{
|
||||||
|
NSTRACE_MSG ("Frame outside screens; constraining");
|
||||||
|
frameRect = [super constrainFrameRect:frameRect toScreen:screen];
|
||||||
|
NSTRACE_RETURN_RECT (frameRect);
|
||||||
|
return frameRect;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return constrain_frame_rect(frameRect,
|
return constrain_frame_rect(frameRect,
|
||||||
|
Loading…
Reference in New Issue
Block a user