Commit 27df712e authored by Alan Third's avatar Alan Third
Browse files

Change NS port resize detection

* src/nsterm.m ([EmacsView windowDidResize:]): Remove function, it's
not performing a useful function any more.
([EmacsView viewDidResize]):
([EmacsView resizeWithOldSuperviewSize:]): Replace viewDidResize with
resizeWithOldSuperviewSize.
([EmacsView initFrameFromEmacs:]): Remove the view resize notification
as we don't need it any more.
parent 7d71f377
......@@ -7125,43 +7125,6 @@ - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize
}
- (void)windowDidResize: (NSNotification *)notification
{
NSTRACE ("[EmacsView windowDidResize:]");
if (!FRAME_LIVE_P (emacsframe))
{
NSTRACE_MSG ("Ignored (frame dead)");
return;
}
if (emacsframe->output_data.ns->in_animation)
{
NSTRACE_MSG ("Ignored (in animation)");
return;
}
if (! [self fsIsNative])
{
NSWindow *theWindow = [notification object];
/* We can get notification on the non-FS window when in
fullscreen mode. */
if ([self window] != theWindow) return;
}
NSTRACE_RECT ("frame", [[notification object] frame]);
#ifdef NS_IMPL_GNUSTEP
NSWindow *theWindow = [notification object];
/* In GNUstep, at least currently, it's possible to get a didResize
without getting a willResize, therefore we need to act as if we got
the willResize now. */
NSSize sz = [theWindow frame].size;
sz = [self windowWillResize: theWindow toSize: sz];
#endif /* NS_IMPL_GNUSTEP */
ns_send_appdefined (-1);
}
#ifdef NS_IMPL_COCOA
- (void)viewDidEndLiveResize
{
......@@ -7179,38 +7142,30 @@ - (void)viewDidEndLiveResize
#endif /* NS_IMPL_COCOA */
- (void)viewDidResize:(NSNotification *)notification
- (void)resizeWithOldSuperviewSize: (NSSize)oldSize
{
NSRect frame = [self frame];
int neww, newh, oldw, oldh;
NSRect frame;
int width, height;
if (! FRAME_LIVE_P (emacsframe))
return;
NSTRACE ("[EmacsView resizeWithOldSuperviewSize:]");
NSTRACE ("[EmacsView viewDidResize]");
[super resizeWithOldSuperviewSize:oldSize];
neww = (int)NSWidth (frame);
newh = (int)NSHeight (frame);
oldw = FRAME_PIXEL_WIDTH (emacsframe);
oldh = FRAME_PIXEL_HEIGHT (emacsframe);
if (! FRAME_LIVE_P (emacsframe))
return;
/* Don't want to do anything when the view size hasn't changed. */
if (emacsframe->new_size_p
? (newh == emacsframe->new_height
&& neww == emacsframe->new_width)
: (oldh == newh && oldw == neww))
{
NSTRACE_MSG ("No change");
return;
}
frame = [self frame];
width = (int)NSWidth (frame);
height = (int)NSHeight (frame);
NSTRACE_SIZE ("New size", NSMakeSize (neww, newh));
NSTRACE_SIZE ("Original size", NSMakeSize (oldw, oldh));
NSTRACE_SIZE ("New size", NSMakeSize (width, height));
NSTRACE_SIZE ("Original size", size);
change_frame_size (emacsframe, neww, newh, false, YES, false);
change_frame_size (emacsframe, width, height, false, YES, false);
SET_FRAME_GARBAGED (emacsframe);
cancel_mouse_face (emacsframe);
ns_send_appdefined (-1);
}
......@@ -7374,7 +7329,7 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f
/* These settings mean AppKit will retain the contents of the frame
on resize. Unfortunately it also means the frame will not be
automatically marked for display, but we can do that ourselves in
viewDidResize. */
resizeWithOldSuperviewSize. */
[self setWantsLayer:YES];
[self setLayerContentsRedrawPolicy:
NSViewLayerContentsRedrawOnSetNeedsDisplay];
......@@ -7398,13 +7353,6 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f
[NSApp registerServicesMenuSendTypes: ns_send_types
returnTypes: [NSArray array]];
/* Set up view resize notifications. */
[self setPostsFrameChangedNotifications:YES];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector (viewDidResize:)
name:NSViewFrameDidChangeNotification object:nil];
ns_window_num++;
return self;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment