X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/ab1dc14b220747e527d507d40905a24ba5c692d9..37d2e431f35492c14510f9960cac94c2f21b6ecb:/lisp/frame.el diff --git a/lisp/frame.el b/lisp/frame.el index b7b61bcc57..4bf885b27b 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -1,7 +1,7 @@ ;;; frame.el --- multi-frame management independent of window systems -;; Copyright (C) 1993-1994, 1996-1997, 2000-2012 -;; Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 1996-1997, 2000-2013 Free Software +;; Foundation, Inc. ;; Maintainer: FSF ;; Keywords: internal @@ -655,6 +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))) (put w 'window-system-initialized t)) @@ -1651,6 +1653,51 @@ terminals, cursor blinking is controlled by the terminal." blink-cursor-delay '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 @@ -1658,6 +1705,9 @@ terminals, cursor blinking is controlled by the terminal." (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.