diff options
| author | Martin Rudalics | 2015-02-11 09:07:24 +0100 |
|---|---|---|
| committer | Martin Rudalics | 2015-02-11 09:07:24 +0100 |
| commit | 02138cb0b88c5f6addf891d725967d9867eda3f9 (patch) | |
| tree | 073bd7e1c58cee1f02a52ff8eabcfa6dd24a6fb2 /lisp | |
| parent | 6ebbeafc94a35e49fc3a842b5f5fbd7b069ce936 (diff) | |
| download | emacs-02138cb0b88c5f6addf891d725967d9867eda3f9.tar.gz emacs-02138cb0b88c5f6addf891d725967d9867eda3f9.zip | |
Improve toggling fullscreen state of frames.
* frame.el (toggle-frame-maximized, toggle-frame-fullscreen):
Rename frame parameter `maximized' to `fullscreen-restore'.
Restore fullwidth/-height after fullboth state. Update
doc-strings.
* w32term.c (w32_read_socket): In SIZE_MAXIMIZED and
SIZE_RESTORED cases correctly handle `maximized' value for the
`fullscreen' parameter. Don't use the 'maximized' parameter any
more.
(w32fullscreen_hook): Include menu bar height when calculating
new text height in FULLSCREEN_BOTH case.
* xterm.c (do_ewmh_fullscreen): Handle transition from
FULLSCREEN_BOTH to FULLSCREEN_MAXIMIZED when
x_frame_normalize_before_maximize is set.
* frames.texi (Size Parameters): Update description of
fullscreen frame parameter.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/ChangeLog | 7 | ||||
| -rw-r--r-- | lisp/frame.el | 73 |
2 files changed, 43 insertions, 37 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 03b465e8030..a6e5f59503e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,10 @@ | |||
| 1 | 2015-02-11 Martin Rudalics <rudalics@gmx.at> | ||
| 2 | |||
| 3 | * frame.el (toggle-frame-maximized, toggle-frame-fullscreen): | ||
| 4 | Rename frame parameter `maximized' to `fullscreen-restore'. | ||
| 5 | Restore fullwidth/-height after fullboth state. Update | ||
| 6 | doc-strings. | ||
| 7 | |||
| 1 | 2015-02-11 Lars Ingebrigtsen <larsi@gnus.org> | 8 | 2015-02-11 Lars Ingebrigtsen <larsi@gnus.org> |
| 2 | 9 | ||
| 3 | * net/shr.el (shr-insert): Make sure the space inserted has the | 10 | * net/shr.el (shr-insert): Make sure the space inserted has the |
diff --git a/lisp/frame.el b/lisp/frame.el index ecb433e8335..dfcebf16455 100644 --- a/lisp/frame.el +++ b/lisp/frame.el | |||
| @@ -1874,57 +1874,56 @@ terminals, cursor blinking is controlled by the terminal." | |||
| 1874 | ;; Frame maximization/fullscreen | 1874 | ;; Frame maximization/fullscreen |
| 1875 | 1875 | ||
| 1876 | (defun toggle-frame-maximized () | 1876 | (defun toggle-frame-maximized () |
| 1877 | "Toggle maximization state of the selected frame. | 1877 | "Toggle maximization state of selected frame. |
| 1878 | Maximize the selected frame or un-maximize if it is already maximized. | 1878 | Maximize selected frame or un-maximize if it is already maximized. |
| 1879 | Respect window manager screen decorations. | 1879 | |
| 1880 | If the frame is in fullscreen mode, don't change its mode, | 1880 | If the frame is in fullscreen state, don't change its state, but |
| 1881 | just toggle the temporary frame parameter `maximized', | 1881 | set the frame's `fullscreen-restore' parameter to `maximized', so |
| 1882 | so the frame will go to the right maximization state | 1882 | the frame will be maximized after disabling fullscreen state. |
| 1883 | after disabling fullscreen mode. | ||
| 1884 | 1883 | ||
| 1885 | Note that with some window managers you may have to set | 1884 | Note that with some window managers you may have to set |
| 1886 | `frame-resize-pixelwise' to non-nil in order to make a frame | 1885 | `frame-resize-pixelwise' to non-nil in order to make a frame |
| 1887 | appear truly maximized. | 1886 | appear truly maximized. In addition, you may have to set |
| 1887 | `x-frame-normalize-before-maximize' in order to enable | ||
| 1888 | transitions from one fullscreen state to another. | ||
| 1888 | 1889 | ||
| 1889 | See also `toggle-frame-fullscreen'." | 1890 | See also `toggle-frame-fullscreen'." |
| 1890 | (interactive) | 1891 | (interactive) |
| 1891 | (if (memq (frame-parameter nil 'fullscreen) '(fullscreen fullboth)) | 1892 | (let ((fullscreen (frame-parameter nil 'fullscreen))) |
| 1892 | (modify-frame-parameters | 1893 | (cond |
| 1893 | nil | 1894 | ((memq fullscreen '(fullscreen fullboth)) |
| 1894 | `((maximized | 1895 | (set-frame-parameter nil 'fullscreen-restore 'maximized)) |
| 1895 | . ,(unless (eq (frame-parameter nil 'maximized) 'maximized) | 1896 | ((eq fullscreen 'maximized) |
| 1896 | 'maximized)))) | 1897 | (set-frame-parameter nil 'fullscreen nil)) |
| 1897 | (modify-frame-parameters | 1898 | (t |
| 1898 | nil | 1899 | (set-frame-parameter nil 'fullscreen 'maximized))))) |
| 1899 | `((fullscreen | ||
| 1900 | . ,(unless (eq (frame-parameter nil 'fullscreen) 'maximized) | ||
| 1901 | 'maximized)))))) | ||
| 1902 | 1900 | ||
| 1903 | (defun toggle-frame-fullscreen () | 1901 | (defun toggle-frame-fullscreen () |
| 1904 | "Toggle fullscreen mode of the selected frame. | 1902 | "Toggle fullscreen state of selected frame. |
| 1905 | Enable fullscreen mode of the selected frame or disable if it is | 1903 | Make selected frame fullscreen or restore its previous size if it |
| 1906 | already fullscreen. Ignore window manager screen decorations. | 1904 | is already fullscreen. |
| 1907 | When turning on fullscreen mode, remember the previous value of the | 1905 | |
| 1908 | maximization state in the temporary frame parameter `maximized'. | 1906 | Before making the frame fullscreen remember the current value of |
| 1909 | Restore the maximization state when turning off fullscreen mode. | 1907 | the frame's `fullscreen' parameter in the `fullscreen-restore' |
| 1908 | parameter of the frame. That value is used to restore the | ||
| 1909 | frame's size when toggling fullscreen the next time. | ||
| 1910 | 1910 | ||
| 1911 | Note that with some window managers you may have to set | 1911 | Note that with some window managers you may have to set |
| 1912 | `frame-resize-pixelwise' to non-nil in order to make a frame | 1912 | `frame-resize-pixelwise' to non-nil in order to make a frame |
| 1913 | appear truly fullscreen. | 1913 | appear truly fullscreen. In addition, you may have to set |
| 1914 | `x-frame-normalize-before-maximize' in order to enable | ||
| 1915 | transitions from one fullscreen state to another. | ||
| 1914 | 1916 | ||
| 1915 | See also `toggle-frame-maximized'." | 1917 | See also `toggle-frame-maximized'." |
| 1916 | (interactive) | 1918 | (interactive) |
| 1917 | (modify-frame-parameters | 1919 | (let ((fullscreen (frame-parameter nil 'fullscreen))) |
| 1918 | nil | 1920 | (if (memq fullscreen '(fullscreen fullboth)) |
| 1919 | `((maximized | 1921 | (let ((fullscreen-restore (frame-parameter nil 'fullscreen-restore))) |
| 1920 | . ,(unless (memq (frame-parameter nil 'fullscreen) '(fullscreen fullboth)) | 1922 | (if (memq fullscreen-restore '(maximized fullheight fullwidth)) |
| 1921 | (frame-parameter nil 'fullscreen))) | 1923 | (set-frame-parameter nil 'fullscreen fullscreen-restore) |
| 1922 | (fullscreen | 1924 | (set-frame-parameter nil 'fullscreen nil))) |
| 1923 | . ,(if (memq (frame-parameter nil 'fullscreen) '(fullscreen fullboth)) | 1925 | (modify-frame-parameters |
| 1924 | (if (eq (frame-parameter nil 'maximized) 'maximized) | 1926 | nil `((fullscreen . fullboth) (fullscreen-restore . ,fullscreen)))))) |
| 1925 | 'maximized) | ||
| 1926 | 'fullscreen))))) | ||
| 1927 | |||
| 1928 | 1927 | ||
| 1929 | ;;;; Key bindings | 1928 | ;;;; Key bindings |
| 1930 | 1929 | ||