Save and restore text-pixel height and width of frames (Bug#28442)
* lisp/frameset.el (frameset--record-relationships): Record text-pixel-height and text-pixel-width of frame. (frameset--restore-frame): Restore text-pixel-height and text-pixel-width of frame if available. (Bug#28442)
This commit is contained in:
parent
777fe94661
commit
804b37ca63
1 changed files with 27 additions and 1 deletions
|
@ -745,6 +745,8 @@ The relationships recorded for each frame are
|
||||||
- `delete-before' via `frameset--delete-before'
|
- `delete-before' via `frameset--delete-before'
|
||||||
- `parent-frame' via `frameset--parent-frame'
|
- `parent-frame' via `frameset--parent-frame'
|
||||||
- `mouse-wheel-frame' via `frameset--mouse-wheel-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."
|
Internal use only."
|
||||||
;; Record frames with their own minibuffer
|
;; Record frames with their own minibuffer
|
||||||
|
@ -791,7 +793,23 @@ Internal use only."
|
||||||
'frameset--mini
|
'frameset--mini
|
||||||
(cons nil
|
(cons nil
|
||||||
(and mb-frame
|
(and mb-frame
|
||||||
(frameset-frame-id mb-frame))))))))))
|
(frameset-frame-id mb-frame)))))))))
|
||||||
|
;; Now store text-pixel width and height if it differs from the calculated
|
||||||
|
;; width and height and the frame is not fullscreen.
|
||||||
|
(dolist (frame frame-list)
|
||||||
|
(unless (frame-parameter frame 'fullscreen)
|
||||||
|
(unless (eq (* (frame-parameter frame 'width)
|
||||||
|
(frame-char-width frame))
|
||||||
|
(frame-text-width frame))
|
||||||
|
(set-frame-parameter
|
||||||
|
frame 'frameset--text-pixel-width
|
||||||
|
(frame-text-width frame)))
|
||||||
|
(unless (eq (* (frame-parameter frame 'height)
|
||||||
|
(frame-char-height frame))
|
||||||
|
(frame-text-height frame))
|
||||||
|
(set-frame-parameter
|
||||||
|
frame 'frameset--text-pixel-height
|
||||||
|
(frame-text-height frame))))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(cl-defun frameset-save (frame-list
|
(cl-defun frameset-save (frame-list
|
||||||
|
@ -1002,6 +1020,14 @@ Internal use only."
|
||||||
(display (cdr (assq 'display filtered-cfg))) ;; post-filtering
|
(display (cdr (assq 'display filtered-cfg))) ;; post-filtering
|
||||||
alt-cfg frame)
|
alt-cfg frame)
|
||||||
|
|
||||||
|
;; Use text-pixels for height and width, if available.
|
||||||
|
(let ((text-pixel-width (cdr (assq 'frameset--text-pixel-width parameters)))
|
||||||
|
(text-pixel-height (cdr (assq 'frameset--text-pixel-height parameters))))
|
||||||
|
(when text-pixel-width
|
||||||
|
(setf (alist-get 'width filtered-cfg) (cons 'text-pixels text-pixel-width)))
|
||||||
|
(when text-pixel-height
|
||||||
|
(setf (alist-get 'height filtered-cfg) (cons 'text-pixels text-pixel-height))))
|
||||||
|
|
||||||
(when fullscreen
|
(when fullscreen
|
||||||
;; Currently Emacs has the limitation that it does not record the size
|
;; Currently Emacs has the limitation that it does not record the size
|
||||||
;; and position of a frame before maximizing it, so we cannot save &
|
;; and position of a frame before maximizing it, so we cannot save &
|
||||||
|
|
Loading…
Add table
Reference in a new issue