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)))))