changeset 35856:41652bd90468

(frame-notice-user-settings): When resizing the initial frame because the tool bar is off, also change the frame's top position if a negative top position was specified.
author Gerd Moellmann <gerd@gnu.org>
date Fri, 02 Feb 2001 13:55:42 +0000
parents 6b4581bb1cfa
children 84bccf78a45f
files lisp/frame.el
diffstat 1 files changed, 36 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/frame.el	Fri Feb 02 13:11:39 2001 +0000
+++ b/lisp/frame.el	Fri Feb 02 13:55:42 2001 +0000
@@ -288,32 +288,42 @@
       ;; When tool-bar has been switched off, correct the frame size
       ;; by the lines added in x-create-frame for the tool-bar and
       ;; switch `tool-bar-mode' off.
-      (when (and (display-graphic-p)
-		 (or (eq 0 (cdr (assq 'tool-bar-lines initial-frame-alist)))
-		     (eq 0 (cdr (assq 'tool-bar-lines default-frame-alist)))))
-	(let* ((char-height (frame-char-height frame-initial-frame))
-	       (image-height 24)
-	       (margin (cond ((and (consp tool-bar-button-margin)
-				   (integerp (cdr tool-bar-button-margin))
-				   (> tool-bar-button-margin 0))
-			      (cdr tool-bar-button-margin))
-			     ((and (integerp tool-bar-button-margin)
-				   (> tool-bar-button-margin 0))
-			      tool-bar-button-margin)
-			     (t 0)))
-	       (relief (if (and (integerp tool-bar-button-relief)
-				(> tool-bar-button-relief 0))
-			   tool-bar-button-relief 3))
-	       (lines (/ (+ image-height 
-			    (* 2 margin)
-			    (* 2 relief)
-			    (1- char-height))
-			 char-height))
-	       (height (frame-parameter frame-initial-frame 'height)))
-	  (modify-frame-parameters frame-initial-frame
-				   (list (cons 'height (- height lines))))
-	  (tool-bar-mode -1)))
-			  
+      (when (display-graphic-p)
+	(let ((tool-bar-lines (or (assq 'tool-bar-lines initial-frame-alist)
+				  (assq 'tool-bar-lines default-frame-alist))))
+	  (when (or (null tool-bar-lines)
+		    (null (cdr tool-bar-lines))
+		    (eq 0 (cdr tool-bar-lines)))
+	    (let* ((char-height (frame-char-height frame-initial-frame))
+		   (image-height 24)
+		   (margin (cond ((and (consp tool-bar-button-margin)
+				       (integerp (cdr tool-bar-button-margin))
+				       (> tool-bar-button-margin 0))
+				  (cdr tool-bar-button-margin))
+				 ((and (integerp tool-bar-button-margin)
+				       (> tool-bar-button-margin 0))
+				  tool-bar-button-margin)
+				 (t 0)))
+		   (relief (if (and (integerp tool-bar-button-relief)
+				    (> tool-bar-button-relief 0))
+			       tool-bar-button-relief 3))
+		   (lines (/ (+ image-height 
+				(* 2 margin)
+				(* 2 relief)
+				(1- char-height))
+			     char-height))
+		   (height (frame-parameter frame-initial-frame 'height))
+		   (newparms (list (cons 'height (- height lines))))
+		   (initial-top (cdr (assq 'top 
+					   frame-initial-geometry-arguments)))
+		   (top (frame-parameter frame-initial-frame 'top)))
+	      (when (and (consp initial-top) (eq '- (car initial-top)))
+		(setq newparms 
+		      (append newparms 
+			      `((top . ,(+ top (* lines char-height))))
+			      nil)))
+	      (modify-frame-parameters frame-initial-frame newparms)
+	      (tool-bar-mode -1)))))
 
       ;; The initial frame we create above always has a minibuffer.
       ;; If the user wants to remove it, or make it a minibuffer-only