diff options
Diffstat (limited to 'lisp/frame.el')
-rw-r--r-- | lisp/frame.el | 53 |
1 files changed, 50 insertions, 3 deletions
diff --git a/lisp/frame.el b/lisp/frame.el index 6b6b7a28c66..454b229d59e 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -655,9 +655,8 @@ the new frame according to its own rules." (error "Don't know how to create a frame on window system %s" w)) (unless (get w 'window-system-initialized) - (unless x-display-name - (setq x-display-name display)) - (funcall (cdr (assq w window-system-initialization-alist))) + (funcall (cdr (assq w window-system-initialization-alist)) display) + (setq x-display-name display) (put w 'window-system-initialized t)) ;; Add parameters from `window-system-default-frame-alist'. @@ -1654,12 +1653,60 @@ terminals, cursor blinking is controlled by the terminal." 'blink-cursor-start)))) +;; Frame maximization/fullscreen + +(defun toggle-frame-maximized () + "Toggle maximization state of the selected frame. +Maximize the selected frame or un-maximize if it is already maximized. +Respect window manager screen decorations. +If the frame is in fullscreen mode, don't change its mode, +just toggle the temporary frame parameter `maximized', +so the frame will go to the right maximization state +after disabling fullscreen mode. +See also `toggle-frame-fullscreen'." + (interactive) + (if (memq (frame-parameter nil 'fullscreen) '(fullscreen fullboth)) + (modify-frame-parameters + nil + `((maximized + . ,(unless (eq (frame-parameter nil 'maximized) 'maximized) + 'maximized)))) + (modify-frame-parameters + nil + `((fullscreen + . ,(unless (eq (frame-parameter nil 'fullscreen) 'maximized) + 'maximized)))))) + +(defun toggle-frame-fullscreen () + "Toggle fullscreen mode of the selected frame. +Enable fullscreen mode of the selected frame or disable if it is +already fullscreen. Ignore window manager screen decorations. +When turning on fullscreen mode, remember the previous value of the +maximization state in the temporary frame parameter `maximized'. +Restore the maximization state when turning off fullscreen mode. +See also `toggle-frame-maximized'." + (interactive) + (modify-frame-parameters + nil + `((maximized + . ,(unless (memq (frame-parameter nil 'fullscreen) '(fullscreen fullboth)) + (frame-parameter nil 'fullscreen))) + (fullscreen + . ,(if (memq (frame-parameter nil 'fullscreen) '(fullscreen fullboth)) + (if (eq (frame-parameter nil 'maximized) 'maximized) + 'maximized) + 'fullscreen))))) + + ;;;; Key bindings (define-key ctl-x-5-map "2" 'make-frame-command) (define-key ctl-x-5-map "1" 'delete-other-frames) (define-key ctl-x-5-map "0" 'delete-frame) (define-key ctl-x-5-map "o" 'other-frame) +(define-key global-map [f11] 'toggle-frame-fullscreen) +(define-key global-map [(meta f10)] 'toggle-frame-maximized) +(define-key esc-map [f10] 'toggle-frame-maximized) ;; Misc. |