Function: frameset--record-relationships

frameset--record-relationships is a byte-compiled function defined in frameset.el.gz.

Signature

(frameset--record-relationships FRAME-LIST)

Documentation

Process FRAME-LIST and record relationships.

FRAME-LIST is a list of frames.

The relationships recorded for each frame are

- minibuffer via frameset--mini
- delete-before via frameset--delete-before
- parent-frame via frameset--parent-frame
- mouse-wheel-frame via frameset--mouse-wheel-frame
- text-pixel-width via frameset--text-pixel-width
- text-pixel-height via frameset--text-pixel-height

Internal use only.

Source Code

;; Defined in /usr/src/emacs/lisp/frameset.el.gz
;; Saving framesets

(defun frameset--record-relationships (frame-list)
  "Process FRAME-LIST and record relationships.
FRAME-LIST is a list of frames.

The relationships recorded for each frame are

- `minibuffer' via `frameset--mini'
- `delete-before' via `frameset--delete-before'
- `parent-frame' via `frameset--parent-frame'
- `mouse-wheel-frame' via `frameset--mouse-wheel-frame'
- `text-pixel-width' via `frameset--text-pixel-width'
- `text-pixel-height' via `frameset--text-pixel-height'

Internal use only."
  ;; Record frames with their own minibuffer
  (dolist (frame (minibuffer-frame-list))
    (when (memq frame frame-list)
      (frameset--set-id frame)
      ;; For minibuffer-owning frames, frameset--mini is a cons
      ;; (t . DEFAULT?), where DEFAULT? is a boolean indicating whether
      ;; the frame is the one pointed out by `default-minibuffer-frame'.
      (set-frame-parameter frame
			   'frameset--mini
			   (cons t (eq frame default-minibuffer-frame)))))
  ;; Now link minibufferless frames with their minibuffer frames and
  ;; store `parent-frame', `delete-before' and `mouse-wheel-frame'
  ;; relationships in a similar way.
  (dolist (frame frame-list)
    (let ((parent-frame (frame-parent frame))
          (delete-before (frame-parameter frame 'delete-before))
          (mouse-wheel-frame (frame-parameter frame 'mouse-wheel-frame))
          (nomini (not (frame-parameter frame 'frameset--mini))))
      (when (or nomini parent-frame delete-before mouse-wheel-frame)
        (when nomini
          (frameset--set-id frame))
        (when parent-frame
          (set-frame-parameter
           frame 'frameset--parent-frame (frameset-frame-id parent-frame)))
        (when delete-before
          (set-frame-parameter
           frame 'frameset--delete-before (frameset-frame-id delete-before)))
        (when mouse-wheel-frame
          (set-frame-parameter
           frame 'frameset--mouse-wheel-frame
           (frameset-frame-id mouse-wheel-frame)))
        (when nomini
          (let ((mb-frame (window-frame (minibuffer-window frame))))
            ;; For minibufferless frames, frameset--mini is a cons
            ;; (nil . FRAME-ID), where FRAME-ID is the frameset--id of
            ;; the frame containing its minibuffer window.
            ;; FRAME-ID can be set to nil, if FRAME-LIST doesn't contain
            ;; the minibuffer frame of a minibufferless frame; we allow
            ;; it without trying to second-guess the user.
            (set-frame-parameter
             frame
             'frameset--mini
             (cons nil
                   (and mb-frame
                        (frameset-frame-id mb-frame)))))))))
  ;; Now store text-pixel width and height if `frame-resize-pixelwise'
  ;; is set.  (Bug#30141)
  (dolist (frame frame-list)
    (when (and frame-resize-pixelwise
               (not (frame-parameter frame 'fullscreen)))
      (set-frame-parameter
       frame 'frameset--text-pixel-width
       (frame-text-width frame))
      (set-frame-parameter
       frame 'frameset--text-pixel-height
       (frame-text-height frame)))))