]> git.eshelyaron.com Git - emacs.git/commitdiff
NS: Set frame position when entering/exiting fullscreen (bug#71912)
authorGerd Möllmann <gerd@gnu.org>
Thu, 25 Jul 2024 07:20:04 +0000 (09:20 +0200)
committerEshel Yaron <me@eshelyaron.com>
Fri, 2 Aug 2024 09:56:11 +0000 (11:56 +0200)
* src/nsterm.h ([EmacsView adjustEmacsRectRect]): Declare.
* src/nsterm.m ([EmacsView windowDidEnterFullScreen]): New method.
([EmacsView windowDidEnterFullScreen]): Call it.
([EmacsView windowDidExitFullScreen]): Call it.

(cherry picked from commit 9f7c1ace9f86e4b657030a6e94c5d6aadc586878)

src/nsterm.h
src/nsterm.m

index 3a713f8e8c949000c6e3b80d562156d7ba7c451b..e3f55c4e41c1a8718f45cd0cf1c519284d0c4905 100644 (file)
@@ -522,6 +522,7 @@ enum ns_return_frame_mode
 - (void)copyRect:(NSRect)srcRect to:(NSPoint)dest;
 
 /* Non-notification versions of NSView methods. Used for direct calls.  */
+- (void)adjustEmacsFrameRect;
 - (void)windowWillEnterFullScreen;
 - (void)windowDidEnterFullScreen;
 - (void)windowWillExitFullScreen;
index d25f216edd49b07c05d98cdb8452d35b937006ad..8a0c12c7369f6624b580502d8c2bd9e7b8c0de60 100644 (file)
@@ -8318,6 +8318,15 @@ ns_in_echo_area (void)
   [self windowDidEnterFullScreen];
 }
 
+- (void)adjustEmacsFrameRect
+{
+  struct frame *f = emacsframe;
+  NSWindow *frame_window = [FRAME_NS_VIEW (f) window];
+  NSRect r = [frame_window frame];
+  f->left_pos = NSMinX (r) - NS_PARENT_WINDOW_LEFT_POS (f);
+  f->top_pos = NS_PARENT_WINDOW_TOP_POS (f) - NSMaxY (r);
+}
+
 - (void)windowDidEnterFullScreen /* provided for direct calls */
 {
   NSTRACE ("[EmacsView windowDidEnterFullScreen]");
@@ -8347,6 +8356,10 @@ ns_in_echo_area (void)
         }
 #endif
     }
+
+  /* Do what windowDidMove does which isn't called when entering/exiting
+     fullscreen mode.  */
+  [self adjustEmacsFrameRect];
 }
 
 - (void)windowWillExitFullScreen:(NSNotification *)notification
@@ -8389,6 +8402,10 @@ ns_in_echo_area (void)
 
   if (next_maximized != -1)
     [[self window] performZoom:self];
+
+  /* Do what windowDidMove does which isn't called when entering/exiting
+     fullscreen mode.  */
+  [self adjustEmacsFrameRect];
 }
 
 - (BOOL)fsIsNative