]> code.delx.au - gnu-emacs/blobdiff - lisp/frame.el
Tue Dec 1 22:34:42 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
[gnu-emacs] / lisp / frame.el
index 4d0165f5bc9264f0e322bb64832679bffc065f34..d679f136eadd39649a69ece50cd1a46d7375bbee 100644 (file)
@@ -1,11 +1,10 @@
 ;;; frame.el --- multi-frame management independent of window systems.
 
+;;;; Copyright (C) 1990, 1992 Free Software Foundation, Inc.
+
 ;; Maintainer: FSF
-;; Last-Modified: 09 Jul 92
 ;; Keywords: internal
 
-;;;; Copyright (C) 1990, 1992 Free Software Foundation, Inc.
-
 ;;; This file is part of GNU Emacs.
 ;;;
 ;;; GNU Emacs is free software; you can redistribute it and/or modify
@@ -32,7 +31,7 @@ function, which should take an alist of parameters as its argument.")
 ;;; The default value for this must ask for a minibuffer.  There must
 ;;; always exist a frame with a minibuffer, and after we delete the
 ;;; terminal frame, this will be the only frame.
-(defvar initial-frame-alist '((minibuffer . nil))
+(defvar initial-frame-alist '((minibuffer . t))
   "Alist of values used when creating the initial emacs text frame.
 These may be set in your init file, like this:
  (setq initial-frame-alist '((top . 1) (left . 1) (width . 80) (height . 55)))
@@ -116,10 +115,14 @@ These supercede the values given in default-frame-alist.")
 (defun frame-notice-user-settings ()
   (if frame-initial-frame
       (progn
-       
        ;; If the user wants a minibuffer-only frame, we'll have to
        ;; make a new one; you can't remove or add a root window to/from
        ;; an existing frame.
+       ;; NOTE: default-frame-alist was nil when we created the
+       ;; existing frame.  We need to explicitly include
+       ;; default-frame-alist in the parameters of the screen we
+       ;; create here, so that its new value, gleaned from the user's
+       ;; .emacs file, will be applied to the existing screen.
        (if (eq (cdr (or (assq 'minibuffer initial-frame-alist)
                         '(minibuffer . t)))
                     'only)
@@ -127,10 +130,18 @@ These supercede the values given in default-frame-alist.")
              (setq default-minibuffer-frame
                    (new-frame
                     (append initial-frame-alist
+                            default-frame-alist
                             (frame-parameters frame-initial-frame))))
+
+             ;; Redirect events enqueued at this frame to the new frame.
+             ;; Is this a good idea?
+             (redirect-frame-focus frame-initial-frame
+                                   default-minibuffer-frame)
+
              (delete-frame frame-initial-frame))
          (modify-frame-parameters frame-initial-frame
-                                   initial-frame-alist))))
+                                  (append initial-frame-alist
+                                          default-frame-alist)))))
 
   ;; Make sure the initial frame can be GC'd if it is ever deleted.
   (makunbound 'frame-initial-frame))
@@ -141,7 +152,7 @@ These supercede the values given in default-frame-alist.")
 ;;; Return some frame other than the current frame,
 ;;; creating one if neccessary.  Note that the minibuffer frame, if
 ;;; separate, is not considered (see next-frame).
-(defun get-frame ()
+(defun get-other-frame ()
   (let ((s (if (equal (next-frame (selected-frame)) (selected-frame))
               (new-frame)
             (next-frame (selected-frame)))))
@@ -193,22 +204,6 @@ under the X Window System."
   (interactive)
   (funcall frame-creation-function parameters))
 
-\f
-;;;; Iconification
-
-;;; A possible enhancement for the below: if you iconify a surrogate
-;;; minibuffer frame, iconify all of its minibuffer's users too; 
-;;; de-iconify them as a group.  This will need to wait until frames
-;;; have mapping and unmapping hooks.
-
-(defun iconify ()
-  "Iconify or deiconify the selected frame."
-  (interactive)
-  (let ((frame (selected-frame)))
-    (if (eq (frame-visible-p frame) t)
-       (iconify-frame frame)
-      (make-frame-visible frame))))
-
 \f
 ;;;; Frame configurations
 
@@ -245,27 +240,15 @@ configuration, and other parameters set as specified in CONFIGURATION."
 ;;;; Convenience functions for accessing and interactively changing
 ;;;; frame parameters.
 
-(defun frame-width (&optional frame)
+(defun frame-height (&optional frame)
   "Return number of lines available for display on FRAME.
 If FRAME is omitted, describe the currently selected frame."
-  (cdr (assq 'width (frame-parameters frame))))
+  (cdr (assq 'height (frame-parameters frame))))
 
 (defun frame-width (&optional frame)
   "Return number of columns available for display on FRAME.
 If FRAME is omitted, describe the currently selected frame."
-  (cdr (assq 'height (frame-parameters frame))))
-
-(defun set-frame-height (h)
-  (interactive "NHeight: ")
-  (let* ((frame (selected-frame))
-        (width (cdr (assoc 'width (frame-parameters (selected-frame))))))
-    (set-frame-size (selected-frame) width h)))
-
-(defun set-frame-width (w)
-  (interactive "NWidth: ")
-  (let* ((frame (selected-frame))
-        (height (cdr (assoc 'height (frame-parameters (selected-frame))))))
-    (set-frame-size (selected-frame) w height)))
+  (cdr (assq 'width (frame-parameters frame))))
 
 (defun set-default-font (font-name)
   (interactive "sFont name: ")
@@ -315,8 +298,27 @@ If FRAME is omitted, describe the currently selected frame."
 ;;;; Aliases for backward compatibility with Emacs 18.
 (fset 'screen-height 'frame-height)
 (fset 'screen-width 'frame-width)
-(fset 'set-screen-width 'set-frame-width)
-(fset 'set-screen-height 'set-frame-height)
+
+(defun set-screen-width (cols &optional pretend)
+  "Obsolete function to change the size of the screen to COLS columns.\n\
+Optional second arg non-nil means that redisplay should use COLS columns\n\
+but that the idea of the actual width of the frame should not be changed.\n\
+This function is provided only for compatibility with Emacs 18; new code\n\
+should use `set-frame-width instead'."
+  (set-frame-width (selected-frame) cols pretend))
+
+(defun set-screen-height (lines &optional pretend)
+  "Obsolete function to change the height of the screen to LINES lines.\n\
+Optional second arg non-nil means that redisplay should use LINES lines\n\
+but that the idea of the actual height of the screen should not be changed.\n\
+This function is provided only for compatibility with Emacs 18; new code\n\
+should use `set-frame-width' instead."
+  (set-frame-height (selected-frame) lines pretend))
+
+(make-obsolete 'screen-height 'frame-height)
+(make-obsolete 'screen-width  'frame-width)
+(make-obsolete 'set-screen-width 'set-frame-width)
+(make-obsolete 'set-screen-height 'set-frame-height)
 
 \f
 ;;;; Key bindings