From 791e09d82bf5026f1dcd7ef22e70b1be31bca2a4 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Thu, 5 May 1994 22:37:47 +0000 Subject: [PATCH] (frame-notice-user-settings): When replacing the first X frame, use the same geometry parms that were used to make it. (frame-remove-geometry-params): Treat user-size and user-position as geometry parms. Store all those parms into frame-initial-geometry-arguments. --- lisp/frame.el | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/lisp/frame.el b/lisp/frame.el index 1b7ef4a1ba..915c96c43d 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -112,6 +112,8 @@ These supersede the values given in `default-frame-alist'.") ;; Record the parameters used in frame-initialize to make the initial frame. (defvar frame-initial-frame-alist) +(defvar frame-initial-geometry-arguments nil) + ;;; startup.el calls this function before loading the user's init ;;; file - if there is no frame with a minibuffer open now, create ;;; one to display messages while loading the init file. @@ -187,8 +189,15 @@ These supersede the values given in `default-frame-alist'.") nil)) ;; Get rid of `reverse', because that was handled ;; when we first made the frame. - (new (make-frame (cons '(reverse . nil) - (delq (assq 'reverse parms) parms))))) + (new (make-frame + ;; Use the geometry args that created the existing + ;; frame, rather than the parms we get for it.q + (append frame-initial-geometry-arguments + (let (frame-initial-geometry-arguments) + (frame-remove-geometry-params + (cons '(reverse . nil) + (delq (assq 'reverse parms) + parms)))))))) ;; The initial frame, which we are about to delete, may be ;; the only frame with a minibuffer. If it is, create a ;; new one. @@ -352,15 +361,19 @@ additional frame parameters that Emacs recognizes for X window frames." (defun frame-remove-geometry-params (param-list) "Return the parameter list PARAM-LIST, but with geometry specs removed. This deletes all bindings in PARAM-LIST for `top', `left', `width', -and `height' parameters. +`height', `user-size' and `user-position' parameters. Emacs uses this to avoid overriding explicit moves and resizings from the user during startup." (setq param-list (cons nil param-list)) (let ((tail param-list)) (while (consp (cdr tail)) (if (and (consp (car (cdr tail))) - (memq (car (car (cdr tail))) '(height width top left))) - (setcdr tail (cdr (cdr tail))) + (memq (car (car (cdr tail))) + '(height width top left user-position user-size))) + (progn + (setq frame-initial-geometry-arguments + (cons (car (cdr tail)) frame-initial-geometry-arguments)) + (setcdr tail (cdr (cdr tail)))) (setq tail (cdr tail))))) (cdr param-list)) -- 2.20.1