summaryrefslogtreecommitdiff
path: root/lisp/frame.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1994-05-05 22:37:47 +0000
committerRichard M. Stallman <rms@gnu.org>1994-05-05 22:37:47 +0000
commit791e09d82bf5026f1dcd7ef22e70b1be31bca2a4 (patch)
tree18cfbafc67adb067434131c9ae8f9ce96b138abb /lisp/frame.el
parent082dc2112313d8e38a22d63e65226cb56a10807e (diff)
downloademacs-791e09d82bf5026f1dcd7ef22e70b1be31bca2a4.tar.gz
(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.
Diffstat (limited to 'lisp/frame.el')
-rw-r--r--lisp/frame.el23
1 files changed, 18 insertions, 5 deletions
diff --git a/lisp/frame.el b/lisp/frame.el
index 1b7ef4a1ba7..915c96c43dc 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))