* Proposal for a new API to fullscreen @ 2008-08-19 7:46 Ivan Kanis 2008-08-19 9:31 ` Tassilo Horn ` (2 more replies) 0 siblings, 3 replies; 41+ messages in thread From: Ivan Kanis @ 2008-08-19 7:46 UTC (permalink / raw) To: emacs-devel Hello, By fullscreen I mean no taskbar, emacs take all the screen estate. The current way to switch to this mode is (set-frame-parameter nil 'fullscreen 'fullboth) However this is very ambiguous, it does fullscreen on Gnome and maximise on Mac and Windows. I propose a new API to solve the ambiguity: (fullscreen-mode 1) Turns on fullscreen mode. We can set a variable of the same name to check the state. Remove the hook mode in Gnome that should not really be there. What do people think? I am willing to spend time coding it. Thank you in advance for your comments. -- Ivan http://kanis.fr To live is so startling it leaves little time for anything else. -- Emily Dickinson ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 7:46 Proposal for a new API to fullscreen Ivan Kanis @ 2008-08-19 9:31 ` Tassilo Horn 2008-08-19 9:58 ` René Kyllingstad 2008-08-19 9:59 ` Andreas Schwab 2008-08-19 13:08 ` Jason Rumney 2008-08-19 15:08 ` Tom Tromey 2 siblings, 2 replies; 41+ messages in thread From: Tassilo Horn @ 2008-08-19 9:31 UTC (permalink / raw) To: emacs-devel On Tuesday 19 August 2008 09:46:42 Ivan Kanis wrote: Hi! > By fullscreen I mean no taskbar, emacs take all the screen estate. Isn't fullscreen display of some application window something the window manager should deal with, not the application itself? For example in KDE or stumpwm you can make any window fullscreen (via a window menu or a keybinding), and I'm sure it's the same for GNOME and most/all other windowmanagers. The only situation where I can imagine that a application side command is useful, is when you don't use a window manager at all and your .xinitrc only starts emacs. But then one could use the -g option for the same effect... Bye, Tassilo ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 9:31 ` Tassilo Horn @ 2008-08-19 9:58 ` René Kyllingstad 2008-08-19 10:26 ` Tassilo Horn 2008-08-19 9:59 ` Andreas Schwab 1 sibling, 1 reply; 41+ messages in thread From: René Kyllingstad @ 2008-08-19 9:58 UTC (permalink / raw) To: Tassilo Horn; +Cc: emacs-devel * Tassilo Horn: > On Tuesday 19 August 2008 09:46:42 Ivan Kanis wrote: > > Hi! > > > By fullscreen I mean no taskbar, emacs take all the screen estate. > > Isn't fullscreen display of some application window something the window > manager should deal with, not the application itself? For example in > KDE or stumpwm you can make any window fullscreen (via a window menu or > a keybinding), and I'm sure it's the same for GNOME and most/all other > windowmanagers. > > The only situation where I can imagine that a application side command > is useful, is when you don't use a window manager at all and your > .xinitrc only starts emacs. But then one could use the -g option for > the same effect... What if you live in Emacs, and use the same config on many window managers and platforms? Then it's nice to configure it once in Emacs. -- René ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 9:58 ` René Kyllingstad @ 2008-08-19 10:26 ` Tassilo Horn 2008-08-19 11:11 ` René Kyllingstad 0 siblings, 1 reply; 41+ messages in thread From: Tassilo Horn @ 2008-08-19 10:26 UTC (permalink / raw) To: emacs-devel On Tuesday 19 August 2008 11:58:51 René Kyllingstad wrote: Hi René, > What if you live in Emacs, and use the same config on many window > managers and platforms? Then it's nice to configure it once in Emacs. Ok, I see. Then this command probably does what you and the OP want. --8<---------------cut here---------------start------------->8--- (defun toggle-frame-fullscreen () "Toggle the fullscreen status of the current frame." (interactive) (if (eq (frame-parameter nil 'fullscreen) 'fullboth) (set-frame-parameter nil 'fullscreen nil) (set-frame-parameter nil 'fullscreen 'fullboth))) --8<---------------cut here---------------end--------------->8--- Bye, Tassilo ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 10:26 ` Tassilo Horn @ 2008-08-19 11:11 ` René Kyllingstad 2008-08-19 11:36 ` Tassilo Horn 0 siblings, 1 reply; 41+ messages in thread From: René Kyllingstad @ 2008-08-19 11:11 UTC (permalink / raw) To: Tassilo Horn; +Cc: emacs-devel * Tassilo Horn: > On Tuesday 19 August 2008 11:58:51 René Kyllingstad wrote: > > Hi René, > > > What if you live in Emacs, and use the same config on many window > > managers and platforms? Then it's nice to configure it once in Emacs. > > Ok, I see. Then this command probably does what you and the OP want. > > --8<---------------cut here---------------start------------->8--- > (defun toggle-frame-fullscreen () > "Toggle the fullscreen status of the current frame." > (interactive) > (if (eq (frame-parameter nil 'fullscreen) 'fullboth) > (set-frame-parameter nil 'fullscreen nil) > (set-frame-parameter nil 'fullscreen 'fullboth))) > --8<---------------cut here---------------end--------------->8--- As the OP said, it isn't implemented as fullscreen on win32. I didn't find a list of what frame-parameters are recognized, and which values, but fullboth indicates to me that we're actually talking about maximize, and the options are horizontal, vertical, both, in classic X11 VM style. This is AFAICT the ambiguity the OP was wanted to address. How would you request maximize if fullboth is fullscreen? A maximize frame parameter? -- René ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 11:11 ` René Kyllingstad @ 2008-08-19 11:36 ` Tassilo Horn 2008-08-19 11:59 ` Ivan Kanis 0 siblings, 1 reply; 41+ messages in thread From: Tassilo Horn @ 2008-08-19 11:36 UTC (permalink / raw) To: emacs-devel On Tuesday 19 August 2008 13:11:45 René Kyllingstad wrote: Hi René, > > --8<---------------cut here---------------start------------->8--- > > (defun toggle-frame-fullscreen () > > "Toggle the fullscreen status of the current frame." > > (interactive) > > (if (eq (frame-parameter nil 'fullscreen) 'fullboth) > > (set-frame-parameter nil 'fullscreen nil) > > (set-frame-parameter nil 'fullscreen 'fullboth))) > > --8<---------------cut here---------------end--------------->8--- > > As the OP said, it isn't implemented as fullscreen on win32. Yes, but according to the docs it should. ,----[ (info "(elisp)Size Parameters") ] | `fullscreen' | Specify that width, height or both shall be set to the size of the | screen. The value `fullwidth' specifies that width shall be the | size of the screen. The value `fullheight' specifies that height | shall be the size of the screen. The value `fullboth' specifies | that both the width and the height shall be set to the size of the | screen. `---- In my opinion "size of the screen" != "size of the screen excluding taskbar and stuff". So I'd consider that w32 behavior a bug. > I didn't find a list of what frame-parameters are recognized, and > which values, but fullboth indicates to me that we're actually talking > about maximize, and the options are horizontal, vertical, both, in > classic X11 VM style. As I pasted above, the docs talk about "size of the screen". And it seems that this is not implemented for w32 currently. There're other frame parameters like height and width, but that won't get rid of the taskbar and window decorations. > This is AFAICT the ambiguity the OP was wanted to address. Probably. So the real request would be to make the fullscreen parameter work as documented on w32. Then my toggle could be used as UI for that feature. > How would you request maximize if fullboth is fullscreen? A maximize > frame parameter? There seems to be no such parameter. You could use the height, width, left and top parameters to move the frame to position 0,0 and resize it to the maximum screen estate excluding taskbars, docs and such stuff. Then you'd need the size a maximized window has as pixel values, because I see no possibility to get those informations from inside emacs. Bye, Tassilo ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 11:36 ` Tassilo Horn @ 2008-08-19 11:59 ` Ivan Kanis 2008-08-19 12:13 ` Lennart Borgman (gmail) ` (2 more replies) 0 siblings, 3 replies; 41+ messages in thread From: Ivan Kanis @ 2008-08-19 11:59 UTC (permalink / raw) To: emacs-devel Tassilo Horn <tassilo@member.fsf.org> writes: > Yes, but according to the docs it should. > > ,----[ (info "(elisp)Size Parameters") ] > | `fullscreen' > | Specify that width, height or both shall be set to the size of the > | screen. The value `fullwidth' specifies that width shall be the > | size of the screen. The value `fullheight' specifies that height > | shall be the size of the screen. The value `fullboth' specifies > | that both the width and the height shall be set to the size of the > | screen. > `---- > > In my opinion "size of the screen" != "size of the screen excluding > taskbar and stuff". So I'd consider that w32 behavior a bug. Well 'fullheight' does screen height minus taskbar in Gnome. So 'screen' in the do really means usable desktop space. If you follow the logic 'fullboth' should be maximize minus desktop toolbar. After looking at the code for many days, it could be simplified by creating a new API for fullscreen that just DTRT on X, Mac and Windows. I have made a patch for Windows that I sent on this list. There is a function called mac-toggle-max-window on Carbon Emacs that works. I am volunteering the time it takes to do it on 22 or 23 if we can agree on something. The code would be simpler once it's finished: no more hook functions on the C layer. -- Ivan http://kanis.fr Never attribute to malice what can adequately be explained by stupidity. -- Robert J. Hanlon ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 11:59 ` Ivan Kanis @ 2008-08-19 12:13 ` Lennart Borgman (gmail) 2008-08-19 13:31 ` Ivan Kanis 2008-08-19 12:47 ` Tassilo Horn 2008-08-19 15:11 ` Tom Tromey 2 siblings, 1 reply; 41+ messages in thread From: Lennart Borgman (gmail) @ 2008-08-19 12:13 UTC (permalink / raw) To: Ivan Kanis; +Cc: emacs-devel Ivan Kanis wrote: > I have made a patch for Windows that I sent on this list. There is a > function called mac-toggle-max-window on Carbon Emacs that works. There is a patch for maximizing windows in Emacs+EmacsW32 that have been used for some years now. This has not been adopted into Emacs partly because it was not clear if the Emacs display engine could handle it correctly. In fact there is (was?) a small bug regarding screen update (at the bottom of screen). ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 12:13 ` Lennart Borgman (gmail) @ 2008-08-19 13:31 ` Ivan Kanis 2008-08-19 13:40 ` Lennart Borgman (gmail) 2008-08-19 13:42 ` Lennart Borgman (gmail) 0 siblings, 2 replies; 41+ messages in thread From: Ivan Kanis @ 2008-08-19 13:31 UTC (permalink / raw) To: emacs-devel "Lennart Borgman (gmail)" <lennart.borgman@gmail.com> writes: > There is a patch for maximizing windows in Emacs+EmacsW32 that have been > used for some years now. Hi Lennart, could you point me to that patch? It looks like I have duplicated work. Thanks, -- Ivan http://kanis.fr Seriousness is the only refuge of the shallow. -- Oscar Wilde ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 13:31 ` Ivan Kanis @ 2008-08-19 13:40 ` Lennart Borgman (gmail) 2008-08-19 13:42 ` Lennart Borgman (gmail) 1 sibling, 0 replies; 41+ messages in thread From: Lennart Borgman (gmail) @ 2008-08-19 13:40 UTC (permalink / raw) To: Ivan Kanis; +Cc: emacs-devel Ivan Kanis wrote: > "Lennart Borgman (gmail)" <lennart.borgman@gmail.com> writes: > >> There is a patch for maximizing windows in Emacs+EmacsW32 that have been >> used for some years now. > > Hi Lennart, could you point me to that patch? It looks like I have > duplicated work. It was a long time ago I wrote it, it is intermingled with other patches now. It aught to be these parts: Index: src/w32fns.c =================================================================== RCS file: /sources/emacs/emacs/src/w32fns.c,v retrieving revision 1.345 diff -b -u -r1.345 w32fns.c --- src/w32fns.c 1 Aug 2008 11:48:29 -0000 1.345 +++ src/w32fns.c 2 Aug 2008 08:54:15 -0000 @@ -3737,15 +4240,17 @@ However for top/left sizing we will need to fix the X and Y positions as well. */ + + if (wp.showCmd != SW_SHOWMAXIMIZED + && (lppos->flags & SWP_NOMOVE) == 0) + { +/* lppos->cx -= wdiff; */ +/* lppos->cy -= hdiff; */ int cx_mintrack = GetSystemMetrics (SM_CXMINTRACK); int cy_mintrack = GetSystemMetrics (SM_CYMINTRACK); lppos->cx = max (lppos->cx - wdiff, cx_mintrack); lppos->cy = max (lppos->cy - hdiff, cy_mintrack); - - if (wp.showCmd != SW_SHOWMAXIMIZED - && (lppos->flags & SWP_NOMOVE) == 0) - { if (lppos->x != wr.left || lppos->y != wr.top) { lppos->x += wdiff; @@ -3833,9 +4338,15 @@ case WM_EMACS_SETWINDOWPOS: { WINDOWPOS * pos = (WINDOWPOS *) wParam; + if (IsZoomed(hwnd)) { + return SetWindowPos (hwnd, pos->hwndInsertAfter, + pos->x, pos->y, pos->cx, pos->cy, + pos->flags | SWP_NOMOVE | SWP_NOSIZE); + } else { return SetWindowPos (hwnd, pos->hwndInsertAfter, pos->x, pos->y, pos->cx, pos->cy, pos->flags); } + } ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 13:31 ` Ivan Kanis 2008-08-19 13:40 ` Lennart Borgman (gmail) @ 2008-08-19 13:42 ` Lennart Borgman (gmail) 1 sibling, 0 replies; 41+ messages in thread From: Lennart Borgman (gmail) @ 2008-08-19 13:42 UTC (permalink / raw) To: Ivan Kanis; +Cc: emacs-devel Ivan Kanis wrote: > "Lennart Borgman (gmail)" <lennart.borgman@gmail.com> writes: > >> There is a patch for maximizing windows in Emacs+EmacsW32 that have been >> used for some years now. > > Hi Lennart, could you point me to that patch? It looks like I have > duplicated work. > > Thanks, Forgot to say that you can find a list of my patches here (I think one recent patch to help functions is not there, but I will anyway remove that): http://ourcomments.org/Emacs/EmacsW32.html#patchcont ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 11:59 ` Ivan Kanis 2008-08-19 12:13 ` Lennart Borgman (gmail) @ 2008-08-19 12:47 ` Tassilo Horn 2008-08-19 13:49 ` Jan Djärv 2008-08-19 15:11 ` Tom Tromey 2 siblings, 1 reply; 41+ messages in thread From: Tassilo Horn @ 2008-08-19 12:47 UTC (permalink / raw) To: emacs-devel On Tuesday 19 August 2008 13:59:34 Ivan Kanis wrote: > > ,----[ (info "(elisp)Size Parameters") ] > > | `fullscreen' > > | Specify that width, height or both shall be set to the size > > | of the screen. The value `fullwidth' specifies that width shall > > | be the size of the screen. The value `fullheight' specifies that > > | height shall be the size of the screen. The value `fullboth' > > | specifies that both the width and the height shall be set to the > > | size of the screen. > > `---- > > > > In my opinion "size of the screen" != "size of the screen excluding > > taskbar and stuff". So I'd consider that w32 behavior a bug. > > Well 'fullheight' does screen height minus taskbar in Gnome. Hm, in KDE it's the same. For fullwidth and fullheight this make sense, because I don't think anyone wants to have a frame which doesn't use the full screen but is on top of the task bar. fullboth in KDE makes use of the whole visual screen and removes the window decorations as well. I think that's a quite sensible behavior. > So 'screen' in the do really means usable desktop space. If you > follow the logic 'fullboth' should be maximize minus desktop toolbar. Well, I wouldn't call that fullscreen. And the NETWM spec doesn't either. ,----[ NetWM-1.4-draft2 spec ] | _NET_WM_STATE_FULLSCREEN indicates that the window should fill the | entire screen and have no window decorations. Additionally the Window | Manager is responsible for restoring the original geometry after a | switch from fullscreen back to normal window. For example, a | presentation program would use this hint. `---- > After looking at the code for many days, it could be simplified by > creating a new API for fullscreen that just DTRT on X, Mac and > Windows. DTRT is always very good. ;-) Now we only have to agree on TRT. IMHO there's no such thing as fullscreen width or fullscreen height, only fullscreen as described by the NetWM spec. The other values the fullscreen frame parameter allows are indeed vertical and horizontal maximizations, but they don't work correctly, because you cannot un-maximize to the old size again. A (set-frame-parameter nil 'fullscreen 'fullwidth) followed by (set-frame-parameter nil 'fullscreen nil) won't change the frame size anymore, at least not here. Bye, Tassilo ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 12:47 ` Tassilo Horn @ 2008-08-19 13:49 ` Jan Djärv 2008-08-19 14:00 ` Tassilo Horn 0 siblings, 1 reply; 41+ messages in thread From: Jan Djärv @ 2008-08-19 13:49 UTC (permalink / raw) To: Tassilo Horn; +Cc: emacs-devel Tassilo Horn skrev: >>> In my opinion "size of the screen" != "size of the screen excluding >>> taskbar and stuff". So I'd consider that w32 behavior a bug. >> Well 'fullheight' does screen height minus taskbar in Gnome. > > Hm, in KDE it's the same. For fullwidth and fullheight this make sense, > because I don't think anyone wants to have a frame which doesn't use the > full screen but is on top of the task bar. What is lacking is a way to specify "real" fullscreen (i.e. cover the whole screen) and also be able to specify maximized (i.e. with decorations and taskbar visible). > >> After looking at the code for many days, it could be simplified by >> creating a new API for fullscreen that just DTRT on X, Mac and >> Windows. > > DTRT is always very good. ;-) Now we only have to agree on TRT. IMHO > there's no such thing as fullscreen width or fullscreen height, only > fullscreen as described by the NetWM spec. It isn't called netwm-spec, it is called Extended Window Manager Hints: _NET_WM_STATE: "Possible atoms are: _NET_WM_STATE_MODAL, ATOM _NET_WM_STATE_STICKY, ATOM _NET_WM_STATE_MAXIMIZED_VERT, ATOM _NET_WM_STATE_MAXIMIZED_HORZ, ATOM _NET_WM_STATE_SHADED, ATOM _NET_WM_STATE_SKIP_TASKBAR, ATOM _NET_WM_STATE_SKIP_PAGER, ATOM _NET_WM_STATE_HIDDEN, ATOM _NET_WM_STATE_FULLSCREEN, ATOM _NET_WM_STATE_ABOVE, ATOM _NET_WM_STATE_BELOW, ATOM _NET_WM_STATE_DEMANDS_ATTENTION, ATOM " MAXIMIZED_VERT/HORZ exists. Setting both these is by convention to maximize. Setting FULLSCREEN does real fullscreen. > > The other values the fullscreen frame parameter allows are indeed > vertical and horizontal maximizations, but they don't work correctly, > because you cannot un-maximize to the old size again. A > > (set-frame-parameter nil 'fullscreen 'fullwidth) > > followed by > > (set-frame-parameter nil 'fullscreen nil) > > won't change the frame size anymore, at least not here. That would be a bug, either in Emacs or the window manager. What WM are you running? The API is easy to change, but we should keep the _NET_WM_STATE implementation. It is confusing if Emacs does things differently. Also, implementing and testing for many different window managers is quite an effort. Jan D. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 13:49 ` Jan Djärv @ 2008-08-19 14:00 ` Tassilo Horn 0 siblings, 0 replies; 41+ messages in thread From: Tassilo Horn @ 2008-08-19 14:00 UTC (permalink / raw) To: emacs-devel On Tuesday 19 August 2008 15:49:42 Jan Djärv wrote: Hi Jan, > > The other values the fullscreen frame parameter allows are indeed > > vertical and horizontal maximizations, but they don't work > > correctly, because you cannot un-maximize to the old size again. A > > > > (set-frame-parameter nil 'fullscreen 'fullwidth) > > > > followed by > > > > (set-frame-parameter nil 'fullscreen nil) > > > > won't change the frame size anymore, at least not here. > > That would be a bug, either in Emacs or the window manager. What WM > are you running? I've tested it with kwin (version from KDE 4.1). > The API is easy to change, but we should keep the _NET_WM_STATE > implementation. Absolutely. Bye, Tassilo ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 11:59 ` Ivan Kanis 2008-08-19 12:13 ` Lennart Borgman (gmail) 2008-08-19 12:47 ` Tassilo Horn @ 2008-08-19 15:11 ` Tom Tromey 2008-08-19 18:52 ` Jan Djärv 2 siblings, 1 reply; 41+ messages in thread From: Tom Tromey @ 2008-08-19 15:11 UTC (permalink / raw) To: Ivan Kanis; +Cc: emacs-devel >>>>> "Ivan" == Ivan Kanis <expire-by-2008-08-24@kanis.fr> writes: >> In my opinion "size of the screen" != "size of the screen excluding >> taskbar and stuff". So I'd consider that w32 behavior a bug. Ivan> Well 'fullheight' does screen height minus taskbar in Gnome. Has this changed recently? I'm running CVS Emacs (from a couple months back) on Fedora 9, and fullscreen really means fullscreen -- no Gnome panel, no window manager decorations, just Emacs. Tom ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 15:11 ` Tom Tromey @ 2008-08-19 18:52 ` Jan Djärv 0 siblings, 0 replies; 41+ messages in thread From: Jan Djärv @ 2008-08-19 18:52 UTC (permalink / raw) To: Tom Tromey; +Cc: Ivan Kanis, emacs-devel Tom Tromey skrev: >>>>>> "Ivan" == Ivan Kanis <expire-by-2008-08-24@kanis.fr> writes: > >>> In my opinion "size of the screen" != "size of the screen excluding >>> taskbar and stuff". So I'd consider that w32 behavior a bug. > > Ivan> Well 'fullheight' does screen height minus taskbar in Gnome. > > Has this changed recently? > > I'm running CVS Emacs (from a couple months back) on Fedora 9, and > fullscreen really means fullscreen -- no Gnome panel, no window > manager decorations, just Emacs. > It all depends on the window manager. FWIW, I get a screen with just Emacs for Gnome in Ubuntu 8.04. Jan D. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 9:31 ` Tassilo Horn 2008-08-19 9:58 ` René Kyllingstad @ 2008-08-19 9:59 ` Andreas Schwab 2008-08-19 10:25 ` Tassilo Horn 1 sibling, 1 reply; 41+ messages in thread From: Andreas Schwab @ 2008-08-19 9:59 UTC (permalink / raw) To: Tassilo Horn; +Cc: emacs-devel Tassilo Horn <tassilo@member.fsf.org> writes: > On Tuesday 19 August 2008 09:46:42 Ivan Kanis wrote: > > Hi! > >> By fullscreen I mean no taskbar, emacs take all the screen estate. > > Isn't fullscreen display of some application window something the window > manager should deal with, not the application itself? For example in > KDE or stumpwm you can make any window fullscreen (via a window menu or > a keybinding), and I'm sure it's the same for GNOME and most/all other > windowmanagers. That's not fullscreen, but maximize. The difference is that the latter still shows things like the taskbar and window decoration. The fullscreen mode has to be requested by the application. Andreas. -- Andreas Schwab, SuSE Labs, schwab@suse.de SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 9:59 ` Andreas Schwab @ 2008-08-19 10:25 ` Tassilo Horn 2008-08-19 10:56 ` Andreas Schwab 0 siblings, 1 reply; 41+ messages in thread From: Tassilo Horn @ 2008-08-19 10:25 UTC (permalink / raw) To: emacs-devel On Tuesday 19 August 2008 11:59:51 Andreas Schwab wrote: Hi Andreas, > >> By fullscreen I mean no taskbar, emacs take all the screen estate. > > > > Isn't fullscreen display of some application window something the > > window manager should deal with, not the application itself? For > > example in KDE or stumpwm you can make any window fullscreen (via a > > window menu or a keybinding), and I'm sure it's the same for GNOME > > and most/all other windowmanagers. > > That's not fullscreen, but maximize. No, it's fullscreen. In KDE (4.1) it's rightklick on window decoration -> Advanced -> [X] at Fullscreen. In stumpwm (a tiling window manager, where all windows are maximized anyway) it's the `fullscreen' command. > The difference is that the latter still shows things like the taskbar > and window decoration. Nope, there are no such things anymore. > The fullscreen mode has to be requested by the application. So how do those commands achive that? Fake that request? And who serves it? I've thought the window manager, but in that case there's no reason that the application has to request the fullscreen mode. Bye, Tassilo ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 10:25 ` Tassilo Horn @ 2008-08-19 10:56 ` Andreas Schwab 0 siblings, 0 replies; 41+ messages in thread From: Andreas Schwab @ 2008-08-19 10:56 UTC (permalink / raw) To: Tassilo Horn; +Cc: emacs-devel Tassilo Horn <tassilo@member.fsf.org> writes: > On Tuesday 19 August 2008 11:59:51 Andreas Schwab wrote: > > Hi Andreas, > >> >> By fullscreen I mean no taskbar, emacs take all the screen estate. >> > >> > Isn't fullscreen display of some application window something the >> > window manager should deal with, not the application itself? For >> > example in KDE or stumpwm you can make any window fullscreen (via a >> > window menu or a keybinding), and I'm sure it's the same for GNOME >> > and most/all other windowmanagers. >> >> That's not fullscreen, but maximize. > > No, it's fullscreen. In KDE (4.1) it's rightklick on window decoration > -> Advanced -> [X] at Fullscreen. In stumpwm (a tiling window manager, > where all windows are maximized anyway) it's the `fullscreen' command. Ok, I didn't know that. >> The fullscreen mode has to be requested by the application. > > So how do those commands achive that? Via the NETWM protocol, I guess. Andreas. -- Andreas Schwab, SuSE Labs, schwab@suse.de SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 7:46 Proposal for a new API to fullscreen Ivan Kanis 2008-08-19 9:31 ` Tassilo Horn @ 2008-08-19 13:08 ` Jason Rumney 2008-08-19 13:42 ` Ivan Kanis 2008-08-19 15:08 ` Tom Tromey 2 siblings, 1 reply; 41+ messages in thread From: Jason Rumney @ 2008-08-19 13:08 UTC (permalink / raw) To: Ivan Kanis; +Cc: emacs-devel Ivan Kanis wrote: > The current way to switch to this mode is > > (set-frame-parameter nil 'fullscreen 'fullboth) > > However this is very ambiguous, it does fullscreen on Gnome and > maximise on Mac and Windows. > > I propose a new API to solve the ambiguity: > > (fullscreen-mode 1) > I don't see a good reason to introduce a different way of doing this. What is needed is to distinguish 'fullscreen and 'maximize and support both as far as possible on all platforms. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 13:08 ` Jason Rumney @ 2008-08-19 13:42 ` Ivan Kanis 2008-08-19 16:53 ` Jason Rumney 0 siblings, 1 reply; 41+ messages in thread From: Ivan Kanis @ 2008-08-19 13:42 UTC (permalink / raw) To: Jason Rumney; +Cc: emacs-devel Jason Rumney <jasonrumney@gmail.com> writes: > Ivan Kanis wrote: >> (set-frame-parameter nil 'fullscreen 'fullboth) >> However this is very ambiguous, it does fullscreen on Gnome and >> maximise on Mac and Windows. > > I don't see a good reason to introduce a different way of doing > this. What is needed is to distinguish 'fullscreen and 'maximize and > support both as far as possible on all platforms. Ok how about: (set-frame-parameter nil 'fullscreen 'fullboth) means maximize (set-frame-parameter nil 'fullscreen 'fullscreen) means fullscreen Does it sound reasonable ? -- Ivan http://kanis.fr I feel like a million tonight - but one at a time. -- Mae West ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 13:42 ` Ivan Kanis @ 2008-08-19 16:53 ` Jason Rumney 2008-08-19 17:52 ` Tassilo Horn 0 siblings, 1 reply; 41+ messages in thread From: Jason Rumney @ 2008-08-19 16:53 UTC (permalink / raw) To: Ivan Kanis; +Cc: Jason Rumney, emacs-devel Ivan Kanis wrote: > Ok how about: > > (set-frame-parameter nil 'fullscreen 'fullboth) means maximize > (set-frame-parameter nil 'fullscreen 'fullscreen) means fullscreen > > Does it sound reasonable ? > I think the names need to be less similar. What is wrong with 'maximize and 'fullscreen? ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 16:53 ` Jason Rumney @ 2008-08-19 17:52 ` Tassilo Horn 2008-08-19 17:57 ` Lennart Borgman (gmail) 2008-08-20 9:42 ` Ivan Kanis 0 siblings, 2 replies; 41+ messages in thread From: Tassilo Horn @ 2008-08-19 17:52 UTC (permalink / raw) To: emacs-devel On Tuesday 19 August 2008 18:53:03 Jason Rumney wrote: Hi! > > Ok how about: > > > > (set-frame-parameter nil 'fullscreen 'fullboth) means maximize > > (set-frame-parameter nil 'fullscreen 'fullscreen) means fullscreen > > > > Does it sound reasonable ? > > I think the names need to be less similar. What is wrong with > 'maximize and 'fullscreen? I second that. - fullscreen can only be nil or t (no taskbar, no window decorations) - maximize with values nil, height, width and both Bye, Tassilo ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 17:52 ` Tassilo Horn @ 2008-08-19 17:57 ` Lennart Borgman (gmail) 2008-08-19 18:14 ` Jason Rumney 2008-08-19 18:14 ` Tassilo Horn 2008-08-20 9:42 ` Ivan Kanis 1 sibling, 2 replies; 41+ messages in thread From: Lennart Borgman (gmail) @ 2008-08-19 17:57 UTC (permalink / raw) To: Tassilo Horn; +Cc: emacs-devel Tassilo Horn wrote: > - maximize with values nil, height, width and both What window managers support that? I doubt that w32 support it. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 17:57 ` Lennart Borgman (gmail) @ 2008-08-19 18:14 ` Jason Rumney 2008-08-19 18:32 ` Lennart Borgman (gmail) 2008-08-19 18:33 ` Lennart Borgman (gmail) 2008-08-19 18:14 ` Tassilo Horn 1 sibling, 2 replies; 41+ messages in thread From: Jason Rumney @ 2008-08-19 18:14 UTC (permalink / raw) To: Lennart Borgman (gmail); +Cc: Tassilo Horn, emacs-devel Lennart Borgman (gmail) wrote: > Tassilo Horn wrote: > >> - maximize with values nil, height, width and both >> > > What window managers support that? I doubt that w32 support it. > Emacs currently supports these options on Windows (except it doesn't consider the taskbar, which is a bug) ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 18:14 ` Jason Rumney @ 2008-08-19 18:32 ` Lennart Borgman (gmail) 2008-08-19 18:33 ` Lennart Borgman (gmail) 1 sibling, 0 replies; 41+ messages in thread From: Lennart Borgman (gmail) @ 2008-08-19 18:32 UTC (permalink / raw) To: Jason Rumney; +Cc: Tassilo Horn, emacs-devel Jason Rumney wrote: > Lennart Borgman (gmail) wrote: >> Tassilo Horn wrote: >> >>> - maximize with values nil, height, width and both >>> >> >> What window managers support that? I doubt that w32 support it. >> > > Emacs currently supports these options on Windows (except it doesn't > consider the taskbar, which is a bug) It looks like I can drop my old patches for maximized windows on w32 then. Nice. But what about maximization of of only width or height? Is that something that is supported by the window manager on w32? ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 18:14 ` Jason Rumney 2008-08-19 18:32 ` Lennart Borgman (gmail) @ 2008-08-19 18:33 ` Lennart Borgman (gmail) 1 sibling, 0 replies; 41+ messages in thread From: Lennart Borgman (gmail) @ 2008-08-19 18:33 UTC (permalink / raw) To: Jason Rumney; +Cc: Tassilo Horn, emacs-devel Jason Rumney wrote: > Lennart Borgman (gmail) wrote: >> Tassilo Horn wrote: >> >>> - maximize with values nil, height, width and both >>> >> >> What window managers support that? I doubt that w32 support it. >> > > Emacs currently supports these options on Windows (except it doesn't > consider the taskbar, which is a bug) Forgot the taskbar: It looks to me like this too works in CVS Emacs 23 (or am I missing something there?). ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 17:57 ` Lennart Borgman (gmail) 2008-08-19 18:14 ` Jason Rumney @ 2008-08-19 18:14 ` Tassilo Horn 1 sibling, 0 replies; 41+ messages in thread From: Tassilo Horn @ 2008-08-19 18:14 UTC (permalink / raw) To: emacs-devel On Tuesday 19 August 2008 19:57:07 Lennart Borgman (gmail) wrote: > > - maximize with values nil, height, width and both > > What window managers support that? I doubt that w32 support it. Every WM that supports the "Extended Window Manager Hints" [1] spec. I think most WMs for GNU/Linux try to comply with it. Bye, Tassilo __________ [1] http://standards.freedesktop.org/wm-spec/wm-spec-latest.html ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 17:52 ` Tassilo Horn 2008-08-19 17:57 ` Lennart Borgman (gmail) @ 2008-08-20 9:42 ` Ivan Kanis 2008-08-20 12:16 ` Jason Rumney 1 sibling, 1 reply; 41+ messages in thread From: Ivan Kanis @ 2008-08-20 9:42 UTC (permalink / raw) To: emacs-devel Tassilo Horn <tassilo@member.fsf.org> writes: > On Tuesday 19 August 2008 18:53:03 Jason Rumney wrote: > > Hi! > >> > Ok how about: >> > >> > (set-frame-parameter nil 'fullscreen 'fullboth) means maximize >> > (set-frame-parameter nil 'fullscreen 'fullscreen) means fullscreen >> > >> > Does it sound reasonable ? >> >> I think the names need to be less similar. What is wrong with >> 'maximize and 'fullscreen? > > I second that. > > - fullscreen can only be nil or t (no taskbar, no window decorations) > - maximize with values nil, height, width and both > > Bye, > Tassilo Two developers agreed, it sounds like a consensus :) One question (set-frame-parameter nil 'fullscreen t) is incompatible with earlier API, should I throw an error if someone sets 'fullboth ? Take care, -- Ivan http://kanis.fr Man will occasionally stumble over the truth, but most of the time he will pick himself up and move on. -- Winston Churchill ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-20 9:42 ` Ivan Kanis @ 2008-08-20 12:16 ` Jason Rumney 2008-08-20 13:06 ` Tassilo Horn 0 siblings, 1 reply; 41+ messages in thread From: Jason Rumney @ 2008-08-20 12:16 UTC (permalink / raw) To: Ivan Kanis; +Cc: emacs-devel Ivan Kanis wrote: >>>> Ok how about: >>>> >>>> (set-frame-parameter nil 'fullscreen 'fullboth) means maximize >>>> (set-frame-parameter nil 'fullscreen 'fullscreen) means fullscreen >>>> > Two developers agreed, it sounds like a consensus :) > > One question (set-frame-parameter nil 'fullscreen t) is incompatible > with earlier API, should I throw an error if someone sets 'fullboth ? > > Take care, > Actually I was suggesting that you change just one symbol name in your proposal: (set-frame-parameter nil 'fullscreen 'maximize) means maximize (set-frame-parameter nil 'fullscreen 'fullscreen) means fullscreen but since we already have fullboth, the latter could be 'fullboth rather than 'fullscreen. That would be consistent with how it currently works on X if I understand this discussion correctly. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-20 12:16 ` Jason Rumney @ 2008-08-20 13:06 ` Tassilo Horn 2008-08-20 13:46 ` Jason Rumney 2008-08-20 15:21 ` [PATCH] " Ivan Kanis 0 siblings, 2 replies; 41+ messages in thread From: Tassilo Horn @ 2008-08-20 13:06 UTC (permalink / raw) To: emacs-devel Jason Rumney <jasonrumney@gmail.com> writes: Hi Jason, > Actually I was suggesting that you change just one symbol name in your > proposal: > > (set-frame-parameter nil 'fullscreen 'maximize) means maximize > (set-frame-parameter nil 'fullscreen 'fullscreen) means fullscreen > > but since we already have fullboth, the latter could be 'fullboth > rather than 'fullscreen. That would be consistent with how it > currently works on X if I understand this discussion correctly. Hm, it's not a good idea to use one and the same parameter for two different concepts. But if I think about it, two parameters which exclude each other (there's no such thing as a vertically maximized fullscreen window) are even worse. So now I agree with Jason! ;-) If someone would ask me which parameter and values I'd choose, here they're: - Parameter: maximize I think that's better than fullscreen, cause fullscreen can be seen as special maximization, whereas something like vertically maximized is surely no special version of fullscreen. - Values: vertical: maximized vertically, e.g. window fits from top of the usable screen (usable = screen, where no taskbar is) till the bottom horizontal: Same as vertical, but from left to right both or t: vertical + horizontal fullscreen: What do you guess?! Bye, Tassilo -- A child of five could understand this! Fetch me a child of five! ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-20 13:06 ` Tassilo Horn @ 2008-08-20 13:46 ` Jason Rumney 2008-08-20 15:21 ` [PATCH] " Ivan Kanis 1 sibling, 0 replies; 41+ messages in thread From: Jason Rumney @ 2008-08-20 13:46 UTC (permalink / raw) To: emacs-devel Tassilo Horn wrote: > Hm, it's not a good idea to use one and the same parameter for two > different concepts. I don't think the concepts are different. They are different degrees of the same thing - the issue is whether you want your full screen frame to eliminate the desktop furniture or not. > If someone would ask me which parameter and values I'd choose, here > they're: > > - Parameter: maximize > I'd choose that too, but this frame parameter is already recognized by the name fullscreen since 22.1. So changing it now could be disruptive to users. ^ permalink raw reply [flat|nested] 41+ messages in thread
* [PATCH] Proposal for a new API to fullscreen 2008-08-20 13:06 ` Tassilo Horn 2008-08-20 13:46 ` Jason Rumney @ 2008-08-20 15:21 ` Ivan Kanis 1 sibling, 0 replies; 41+ messages in thread From: Ivan Kanis @ 2008-08-20 15:21 UTC (permalink / raw) To: emacs-devel Hi, Tassilo Horn <tassilo@member.fsf.org> writes: > So now I agree with Jason! ;-) > > If someone would ask me which parameter and values I'd choose, here > they're: > > - Parameter: maximize > > I think that's better than fullscreen, cause fullscreen can be > seen as special maximization, whereas something like > vertically maximized is surely no special version of > fullscreen. > > - Values: > > vertical: maximized vertically, e.g. window fits from top of > the usable screen (usable = screen, where no taskbar > is) till the bottom > > horizontal: Same as vertical, but from left to right > > both or t: vertical + horizontal > > fullscreen: What do you guess?! This patch against CVS 22.2.9 is heading that way. It turns all reference of 'fullscreen' to 'maximize'. This frees up the 'fullscreen' variable TDRT. diff -r 2a9cc3cd6cde -r 7ad292c02ef4 etc/ChangeLog --- a/etc/ChangeLog Wed Aug 20 14:11:56 2008 +0200 +++ b/etc/ChangeLog Wed Aug 20 17:11:45 2008 +0200 @@ -1,3 +1,7 @@ +2008-08-20 Ivan Kanis <ivan@zen> + + * emacs.1: update from fullscreen to maximize + 2008-05-04 Glenn Morris <rgm@gnu.org> * NEWS: Document removal of duplicated "alt-" input methods. diff -r 2a9cc3cd6cde -r 7ad292c02ef4 etc/emacs.1 --- a/etc/emacs.1 Wed Aug 20 14:11:56 2008 +0200 +++ b/etc/emacs.1 Wed Aug 20 17:11:45 2008 +0200 @@ -321,13 +321,13 @@ .BR \-vb ", " \-\-vertical\-scroll\-bars Enable vertical scrollbars. .TP -.BR \-fh ", " \-\-fullheight +.BR \-mb ", " \-\-maxboth +Make the first frame maximized. +.TP +.BR \-mh ", " \-\-maxheight Make the first frame as high as the screen. .TP -.BR \-fs ", " \-\-fullscreen -Make the first frame fullscreen. -.TP -.BR \-fw ", " \-\-fullwidth +.BR \-mw ", " \-\-maxwidth Make the first frame as wide as the screen. .TP .BI \-fg " color\fR,\fP " \-\-foreground\-color " color" @@ -441,15 +441,15 @@ For color displays, sets the window's text color. .TP -.BR fullscreen " (class " Fullscreen ) -The desired fullscreen size. +.BR maximize " (class " Maximize ) +The desired way to maximize. The value can be one of -.IR fullboth , -.IR fullwidth , +.IR maxboth , +.IR maxwidth , or -.IR fullheight , -which correspond to the command-line options `\-fs', `\-fw', and -`\-fh', respectively. +.IR maxheight , +which correspond to the command-line options `\-mb', `\-mw', and +`\-mh', respectively. Note that this applies to the initial frame only. .TP .BR geometry " (class " Geometry ) diff -r 2a9cc3cd6cde -r 7ad292c02ef4 lisp/ChangeLog --- a/lisp/ChangeLog Wed Aug 20 14:11:56 2008 +0200 +++ b/lisp/ChangeLog Wed Aug 20 17:11:45 2008 +0200 @@ -1,3 +1,8 @@ +2008-08-20 Ivan Kanis <ivan@zen> + + * startup.el: change --fullscreen, --fullheight and --fullwidth to + --maxboth, --maxheight and --maxwidth + 2008-08-15 Glenn Morris <rgm@gnu.org> * eshell/em-ls.el (eshell-ls-files): List one per line in a pipeline. diff -r 2a9cc3cd6cde -r 7ad292c02ef4 lisp/startup.el --- a/lisp/startup.el Wed Aug 20 14:11:56 2008 +0200 +++ b/lisp/startup.el Wed Aug 20 17:11:45 2008 +0200 @@ -114,9 +114,9 @@ ("-reverse-video" 0 x-handle-switch reverse t) ("-fn" 1 x-handle-switch font) ("-font" 1 x-handle-switch font) - ("-fs" 0 x-handle-initial-switch fullscreen fullboth) - ("-fw" 0 x-handle-initial-switch fullscreen fullwidth) - ("-fh" 0 x-handle-initial-switch fullscreen fullheight) + ("-mb" 0 x-handle-initial-switch maximize maxboth) + ("-mw" 0 x-handle-initial-switch maximize maxwidth) + ("-mh" 0 x-handle-initial-switch maximize maxheight) ("-ib" 1 x-handle-numeric-switch internal-border-width) ("-g" 1 x-handle-geometry) ("-lsp" 1 x-handle-numeric-switch line-spacing) @@ -139,9 +139,9 @@ ("--title" 1 x-handle-switch title) ("--reverse-video" 0 x-handle-switch reverse t) ("--font" 1 x-handle-switch font) - ("--fullscreen" 0 x-handle-initial-switch fullscreen fullboth) - ("--fullwidth" 0 x-handle-initial-switch fullscreen fullwidth) - ("--fullheight" 0 x-handle-initial-switch fullscreen fullheight) + ("--maxboth" 0 x-handle-initial-switch maximize maxboth) + ("--maxwidth" 0 x-handle-initial-switch maximize maxwidth) + ("--maxheight" 0 x-handle-initial-switch maximize maxheight) ("--internal-border" 1 x-handle-numeric-switch internal-border-width) ("--geometry" 1 x-handle-geometry) ("--foreground-color" 1 x-handle-switch foreground-color) diff -r 2a9cc3cd6cde -r 7ad292c02ef4 lispref/ChangeLog --- a/lispref/ChangeLog Wed Aug 20 14:11:56 2008 +0200 +++ b/lispref/ChangeLog Wed Aug 20 17:11:45 2008 +0200 @@ -1,3 +1,8 @@ +2008-08-20 Ivan Kanis <ivan@zen> + + * frames.texi: update information on frame variable maximize + instead of fullscreen. + 2008-08-05 Chong Yidong <cyd@stupidchicken.com> * symbols.texi (Other Plists): Fix incorrect example. diff -r 2a9cc3cd6cde -r 7ad292c02ef4 lispref/frames.texi --- a/lispref/frames.texi Wed Aug 20 14:11:56 2008 +0200 +++ b/lispref/frames.texi Wed Aug 20 17:11:45 2008 +0200 @@ -463,11 +463,11 @@ the @code{user-position} parameter (see above) does for the position parameters @code{top} and @code{left}. -@item fullscreen +@item maximize Specify that width, height or both shall be set to the size of the screen. -The value @code{fullwidth} specifies that width shall be the size of the -screen. The value @code{fullheight} specifies that height shall be the -size of the screen. The value @code{fullboth} specifies that both the +The value @code{maxwidth} specifies that width shall be the size of the +screen. The value @code{maxheight} specifies that height shall be the +size of the screen. The value @code{maxboth} specifies that both the width and the height shall be set to the size of the screen. @end table diff -r 2a9cc3cd6cde -r 7ad292c02ef4 man/ChangeLog --- a/man/ChangeLog Wed Aug 20 14:11:56 2008 +0200 +++ b/man/ChangeLog Wed Aug 20 17:11:45 2008 +0200 @@ -1,3 +1,9 @@ +2008-08-20 Ivan Kanis <ivan@zen> + + * anti.texi, cmdargs.texi: change fullscreen to maximize + * faq.texi: rename faq entry from fullscreen to maximize + * xresources.texi: document maximise resources + 2008-06-15 Reiner Steib <Reiner.Steib@gmx.de> * gnus-faq.texi: Generate. Change node names to "FAQ N-M". diff -r 2a9cc3cd6cde -r 7ad292c02ef4 man/anti.texi --- a/man/anti.texi Wed Aug 20 14:11:56 2008 +0200 +++ b/man/anti.texi Wed Aug 20 17:11:45 2008 +0200 @@ -54,7 +54,7 @@ @item These command line options have also been removed: @samp{--color}, -@samp{--fullwidth}, @samp{--fullheight}, @samp{--fullscreen}, +@samp{--maxwidth}, @samp{--maxheight}, @samp{--maxscreen}, @samp{--no-blinking-cursor}, @samp{--no-desktop}, and @samp{-Q}. @item diff -r 2a9cc3cd6cde -r 7ad292c02ef4 man/cmdargs.texi --- a/man/cmdargs.texi Wed Aug 20 14:11:56 2008 +0200 +++ b/man/cmdargs.texi Wed Aug 20 17:11:45 2008 +0200 @@ -1009,7 +1009,7 @@ @cindex geometry of Emacs window @cindex position and size of Emacs frame @cindex width and height of Emacs frame -@cindex specifying fullscreen for Emacs frame +@cindex specifying maximize for Emacs frame Here is a list of the command-line options for specifying size and position of the initial Emacs frame: @@ -1026,25 +1026,25 @@ apply to all frames, whereas @var{xoffset} and @var{yoffset} only to the initial frame. -@item -fs -@opindex -fs -@itemx --fullscreen -@opindex --fullscreen -@cindex fullscreen, command-line argument +@item -mb +@opindex -mb +@itemx --maxboth +@opindex --maxboth +@cindex maxboth, command-line argument Specify that width and height shall be the size of the screen. -@item -fh -@opindex -fh -@itemx --fullheight -@opindex --fullheight -@cindex fullheight, command-line argument +@item -mh +@opindex -mh +@itemx --maxheight +@opindex --maxheight +@cindex maxheight, command-line argument Specify that the height shall be the height of the screen. -@item -fw -@opindex -fw -@itemx --fullwidth -@opindex --fullwidth -@cindex fullwidth, command-line argument +@item -mw +@opindex -mw +@itemx --maxwidth +@opindex --maxwidth +@cindex maxwidth, command-line argument Specify that the width shall be the width of the screen. @end table @@ -1106,8 +1106,8 @@ (@pxref{Table of Resources}); then Emacs will already know there's no tool bar when it processes the specified geometry. - When using one of @samp{--fullscreen}, @samp{--fullwidth} or -@samp{--fullheight} there may be some space around the frame + When using one of @samp{--maxboth}, @samp{--maxwidth} or +@samp{--maxheight} there may be some space around the frame anyway. That is because Emacs rounds the sizes so they are an even number of character heights and widths. diff -r 2a9cc3cd6cde -r 7ad292c02ef4 man/faq.texi --- a/man/faq.texi Wed Aug 20 14:11:56 2008 +0200 +++ b/man/faq.texi Wed Aug 20 17:11:45 2008 +0200 @@ -1297,7 +1297,7 @@ * Editing MS-DOS files:: * Filling paragraphs with a single space:: * Escape sequences in shell output:: -* Fullscreen mode on MS-Windows:: +* Maximized mode on MS-Windows:: @end menu @node Setting up a customization file, Using Customize, Common requests, Common requests @@ -2703,7 +2703,7 @@ (setq sentence-end-double-space nil) @end lisp -@node Escape sequences in shell output, Fullscreen mode on MS-Windows, Filling paragraphs with a single space, Common requests +@node Escape sequences in shell output, Maximized mode on MS-Windows, Filling paragraphs with a single space, Common requests @section Why these strange escape sequences from @code{ls} from the Shell mode? @cindex Escape sequences in @code{ls} output @cindex @code{ls} in Shell mode @@ -2725,10 +2725,9 @@ later), which converts these ANSI escape sequences into colors. @end itemize -@node Fullscreen mode on MS-Windows, , Escape sequences in shell output, Common requests -@section How can I start Emacs in fullscreen mode on MS-Windows? +@node Maximized mode on MS-Windows, , Escape sequences in shell output, Common requests +@section How can I start Emacs in maximized mode on MS-Windows? @cindex Maximize frame -@cindex Fullscreen mode Use the function @code{w32-send-sys-command}. For example, you can put the following in your @file{.emacs} file: diff -r 2a9cc3cd6cde -r 7ad292c02ef4 man/xresources.texi --- a/man/xresources.texi Wed Aug 20 14:11:56 2008 +0200 +++ b/man/xresources.texi Wed Aug 20 17:11:45 2008 +0200 @@ -236,10 +236,10 @@ all frames. @ifnottex -@item @code{fullscreen} (class @code{Fullscreen}) -The desired fullscreen size. The value can be one of @code{fullboth}, -@code{fullwidth} or @code{fullheight}, which correspond to -the command-line options @samp{-fs}, @samp{-fw}, and @samp{-fh} +@item @code{maximize} (class @code{Maximize}) +The desired way to maximize. The value can be one of @code{maxboth}, +@code{maxwidth} or @code{maxheight}, which correspond to +the command-line options @samp{-mb}, @samp{-mw}, and @samp{-mh} (@pxref{Window Size X}). Note that this applies to the initial frame only. diff -r 2a9cc3cd6cde -r 7ad292c02ef4 src/ChangeLog --- a/src/ChangeLog Wed Aug 20 14:11:56 2008 +0200 +++ b/src/ChangeLog Wed Aug 20 17:11:45 2008 +0200 @@ -1,3 +1,18 @@ +2008-08-20 Ivan Kanis <ivan@zen> + + * emacs.c: update command switch to maximize + + * frame.c, frame.h: subtitute maximize ressources + + * term.c, termhooks.h: update name of function from of + fullscreen to maximize + + * xfns.c, xterm.c: change X function name + + * w32fns.c, w32term.c: change windows function name + + * macfns.c: chang Mac OS function name + 2008-08-10 Glenn Morris <rgm@gnu.org> Sync from trunk 2008-07-08: diff -r 2a9cc3cd6cde -r 7ad292c02ef4 src/emacs.c --- a/src/emacs.c Wed Aug 20 14:11:56 2008 +0200 +++ b/src/emacs.c Wed Aug 20 17:11:45 2008 +0200 @@ -311,14 +311,14 @@ --cursor-color, -cr COLOR color of the Emacs cursor indicating point\n\ --font, -fn FONT default font; must be fixed-width\n\ --foreground-color, -fg COLOR window foreground color\n\ ---fullheight, -fh make the first frame high as the screen\n\ ---fullscreen, -fs make first frame fullscreen\n\ ---fullwidth, -fw make the first frame wide as the screen\n\ --geometry, -g GEOMETRY window geometry\n\ --no-bitmap-icon, -nbi do not use picture of gnu for Emacs icon\n\ --iconic start Emacs in iconified state\n\ --internal-border, -ib WIDTH width between text and main border\n\ --line-spacing, -lsp PIXELS additional space to put between lines\n\ +--maxboth, -mb make first frame maximized\n\ +--maxheight, -mh make the first frame high as the screen\n\ +--maxwidth, -mw make the first frame wide as the screen\n\ --mouse-color, -ms COLOR mouse cursor color in Emacs window\n\ --name NAME title for initial Emacs frame\n\ --no-blinking-cursor, -nbc disable blinking cursor\n\ @@ -1833,13 +1833,13 @@ { "-nbc", "--no-blinking-cursor", 10, 0 }, { "-fn", "--font", 10, 1 }, { "-font", 0, 10, 1 }, - { "-fs", "--fullscreen", 10, 0 }, - { "-fw", "--fullwidth", 10, 0 }, - { "-fh", "--fullheight", 10, 0 }, { "-g", "--geometry", 10, 1 }, { "-geometry", 0, 10, 1 }, { "-T", "--title", 10, 1 }, { "-title", 0, 10, 1 }, + { "-mb", "--maxboth", 10, 0 }, + { "-mw", "--maxwidth", 10, 0 }, + { "-mh", "--maxheight", 10, 0 }, { "-name", "--name", 10, 1 }, { "-xrm", "--xrm", 10, 1 }, { "-r", "--reverse-video", 5, 0 }, diff -r 2a9cc3cd6cde -r 7ad292c02ef4 src/frame.c --- a/src/frame.c Wed Aug 20 14:11:56 2008 +0200 +++ b/src/frame.c Wed Aug 20 17:11:45 2008 +0200 @@ -107,7 +107,7 @@ Lisp_Object Qbuffer_predicate, Qbuffer_list; Lisp_Object Qtty_color_mode; -Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth; +Lisp_Object Qmaximize, Qmaxwidth, Qmaxheight, Qmaxboth; Lisp_Object Qinhibit_face_set_after_frame_default; Lisp_Object Qface_set_after_frame_default; @@ -298,7 +298,7 @@ f->line_height = 1; /* !FRAME_WINDOW_P value */ f->x_pixels_diff = f->y_pixels_diff = 0; #ifdef HAVE_WINDOW_SYSTEM - f->want_fullscreen = FULLSCREEN_NONE; + f->want_maximize = MAXIMIZE_NONE; #endif f->size_hint_flags = 0; f->win_gravity = 0; @@ -2582,7 +2582,7 @@ {"left-fringe", &Qleft_fringe}, {"right-fringe", &Qright_fringe}, {"wait-for-wm", &Qwait_for_wm}, - {"fullscreen", &Qfullscreen}, + {"maximize", &Qmaximize}, }; #ifdef HAVE_WINDOW_SYSTEM @@ -2590,14 +2590,14 @@ extern Lisp_Object Qbox; extern Lisp_Object Qtop; -/* Calculate fullscreen size. Return in *TOP_POS and *LEFT_POS the +/* Calculate maximize size. Return in *TOP_POS and *LEFT_POS the wanted positions of the WM window (not Emacs window). Return in *WIDTH and *HEIGHT the wanted width and height of Emacs window (FRAME_X_WINDOW). */ void -x_fullscreen_adjust (f, width, height, top_pos, left_pos) +x_maximize_adjust (f, width, height, top_pos, left_pos) struct frame *f; int *width; int *height; @@ -2610,7 +2610,7 @@ *top_pos = f->top_pos; *left_pos = f->left_pos; - if (f->want_fullscreen & FULLSCREEN_HEIGHT) + if (f->want_maximize & MAXIMIZE_HEIGHT) { int ph; @@ -2621,7 +2621,7 @@ *top_pos = 0; } - if (f->want_fullscreen & FULLSCREEN_WIDTH) + if (f->want_maximize & MAXIMIZE_WIDTH) { int pw; @@ -2667,7 +2667,7 @@ int i, p; int left_no_change = 0, top_no_change = 0; int icon_left_no_change = 0, icon_top_no_change = 0; - int fullscreen_is_being_set = 0; + int maximize_is_being_set = 0; struct gcpro gcpro1, gcpro2; @@ -2710,7 +2710,7 @@ They are independent of other properties, but other properties (e.g., cursor_color) are dependent upon them. */ /* Process default font as well, since fringe widths depends on it. */ - /* Also, process fullscreen, width and height depend upon that */ + /* Also, process maximize, width and height depend upon that */ for (p = 0; p < i; p++) { Lisp_Object prop, val; @@ -2720,13 +2720,13 @@ if (EQ (prop, Qforeground_color) || EQ (prop, Qbackground_color) || EQ (prop, Qfont) - || EQ (prop, Qfullscreen)) + || EQ (prop, Qmaximize)) { register Lisp_Object param_index, old_value; int count = SPECPDL_INDEX (); old_value = get_frame_param (f, prop); - fullscreen_is_being_set |= EQ (prop, Qfullscreen); + maximize_is_being_set |= EQ (prop, Qmaximize); if (NILP (Fequal (val, old_value))) { @@ -2774,7 +2774,7 @@ else if (EQ (prop, Qforeground_color) || EQ (prop, Qbackground_color) || EQ (prop, Qfont) - || EQ (prop, Qfullscreen)) + || EQ (prop, Qmaximize)) /* Processed above. */ continue; else @@ -2828,18 +2828,18 @@ XSETINT (icon_top, 0); } - if (FRAME_VISIBLE_P (f) && fullscreen_is_being_set) - { - /* If the frame is visible already and the fullscreen parameter is + if (FRAME_VISIBLE_P (f) && maximize_is_being_set) + { + /* If the frame is visible already and the maximize parameter is being set, it is too late to set WM manager hints to specify size and position. Here we first get the width, height and position that applies to - fullscreen. We then move the frame to the appropriate + maximize. We then move the frame to the appropriate position. Resize of the frame is taken care of in the code after this if-statement. */ int new_left, new_top; - x_fullscreen_adjust (f, &width, &height, &new_top, &new_left); + x_maximize_adjust (f, &width, &height, &new_top, &new_left); if (new_top != f->top_pos || new_left != f->left_pos) x_set_offset (f, new_left, new_top, 1); } @@ -3012,25 +3012,25 @@ } -/* Change the `fullscreen' frame parameter of frame F. OLD_VALUE is +/* Change the `maximize' frame parameter of frame F. OLD_VALUE is the previous value of that parameter, NEW_VALUE is the new value. */ void -x_set_fullscreen (f, new_value, old_value) +x_set_maximize (f, new_value, old_value) struct frame *f; Lisp_Object new_value, old_value; { if (NILP (new_value)) - f->want_fullscreen = FULLSCREEN_NONE; - else if (EQ (new_value, Qfullboth)) - f->want_fullscreen = FULLSCREEN_BOTH; - else if (EQ (new_value, Qfullwidth)) - f->want_fullscreen = FULLSCREEN_WIDTH; - else if (EQ (new_value, Qfullheight)) - f->want_fullscreen = FULLSCREEN_HEIGHT; - - if (fullscreen_hook != NULL) - fullscreen_hook (f); + f->want_maximize = MAXIMIZE_NONE; + else if (EQ (new_value, Qmaxboth)) + f->want_maximize = MAXIMIZE_BOTH; + else if (EQ (new_value, Qmaxwidth)) + f->want_maximize = MAXIMIZE_WIDTH; + else if (EQ (new_value, Qmaxheight)) + f->want_maximize = MAXIMIZE_HEIGHT; + + if (maximize_hook != NULL) + maximize_hook (f); } @@ -3916,14 +3916,14 @@ window_prompting |= PPosition; } - if (f->want_fullscreen != FULLSCREEN_NONE) + if (f->want_maximize != MAXIMIZE_NONE) { int left, top; int width, height; /* It takes both for some WM:s to place it where we want */ window_prompting |= USPosition | PPosition; - x_fullscreen_adjust (f, &width, &height, &top, &left); + x_maximize_adjust (f, &width, &height, &top, &left); FRAME_COLS (f) = width; FRAME_LINES (f) = height; FRAME_PIXEL_WIDTH (f) = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, width); @@ -4033,12 +4033,12 @@ = intern ("inhibit-face-set-after-frame-default"); staticpro (&Qinhibit_face_set_after_frame_default); - Qfullwidth = intern ("fullwidth"); - staticpro (&Qfullwidth); - Qfullheight = intern ("fullheight"); - staticpro (&Qfullheight); - Qfullboth = intern ("fullboth"); - staticpro (&Qfullboth); + Qmaxwidth = intern ("maxwidth"); + staticpro (&Qmaxwidth); + Qmaxheight = intern ("maxheight"); + staticpro (&Qmaxheight); + Qmaxboth = intern ("maxboth"); + staticpro (&Qmaxboth); Qx_resource_name = intern ("x-resource-name"); staticpro (&Qx_resource_name); diff -r 2a9cc3cd6cde -r 7ad292c02ef4 src/frame.h --- a/src/frame.h Wed Aug 20 14:11:56 2008 +0200 +++ b/src/frame.h Wed Aug 20 17:11:45 2008 +0200 @@ -323,8 +323,8 @@ struct kboard *kboard; #endif - /* See FULLSCREEN_ enum below */ - int want_fullscreen; + /* See MAXIMIZE_ enum below */ + int want_maximize; /* Number of lines of menu bar. */ int menu_bar_lines; @@ -1013,7 +1013,7 @@ extern Lisp_Object Qscreen_gamma; extern Lisp_Object Qline_spacing; extern Lisp_Object Qwait_for_wm; -extern Lisp_Object Qfullscreen; +extern Lisp_Object Qmaximize; extern Lisp_Object Qleft_fringe, Qright_fringe; extern Lisp_Object Qheight, Qwidth; @@ -1037,11 +1037,11 @@ enum { /* Values used as a bit mask, BOTH == WIDTH | HEIGHT. */ - FULLSCREEN_NONE = 0, - FULLSCREEN_WIDTH = 1, - FULLSCREEN_HEIGHT = 2, - FULLSCREEN_BOTH = 3, - FULLSCREEN_WAIT = 4 + MAXIMIZE_NONE = 0, + MAXIMIZE_WIDTH = 1, + MAXIMIZE_HEIGHT = 2, + MAXIMIZE_BOTH = 3, + MAXIMIZE_WAIT = 4 }; @@ -1063,13 +1063,13 @@ extern Lisp_Object Qface_set_after_frame_default; -extern void x_fullscreen_adjust P_ ((struct frame *f, int *, int *, +extern void x_maximize_adjust P_ ((struct frame *f, int *, int *, int *, int *)); extern void x_set_frame_parameters P_ ((struct frame *, Lisp_Object)); extern void x_report_frame_params P_ ((struct frame *, Lisp_Object *)); -extern void x_set_fullscreen P_ ((struct frame *, Lisp_Object, Lisp_Object)); +extern void x_set_maximize P_ ((struct frame *, Lisp_Object, Lisp_Object)); extern void x_set_line_spacing P_ ((struct frame *, Lisp_Object, Lisp_Object)); extern void x_set_screen_gamma P_ ((struct frame *, Lisp_Object, Lisp_Object)); extern void x_set_font P_ ((struct frame *, Lisp_Object, Lisp_Object)); diff -r 2a9cc3cd6cde -r 7ad292c02ef4 src/macfns.c --- a/src/macfns.c Wed Aug 20 14:11:56 2008 +0200 +++ b/src/macfns.c Wed Aug 20 17:11:45 2008 +0200 @@ -2615,8 +2615,8 @@ RES_TYPE_SYMBOL); x_default_parameter (f, parms, Qtitle, Qnil, "title", "Title", RES_TYPE_STRING); - x_default_parameter (f, parms, Qfullscreen, Qnil, - "fullscreen", "Fullscreen", RES_TYPE_SYMBOL); + x_default_parameter (f, parms, Qmaximize, Qnil, + "maximize", "Maximize", RES_TYPE_SYMBOL); f->output_data.mac->parent_desc = FRAME_MAC_DISPLAY_INFO (f)->root_window; @@ -4341,7 +4341,7 @@ x_set_fringe_width, x_set_fringe_width, 0, /* x_set_wait_for_wm, */ - x_set_fullscreen, + x_set_maximize, }; void diff -r 2a9cc3cd6cde -r 7ad292c02ef4 src/term.c --- a/src/term.c Wed Aug 20 14:11:56 2008 +0200 +++ b/src/term.c Wed Aug 20 17:11:45 2008 +0200 @@ -193,9 +193,9 @@ void (*frame_raise_lower_hook) P_ ((FRAME_PTR f, int raise)); /* If the value of the frame parameter changed, whis hook is called. - For example, if going from fullscreen to not fullscreen this hook + For example, if going from maximize to not this hook may do something OS dependent, like extended window manager hints on X11. */ -void (*fullscreen_hook) P_ ((struct frame *f)); +void (*maximize_hook) P_ ((struct frame *f)); /* Set the vertical scroll bar for WINDOW to have its upper left corner at (TOP, LEFT), and be LENGTH rows high. Set its handle to @@ -2781,7 +2781,7 @@ defsubr (&Stty_display_color_cells); defsubr (&Stty_no_underline); - fullscreen_hook = NULL; + maximize_hook = NULL; #ifndef WINDOWSNT default_orig_pair = NULL; default_set_foreground = NULL; diff -r 2a9cc3cd6cde -r 7ad292c02ef4 src/termhooks.h --- a/src/termhooks.h Wed Aug 20 14:11:56 2008 +0200 +++ b/src/termhooks.h Wed Aug 20 17:11:45 2008 +0200 @@ -121,9 +121,9 @@ extern void (*frame_raise_lower_hook) P_ ((struct frame *f, int raise)); /* If the value of the frame parameter changed, whis hook is called. - For example, if going from fullscreen to not fullscreen this hook + For example, if going from maximize to not this hook may do something OS dependent, like extended window manager hints on X11. */ -extern void (*fullscreen_hook) P_ ((struct frame *f)); +extern void (*maximize_hook) P_ ((struct frame *f)); \f /* Scroll bar hooks. */ diff -r 2a9cc3cd6cde -r 7ad292c02ef4 src/w32fns.c --- a/src/w32fns.c Wed Aug 20 14:11:56 2008 +0200 +++ b/src/w32fns.c Wed Aug 20 17:11:45 2008 +0200 @@ -4352,8 +4352,8 @@ "bufferPredicate", "BufferPredicate", RES_TYPE_SYMBOL); x_default_parameter (f, parameters, Qtitle, Qnil, "title", "Title", RES_TYPE_STRING); - x_default_parameter (f, parameters, Qfullscreen, Qnil, - "fullscreen", "Fullscreen", RES_TYPE_SYMBOL); + x_default_parameter (f, parameters, Qmaximize, Qnil, + "maximize", "Maximize", RES_TYPE_SYMBOL); f->output_data.w32->dwStyle = WS_OVERLAPPEDWINDOW; f->output_data.w32->parent_desc = FRAME_W32_DISPLAY_INFO (f)->root_window; @@ -8608,7 +8608,7 @@ x_set_fringe_width, x_set_fringe_width, 0, /* x_set_wait_for_wm, */ - x_set_fullscreen, + x_set_maximize, }; void diff -r 2a9cc3cd6cde -r 7ad292c02ef4 src/w32term.c --- a/src/w32term.c Wed Aug 20 14:11:56 2008 +0200 +++ b/src/w32term.c Wed Aug 20 17:11:45 2008 +0200 @@ -3271,7 +3271,7 @@ static struct scroll_bar *x_window_to_scroll_bar (); static void x_scroll_bar_report_motion (); -static void x_check_fullscreen P_ ((struct frame *)); +static void x_check_maximize P_ ((struct frame *)); static void redo_mouse_highlight () @@ -4616,8 +4616,8 @@ f = x_window_to_frame (dpyinfo, msg.msg.hwnd); if (f) { - if (f->want_fullscreen & FULLSCREEN_WAIT) - f->want_fullscreen &= ~(FULLSCREEN_WAIT|FULLSCREEN_BOTH); + if (f->want_maximize & MAXIMIZE_WAIT) + f->want_maximize &= ~(MAXIMIZE_WAIT|MAXIMIZE_BOTH); } check_visibility = 1; break; @@ -4626,7 +4626,7 @@ case WM_ACTIVATEAPP: f = x_window_to_frame (dpyinfo, msg.msg.hwnd); if (f) - x_check_fullscreen (f); + x_check_maximize (f); check_visibility = 1; break; @@ -5566,19 +5566,19 @@ } -/* Check if we need to resize the frame due to a fullscreen request. +/* Check if we need to resize the frame due to a maximize request. If so needed, resize the frame. */ static void -x_check_fullscreen (f) - struct frame *f; -{ - if (f->want_fullscreen & FULLSCREEN_BOTH) +x_check_maximize (f) + struct frame *f; +{ + if (f->want_maximize & MAXIMIZE_BOTH) { int width, height, ign; x_real_positions (f, &f->left_pos, &f->top_pos); - x_fullscreen_adjust (f, &width, &height, &ign, &ign); + x_maximize_adjust (f, &width, &height, &ign, &ign); /* We do not need to move the window, it shall be taken care of when setting WM manager hints. */ @@ -5589,7 +5589,7 @@ cancel_mouse_face (f); /* Wait for the change of frame size to occur */ - f->want_fullscreen |= FULLSCREEN_WAIT; + f->want_maximize |= MAXIMIZE_WAIT; } } } diff -r 2a9cc3cd6cde -r 7ad292c02ef4 src/xfns.c --- a/src/xfns.c Wed Aug 20 14:11:56 2008 +0200 +++ b/src/xfns.c Wed Aug 20 17:11:45 2008 +0200 @@ -3324,8 +3324,8 @@ "title", "Title", RES_TYPE_STRING); x_default_parameter (f, parms, Qwait_for_wm, Qt, "waitForWM", "WaitForWM", RES_TYPE_BOOLEAN); - x_default_parameter (f, parms, Qfullscreen, Qnil, - "fullscreen", "Fullscreen", RES_TYPE_SYMBOL); + x_default_parameter (f, parms, Qmaximize, Qnil, + "maximize", "Maximize", RES_TYPE_SYMBOL); f->output_data.x->parent_desc = FRAME_X_DISPLAY_INFO (f)->root_window; @@ -5767,7 +5767,7 @@ x_set_fringe_width, x_set_fringe_width, x_set_wait_for_wm, - x_set_fullscreen, + x_set_maximize, }; void diff -r 2a9cc3cd6cde -r 7ad292c02ef4 src/xterm.c --- a/src/xterm.c Wed Aug 20 14:11:56 2008 +0200 +++ b/src/xterm.c Wed Aug 20 17:11:45 2008 +0200 @@ -363,7 +363,7 @@ enum scroll_bar_part *, Lisp_Object *, Lisp_Object *, unsigned long *)); -static void x_check_fullscreen P_ ((struct frame *)); +static void x_check_maximize P_ ((struct frame *)); static void x_check_expected_move P_ ((struct frame *, int, int)); static void x_sync_with_move P_ ((struct frame *, int, int, int)); static int handle_one_xevent P_ ((struct x_display_info *, XEvent *, @@ -5967,7 +5967,7 @@ f = x_window_to_frame (dpyinfo, event.xexpose.window); if (f) { - x_check_fullscreen (f); + x_check_maximize (f); #ifdef USE_GTK /* This seems to be needed for GTK 2.6. */ @@ -6676,12 +6676,12 @@ xg_resize_widgets (f, event.xconfigure.width, event.xconfigure.height); #else /* not USE_GTK */ - /* If there is a pending resize for fullscreen, don't + /* If there is a pending resize for maximize, don't do this one, the right one will come later. The toolkit version doesn't seem to need this, but we need to reset it below. */ int dont_resize - = ((f->want_fullscreen & FULLSCREEN_WAIT) + = ((f->want_maximize & MAXIMIZE_WAIT) && f->new_text_cols != 0); int rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, event.xconfigure.height); int columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, event.xconfigure.width); @@ -6713,15 +6713,15 @@ #ifdef USE_GTK /* GTK creates windows but doesn't map them. - Only get real positions and check fullscreen when mapped. */ + Only get real positions and check maximize when mapped. */ if (FRAME_GTK_OUTER_WIDGET (f) && GTK_WIDGET_MAPPED (FRAME_GTK_OUTER_WIDGET (f))) #endif { x_real_positions (f, &f->left_pos, &f->top_pos); - if (f->want_fullscreen & FULLSCREEN_WAIT) - f->want_fullscreen &= ~(FULLSCREEN_WAIT|FULLSCREEN_BOTH); + if (f->want_maximize & MAXIMIZE_WAIT) + f->want_maximize &= ~(MAXIMIZE_WAIT|MAXIMIZE_BOTH); } #ifdef HAVE_X_I18N @@ -8428,10 +8428,10 @@ return rc; } -/* Do fullscreen as specified in extended window manager hints */ - -static int -do_ewmh_fullscreen (f) +/* Do maximize as specified in extended window manager hints */ + +static int +do_ewmh_maximize (f) struct frame *f; { int have_net_atom = wm_supports (f, "_NET_WM_STATE"); @@ -8454,15 +8454,15 @@ /* If there are _NET_ atoms we assume we have extended window manager hints. */ - switch (f->want_fullscreen) - { - case FULLSCREEN_BOTH: + switch (f->want_maximize) + { + case MAXIMIZE_BOTH: what = fs; break; - case FULLSCREEN_WIDTH: + case MAXIMIZE_WIDTH: what = fw; break; - case FULLSCREEN_HEIGHT: + case MAXIMIZE_HEIGHT: what = fh; break; } @@ -8494,7 +8494,7 @@ (make_unibyte_string (fw, strlen (fw)), Qnil))); - f->want_fullscreen = FULLSCREEN_NONE; + f->want_maximize = MAXIMIZE_NONE; if (what != NULL) Fx_send_client_event (frame, make_number (0), frame, make_unibyte_string (atom, strlen (atom)), @@ -8510,35 +8510,35 @@ } static void -XTfullscreen_hook (f) +XTmaximize_hook (f) FRAME_PTR f; { if (f->async_visible) { BLOCK_INPUT; - do_ewmh_fullscreen (f); + do_ewmh_maximize (f); x_sync (f); UNBLOCK_INPUT; } } -/* Check if we need to resize the frame due to a fullscreen request. +/* Check if we need to resize the frame due to a maximize request. If so needed, resize the frame. */ static void -x_check_fullscreen (f) - struct frame *f; -{ - if (f->want_fullscreen & FULLSCREEN_BOTH) +x_check_maximize (f) + struct frame *f; +{ + if (f->want_maximize & MAXIMIZE_BOTH) { int width, height, ign; - if (do_ewmh_fullscreen (f)) + if (do_ewmh_maximize (f)) return; x_real_positions (f, &f->left_pos, &f->top_pos); - x_fullscreen_adjust (f, &width, &height, &ign, &ign); + x_maximize_adjust (f, &width, &height, &ign, &ign); /* We do not need to move the window, it shall be taken care of when setting WM manager hints. @@ -8551,7 +8551,7 @@ cancel_mouse_face (f); /* Wait for the change of frame size to occur */ - f->want_fullscreen |= FULLSCREEN_WAIT; + f->want_maximize |= MAXIMIZE_WAIT; } } } @@ -11181,7 +11181,7 @@ condemn_scroll_bars_hook = XTcondemn_scroll_bars; redeem_scroll_bar_hook = XTredeem_scroll_bar; judge_scroll_bars_hook = XTjudge_scroll_bars; - fullscreen_hook = XTfullscreen_hook; + maximize_hook = XTmaximize_hook; scroll_region_ok = 1; /* we'll scroll partial frames */ char_ins_del_ok = 1; -- Ivan http://kanis.fr The West won the world not by the superiority of its ideas or values or religion ... but rather by its superiority in applying organized violence. Westerners often forget this fact; non-Westerners never do. -- Samuel Huntington ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 7:46 Proposal for a new API to fullscreen Ivan Kanis 2008-08-19 9:31 ` Tassilo Horn 2008-08-19 13:08 ` Jason Rumney @ 2008-08-19 15:08 ` Tom Tromey 2008-08-21 5:59 ` Ivan Kanis 2008-08-23 8:03 ` [PATCH] adding maximize to fullscreen frame parameters Ivan Kanis 2 siblings, 2 replies; 41+ messages in thread From: Tom Tromey @ 2008-08-19 15:08 UTC (permalink / raw) To: Ivan Kanis; +Cc: emacs-devel >>>>> "Ivan" == Ivan Kanis <expire-by-2008-08-24@kanis.fr> writes: Ivan> (set-frame-parameter nil 'fullscreen 'fullboth) Ivan> However this is very ambiguous, it does fullscreen on Gnome and Ivan> maximise on Mac and Windows. Ivan> I propose a new API to solve the ambiguity: Ivan> (fullscreen-mode 1) I think it would be better to have 'fullboth mean "full screen", and then add a new parameter value, 'maximize, that means maximize. My reasoning is that really only one of these settings makes sense at a time, and both are useful. Tom ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: Proposal for a new API to fullscreen 2008-08-19 15:08 ` Tom Tromey @ 2008-08-21 5:59 ` Ivan Kanis 2008-08-23 8:03 ` [PATCH] adding maximize to fullscreen frame parameters Ivan Kanis 1 sibling, 0 replies; 41+ messages in thread From: Ivan Kanis @ 2008-08-21 5:59 UTC (permalink / raw) To: emacs-devel Tom Tromey <tromey@redhat.com> writes: >>>>>> "Ivan" == Ivan Kanis <expire-by-2008-08-24@kanis.fr> writes: > > Ivan> (set-frame-parameter nil 'fullscreen 'fullboth) > > Ivan> However this is very ambiguous, it does fullscreen on Gnome and > Ivan> maximise on Mac and Windows. > > Ivan> I propose a new API to solve the ambiguity: > Ivan> (fullscreen-mode 1) > > I think it would be better to have 'fullboth mean "full screen", and > then add a new parameter value, 'maximize, that means maximize. > My reasoning is that really only one of these settings makes sense at > a time, and both are useful. > > Tom Hello Tom, I got a bit carried away with my patch yesterday ;) I think your proposal is more sensible and less traumatic for users. -- Ivan http://kanis.fr If you pick up a starving dog and make him prosperous, he will not bite you. This is the principal difference between a dog and a man. -- Mark Twain ^ permalink raw reply [flat|nested] 41+ messages in thread
* [PATCH] adding maximize to fullscreen frame parameters 2008-08-19 15:08 ` Tom Tromey 2008-08-21 5:59 ` Ivan Kanis @ 2008-08-23 8:03 ` Ivan Kanis 2008-08-23 18:09 ` Eli Zaretskii 1 sibling, 1 reply; 41+ messages in thread From: Ivan Kanis @ 2008-08-23 8:03 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 864 bytes --] Tom Tromey <tromey@redhat.com> writes: > I think it would be better to have 'fullboth mean "full screen", and > then add a new parameter value, 'maximize, that means maximize. > My reasoning is that really only one of these settings makes sense at > a time, and both are useful. This patch against CVS HEAD is based on Tom's proposition. Sorry if it's repost, I am not sure the fist made it made it to the newsgroup. I will gladly write the changelog if someone plans to commit it. Here is the bit of lisp code I used to test it: (local-set-key (read-kbd-macro "C-j") 'eval-last-sexp) (set-frame-parameter nil 'fullscreen 'fullheight) (set-frame-parameter nil 'fullscreen 'fullwidth) (set-frame-parameter nil 'fullscreen 'fullboth) (set-frame-parameter nil 'fullscreen 'maximize) (set-frame-parameter nil 'fullscreen 'nil) (frame-parameter nil 'fullscreen) [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: fsx.patch --] [-- Type: text/x-diff, Size: 6354 bytes --] diff -r 7a34490312a4 -r 1a456119134e doc/emacs/xresources.texi --- a/doc/emacs/xresources.texi Thu Aug 21 08:23:02 2008 +0200 +++ b/doc/emacs/xresources.texi Thu Aug 21 14:51:16 2008 +0200 @@ -237,8 +237,8 @@ @ifnottex @item @code{fullscreen} (class @code{Fullscreen}) The desired fullscreen size. The value can be one of @code{fullboth}, -@code{fullwidth} or @code{fullheight}, which correspond to -the command-line options @samp{-fs}, @samp{-fw}, and @samp{-fh} +@code{fullheight}, @code{fullwidth} or @code{maximize} which correspond to +the command-line options @samp{-fs}, @samp{-fh} , @samp{-fw} and @samp{-fm} (@pxref{Window Size X}). Note that this applies to the initial frame only. diff -r 7a34490312a4 -r 1a456119134e doc/lispref/frames.texi --- a/doc/lispref/frames.texi Thu Aug 21 08:23:02 2008 +0200 +++ b/doc/lispref/frames.texi Thu Aug 21 14:51:16 2008 +0200 @@ -481,8 +481,11 @@ Specify that width, height or both shall be set to the size of the screen. The value @code{fullwidth} specifies that width shall be the size of the screen. The value @code{fullheight} specifies that height shall be the -size of the screen. The value @code{fullboth} specifies that both the -width and the height shall be set to the size of the screen. +size of the screen. The value @code{maximize} specifies that both the +width and the height shall be set to the size of the screen. The value +@code{fullboth} toggles fullscreen mode, all windows decoration are hidden +such as title bar and border. The desktop taskbar is also hidden so it +looks like emacs is running on a console. @end table @node Layout Parameters diff -r 7a34490312a4 -r 1a456119134e doc/man/emacs.1 --- a/doc/man/emacs.1 Thu Aug 21 08:23:02 2008 +0200 +++ b/doc/man/emacs.1 Thu Aug 21 14:51:16 2008 +0200 @@ -443,11 +443,12 @@ The desired fullscreen size. The value can be one of .IR fullboth , +.IR fullheight , .IR fullwidth , or -.IR fullheight , -which correspond to the command-line options `\-fs', `\-fw', and -`\-fh', respectively. +.IR maximize , +which correspond to the command-line options `\-fs', `\-fh', +`\-fw', and, `\-fm' respectively. Note that this applies to the initial frame only. .TP .BR geometry " (class " Geometry ) diff -r 7a34490312a4 -r 1a456119134e lisp/startup.el --- a/lisp/startup.el Thu Aug 21 08:23:02 2008 +0200 +++ b/lisp/startup.el Thu Aug 21 14:51:16 2008 +0200 @@ -134,6 +134,7 @@ ("-fs" 0 x-handle-initial-switch fullscreen fullboth) ("-fw" 0 x-handle-initial-switch fullscreen fullwidth) ("-fh" 0 x-handle-initial-switch fullscreen fullheight) + ("-fm" 0 x-handle-initial-switch fullscreen maximize) ("-ib" 1 x-handle-numeric-switch internal-border-width) ("-g" 1 x-handle-geometry) ("-lsp" 1 x-handle-numeric-switch line-spacing) @@ -159,6 +160,7 @@ ("--fullscreen" 0 x-handle-initial-switch fullscreen fullboth) ("--fullwidth" 0 x-handle-initial-switch fullscreen fullwidth) ("--fullheight" 0 x-handle-initial-switch fullscreen fullheight) + ("--fullmax" 0 x-handle-initial-switch fullscreen maximize) ("--internal-border" 1 x-handle-numeric-switch internal-border-width) ("--geometry" 1 x-handle-geometry) ("--foreground-color" 1 x-handle-switch foreground-color) diff -r 7a34490312a4 -r 1a456119134e src/frame.c --- a/src/frame.c Thu Aug 21 08:23:02 2008 +0200 +++ b/src/frame.c Thu Aug 21 14:51:16 2008 +0200 @@ -120,7 +120,7 @@ Lisp_Object Qtty_color_mode; Lisp_Object Qtty, Qtty_type; -Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth; +Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth, Qmaximize; Lisp_Object Qfont_backend; Lisp_Object Qalpha; @@ -3262,6 +3262,8 @@ f->want_fullscreen = FULLSCREEN_WIDTH; else if (EQ (new_value, Qfullheight)) f->want_fullscreen = FULLSCREEN_HEIGHT; + else if (EQ (new_value, Qmaximize)) + f->want_fullscreen = FULLSCREEN_MAXIMIZE; if (FRAME_TERMINAL (f)->fullscreen_hook != NULL) FRAME_TERMINAL (f)->fullscreen_hook (f); @@ -4423,6 +4425,8 @@ staticpro (&Qfullheight); Qfullboth = intern ("fullboth"); staticpro (&Qfullboth); + Qmaximize = intern ("maximize"); + staticpro (&Qmaximize); Qx_resource_name = intern ("x-resource-name"); staticpro (&Qx_resource_name); diff -r 7a34490312a4 -r 1a456119134e src/frame.h --- a/src/frame.h Thu Aug 21 08:23:02 2008 +0200 +++ b/src/frame.h Thu Aug 21 14:51:16 2008 +0200 @@ -75,12 +75,12 @@ enum fullscreen_type { - /* Values used as a bit mask, BOTH == WIDTH | HEIGHT. */ - FULLSCREEN_NONE = 0, - FULLSCREEN_WIDTH = 1, - FULLSCREEN_HEIGHT = 2, - FULLSCREEN_BOTH = 3, - FULLSCREEN_WAIT = 4 + FULLSCREEN_NONE = 0x0, + FULLSCREEN_WIDTH = 0x1, + FULLSCREEN_HEIGHT = 0x2, + FULLSCREEN_BOTH = 0x4, + FULLSCREEN_WAIT = 0x8, + FULLSCREEN_MAXIMIZE = 0x10 }; diff -r 7a34490312a4 -r 1a456119134e src/xterm.c --- a/src/xterm.c Thu Aug 21 08:23:02 2008 +0200 +++ b/src/xterm.c Thu Aug 21 14:51:16 2008 +0200 @@ -8580,9 +8580,10 @@ break; } - if (what != NULL && !wm_supports (f, what)) return 0; - - + /* Only remove element when setting to none so that maxmize + works properley */ + if (f->want_fullscreen == FULLSCREEN_NONE) + { Fx_send_client_event (frame, make_number (0), frame, make_unibyte_string (atom, strlen (atom)), make_number (32), @@ -8607,6 +8608,10 @@ (make_unibyte_string (fw, strlen (fw)), Qnil))); + } + + if (what != NULL && !wm_supports (f, what)) return 0; + f->want_fullscreen = FULLSCREEN_NONE; if (what != NULL) Fx_send_client_event (frame, make_number (0), frame, @@ -8626,7 +8631,15 @@ XTfullscreen_hook (f) FRAME_PTR f; { - if (f->async_visible) + /* Maximise in X is full height plus full width */ + if (f->want_fullscreen == FULLSCREEN_MAXIMIZE) + { + f->want_fullscreen = FULLSCREEN_HEIGHT; + XTfullscreen_hook(f); + f->want_fullscreen = FULLSCREEN_WIDTH; + XTfullscreen_hook(f); + } + else if (f->async_visible) { BLOCK_INPUT; do_ewmh_fullscreen (f); [-- Attachment #3: Type: text/plain, Size: 122 bytes --] Take care, -- Ivan http://kanis.fr I often quote myself; it adds spice to my conversation. -- George Bernard Shaw ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH] adding maximize to fullscreen frame parameters 2008-08-23 8:03 ` [PATCH] adding maximize to fullscreen frame parameters Ivan Kanis @ 2008-08-23 18:09 ` Eli Zaretskii 2008-08-24 8:23 ` Ivan Kanis 0 siblings, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2008-08-23 18:09 UTC (permalink / raw) To: Ivan Kanis; +Cc: emacs-devel > From: Ivan Kanis <expire-by-2008-08-28@kanis.fr> > Date: Sat, 23 Aug 2008 10:03:14 +0200 > > This patch against CVS HEAD is based on Tom's proposition. Sorry if > it's repost, I am not sure the fist made it made it to the > newsgroup. I will gladly write the changelog if someone plans to > commit it. Thanks. Allow me a few comments on the documentation pieces: > +size of the screen. The value @code{maximize} specifies that both the > +width and the height shall be set to the size of the screen. The value > +@code{fullboth} toggles fullscreen mode, all windows decoration are hidden > +such as title bar and border. The desktop taskbar is also hidden so it > +looks like emacs is running on a console. Please leave two spaces after a period that ends a sentence. Also, I don't think "fullscreen" is a word (in "fullscreen mode"); I suggest to use "full-screen" in this context. > + /* Maximise in X is full height plus full width */ > + if (f->want_fullscreen == FULLSCREEN_MAXIMIZE) > + { > + f->want_fullscreen = FULLSCREEN_HEIGHT; > + XTfullscreen_hook(f); > + f->want_fullscreen = FULLSCREEN_WIDTH; > + XTfullscreen_hook(f); > + } > + else if (f->async_visible) Why are you call XTfullscreen_hook twice here? ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH] adding maximize to fullscreen frame parameters 2008-08-23 18:09 ` Eli Zaretskii @ 2008-08-24 8:23 ` Ivan Kanis 2008-08-24 18:12 ` Eli Zaretskii 0 siblings, 1 reply; 41+ messages in thread From: Ivan Kanis @ 2008-08-24 8:23 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 633 bytes --] Hi Eli, Eli Zaretskii <eliz@gnu.org> writes: >> +size of the screen. The value @code{maximize} specifies that both the >> +width and the height shall be set to the size of the screen. The value >> +@code{fullboth} toggles fullscreen mode, all windows decoration are hidden >> +such as title bar and border. The desktop taskbar is also hidden so it >> +looks like emacs is running on a console. > > Please leave two spaces after a period that ends a sentence. > > Also, I don't think "fullscreen" is a word (in "fullscreen mode"); I > suggest to use "full-screen" in this context. > The included patch fixed the document glitch. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: fsx.patch --] [-- Type: text/x-diff, Size: 6354 bytes --] diff -r 7a34490312a4 -r db130fea0a60 doc/emacs/xresources.texi --- a/doc/emacs/xresources.texi Thu Aug 21 08:23:02 2008 +0200 +++ b/doc/emacs/xresources.texi Sun Aug 24 10:08:44 2008 +0200 @@ -237,8 +237,8 @@ @ifnottex @item @code{fullscreen} (class @code{Fullscreen}) The desired fullscreen size. The value can be one of @code{fullboth}, -@code{fullwidth} or @code{fullheight}, which correspond to -the command-line options @samp{-fs}, @samp{-fw}, and @samp{-fh} +@code{fullheight}, @code{fullwidth} or @code{maximize} which correspond to +the command-line options @samp{-fs}, @samp{-fh}, @samp{-fw} and @samp{-fm} (@pxref{Window Size X}). Note that this applies to the initial frame only. diff -r 7a34490312a4 -r db130fea0a60 doc/lispref/frames.texi --- a/doc/lispref/frames.texi Thu Aug 21 08:23:02 2008 +0200 +++ b/doc/lispref/frames.texi Sun Aug 24 10:08:44 2008 +0200 @@ -481,8 +481,11 @@ Specify that width, height or both shall be set to the size of the screen. The value @code{fullwidth} specifies that width shall be the size of the screen. The value @code{fullheight} specifies that height shall be the -size of the screen. The value @code{fullboth} specifies that both the -width and the height shall be set to the size of the screen. +size of the screen. The value @code{maximize} specifies that both the +width and the height shall be set to the size of the screen. The value +@code{fullboth} toggles full-screen mode, all windows decoration are hidden +such as title bar and border. The desktop taskbar is also hidden so it +looks like emacs is running on a console. @end table @node Layout Parameters diff -r 7a34490312a4 -r db130fea0a60 doc/man/emacs.1 --- a/doc/man/emacs.1 Thu Aug 21 08:23:02 2008 +0200 +++ b/doc/man/emacs.1 Sun Aug 24 10:08:44 2008 +0200 @@ -443,11 +443,12 @@ The desired fullscreen size. The value can be one of .IR fullboth , +.IR fullheight , .IR fullwidth , or -.IR fullheight , -which correspond to the command-line options `\-fs', `\-fw', and -`\-fh', respectively. +.IR maximize , +which correspond to the command-line options `\-fs', `\-fh', +`\-fw', and `\-fm' respectively. Note that this applies to the initial frame only. .TP .BR geometry " (class " Geometry ) diff -r 7a34490312a4 -r db130fea0a60 lisp/startup.el --- a/lisp/startup.el Thu Aug 21 08:23:02 2008 +0200 +++ b/lisp/startup.el Sun Aug 24 10:08:44 2008 +0200 @@ -134,6 +134,7 @@ ("-fs" 0 x-handle-initial-switch fullscreen fullboth) ("-fw" 0 x-handle-initial-switch fullscreen fullwidth) ("-fh" 0 x-handle-initial-switch fullscreen fullheight) + ("-fm" 0 x-handle-initial-switch fullscreen maximize) ("-ib" 1 x-handle-numeric-switch internal-border-width) ("-g" 1 x-handle-geometry) ("-lsp" 1 x-handle-numeric-switch line-spacing) @@ -159,6 +160,7 @@ ("--fullscreen" 0 x-handle-initial-switch fullscreen fullboth) ("--fullwidth" 0 x-handle-initial-switch fullscreen fullwidth) ("--fullheight" 0 x-handle-initial-switch fullscreen fullheight) + ("--fullmax" 0 x-handle-initial-switch fullscreen maximize) ("--internal-border" 1 x-handle-numeric-switch internal-border-width) ("--geometry" 1 x-handle-geometry) ("--foreground-color" 1 x-handle-switch foreground-color) diff -r 7a34490312a4 -r db130fea0a60 src/frame.c --- a/src/frame.c Thu Aug 21 08:23:02 2008 +0200 +++ b/src/frame.c Sun Aug 24 10:08:44 2008 +0200 @@ -120,7 +120,7 @@ Lisp_Object Qtty_color_mode; Lisp_Object Qtty, Qtty_type; -Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth; +Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth, Qmaximize; Lisp_Object Qfont_backend; Lisp_Object Qalpha; @@ -3262,6 +3262,8 @@ f->want_fullscreen = FULLSCREEN_WIDTH; else if (EQ (new_value, Qfullheight)) f->want_fullscreen = FULLSCREEN_HEIGHT; + else if (EQ (new_value, Qmaximize)) + f->want_fullscreen = FULLSCREEN_MAXIMIZE; if (FRAME_TERMINAL (f)->fullscreen_hook != NULL) FRAME_TERMINAL (f)->fullscreen_hook (f); @@ -4423,6 +4425,8 @@ staticpro (&Qfullheight); Qfullboth = intern ("fullboth"); staticpro (&Qfullboth); + Qmaximize = intern ("maximize"); + staticpro (&Qmaximize); Qx_resource_name = intern ("x-resource-name"); staticpro (&Qx_resource_name); diff -r 7a34490312a4 -r db130fea0a60 src/frame.h --- a/src/frame.h Thu Aug 21 08:23:02 2008 +0200 +++ b/src/frame.h Sun Aug 24 10:08:44 2008 +0200 @@ -75,12 +75,12 @@ enum fullscreen_type { - /* Values used as a bit mask, BOTH == WIDTH | HEIGHT. */ - FULLSCREEN_NONE = 0, - FULLSCREEN_WIDTH = 1, - FULLSCREEN_HEIGHT = 2, - FULLSCREEN_BOTH = 3, - FULLSCREEN_WAIT = 4 + FULLSCREEN_NONE = 0x0, + FULLSCREEN_WIDTH = 0x1, + FULLSCREEN_HEIGHT = 0x2, + FULLSCREEN_BOTH = 0x4, + FULLSCREEN_WAIT = 0x8, + FULLSCREEN_MAXIMIZE = 0x10 }; diff -r 7a34490312a4 -r db130fea0a60 src/xterm.c --- a/src/xterm.c Thu Aug 21 08:23:02 2008 +0200 +++ b/src/xterm.c Sun Aug 24 10:08:44 2008 +0200 @@ -8580,9 +8580,10 @@ break; } - if (what != NULL && !wm_supports (f, what)) return 0; - - + /* Only remove element when setting to none so that maxmize + works properley */ + if (f->want_fullscreen == FULLSCREEN_NONE) + { Fx_send_client_event (frame, make_number (0), frame, make_unibyte_string (atom, strlen (atom)), make_number (32), @@ -8607,6 +8608,10 @@ (make_unibyte_string (fw, strlen (fw)), Qnil))); + } + + if (what != NULL && !wm_supports (f, what)) return 0; + f->want_fullscreen = FULLSCREEN_NONE; if (what != NULL) Fx_send_client_event (frame, make_number (0), frame, @@ -8626,7 +8631,15 @@ XTfullscreen_hook (f) FRAME_PTR f; { - if (f->async_visible) + /* Maximise in X is full height plus full width */ + if (f->want_fullscreen == FULLSCREEN_MAXIMIZE) + { + f->want_fullscreen = FULLSCREEN_HEIGHT; + XTfullscreen_hook(f); + f->want_fullscreen = FULLSCREEN_WIDTH; + XTfullscreen_hook(f); + } + else if (f->async_visible) { BLOCK_INPUT; do_ewmh_fullscreen (f); [-- Attachment #3: Type: text/plain, Size: 746 bytes --] >> + /* Maximise in X is full height plus full width */ >> + if (f->want_fullscreen == FULLSCREEN_MAXIMIZE) >> + { >> + f->want_fullscreen = FULLSCREEN_HEIGHT; >> + XTfullscreen_hook(f); >> + f->want_fullscreen = FULLSCREEN_WIDTH; >> + XTfullscreen_hook(f); >> + } >> + else if (f->async_visible) > > Why are you call XTfullscreen_hook twice here? By convention maximize under X is calling FULLSCREEN_HEIGHT plus FULLSCREEN_WIDTH, I thought the cleanest way to implement the feature was to call the hook twice. I can do it inside do_ewmh_fullscreen but the patch will be much harder to read. Take care, -- Ivan http://kanis.fr I often quote myself; it adds spice to my conversation. -- George Bernard Shaw ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH] adding maximize to fullscreen frame parameters 2008-08-24 8:23 ` Ivan Kanis @ 2008-08-24 18:12 ` Eli Zaretskii 2008-08-26 6:57 ` Ivan Kanis 0 siblings, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2008-08-24 18:12 UTC (permalink / raw) To: Ivan Kanis; +Cc: emacs-devel > From: Ivan Kanis <expire-by-2008-08-29@kanis.fr> > Date: Sun, 24 Aug 2008 10:23:21 +0200 > > > Please leave two spaces after a period that ends a sentence. > > > > Also, I don't think "fullscreen" is a word (in "fullscreen mode"); I > > suggest to use "full-screen" in this context. > > > > The included patch fixed the document glitch. Thanks, but there's still one case of a single space between sentences. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH] adding maximize to fullscreen frame parameters 2008-08-24 18:12 ` Eli Zaretskii @ 2008-08-26 6:57 ` Ivan Kanis 2008-09-19 11:35 ` Lennart Borgman (gmail) 0 siblings, 1 reply; 41+ messages in thread From: Ivan Kanis @ 2008-08-26 6:57 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 638 bytes --] Eli Zaretskii <eliz@gnu.org> wrote: >> From: Ivan Kanis <expire-by-2008-08-29@kanis.fr> >> Date: Sun, 24 Aug 2008 10:23:21 +0200 >> >> > Please leave two spaces after a period that ends a sentence. >> > >> > Also, I don't think "fullscreen" is a word (in "fullscreen mode"); I >> > suggest to use "full-screen" in this context. >> > >> >> The included patch fixed the document glitch. > > Thanks, but there's still one case of a single space between > sentences. Sorry if you get this twice. This patch fixes single space and implement full-screen feature on Windows. Let know if you plan to check it in I will write the ChangeLogs. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: fsxwin.patch --] [-- Type: text/x-diff, Size: 10832 bytes --] diff -r 7a34490312a4 doc/emacs/xresources.texi --- a/doc/emacs/xresources.texi Thu Aug 21 08:23:02 2008 +0200 +++ b/doc/emacs/xresources.texi Mon Aug 25 10:30:20 2008 +0200 @@ -237,8 +237,8 @@ all frames. @ifnottex @item @code{fullscreen} (class @code{Fullscreen}) The desired fullscreen size. The value can be one of @code{fullboth}, -@code{fullwidth} or @code{fullheight}, which correspond to -the command-line options @samp{-fs}, @samp{-fw}, and @samp{-fh} +@code{fullheight}, @code{fullwidth} or @code{maximize} which correspond to +the command-line options @samp{-fs}, @samp{-fh}, @samp{-fw} and @samp{-fm} (@pxref{Window Size X}). Note that this applies to the initial frame only. diff -r 7a34490312a4 doc/lispref/frames.texi --- a/doc/lispref/frames.texi Thu Aug 21 08:23:02 2008 +0200 +++ b/doc/lispref/frames.texi Mon Aug 25 10:30:20 2008 +0200 @@ -481,8 +481,11 @@ Specify that width, height or both shall Specify that width, height or both shall be set to the size of the screen. The value @code{fullwidth} specifies that width shall be the size of the screen. The value @code{fullheight} specifies that height shall be the -size of the screen. The value @code{fullboth} specifies that both the -width and the height shall be set to the size of the screen. +size of the screen. The value @code{maximize} specifies that both the +width and the height shall be set to the size of the screen. The value +@code{fullboth} toggles full-screen mode, all windows decoration are hidden +such as title bar and border. The desktop taskbar is also hidden so it +looks like emacs is running on a console. @end table @node Layout Parameters diff -r 7a34490312a4 doc/man/emacs.1 --- a/doc/man/emacs.1 Thu Aug 21 08:23:02 2008 +0200 +++ b/doc/man/emacs.1 Mon Aug 25 10:30:20 2008 +0200 @@ -443,11 +443,12 @@ The desired fullscreen size. The desired fullscreen size. The value can be one of .IR fullboth , +.IR fullheight , .IR fullwidth , or -.IR fullheight , -which correspond to the command-line options `\-fs', `\-fw', and -`\-fh', respectively. +.IR maximize , +which correspond to the command-line options `\-fs', `\-fh', +`\-fw', and `\-fm' respectively. Note that this applies to the initial frame only. .TP .BR geometry " (class " Geometry ) diff -r 7a34490312a4 lisp/startup.el --- a/lisp/startup.el Thu Aug 21 08:23:02 2008 +0200 +++ b/lisp/startup.el Mon Aug 25 10:30:20 2008 +0200 @@ -134,6 +134,7 @@ This is normally copied from `default-di ("-fs" 0 x-handle-initial-switch fullscreen fullboth) ("-fw" 0 x-handle-initial-switch fullscreen fullwidth) ("-fh" 0 x-handle-initial-switch fullscreen fullheight) + ("-fm" 0 x-handle-initial-switch fullscreen maximize) ("-ib" 1 x-handle-numeric-switch internal-border-width) ("-g" 1 x-handle-geometry) ("-lsp" 1 x-handle-numeric-switch line-spacing) @@ -159,6 +160,7 @@ This is normally copied from `default-di ("--fullscreen" 0 x-handle-initial-switch fullscreen fullboth) ("--fullwidth" 0 x-handle-initial-switch fullscreen fullwidth) ("--fullheight" 0 x-handle-initial-switch fullscreen fullheight) + ("--fullmax" 0 x-handle-initial-switch fullscreen maximize) ("--internal-border" 1 x-handle-numeric-switch internal-border-width) ("--geometry" 1 x-handle-geometry) ("--foreground-color" 1 x-handle-switch foreground-color) diff -r 7a34490312a4 src/emacs.c --- a/src/emacs.c Thu Aug 21 08:23:02 2008 +0200 +++ b/src/emacs.c Mon Aug 25 10:30:20 2008 +0200 @@ -304,7 +304,8 @@ Display options:\n\ --font, -fn FONT default font; must be fixed-width\n\ --foreground-color, -fg COLOR window foreground color\n\ --fullheight, -fh make the first frame high as the screen\n\ ---fullscreen, -fs make first frame fullscreen\n\ +--fullmax, --fm make the fisrs frame maximized\n\ +--fullscreen, -fs make first frame full-screen\n\ --fullwidth, -fw make the first frame wide as the screen\n\ --geometry, -g GEOMETRY window geometry\n\ --no-bitmap-icon, -nbi do not use picture of gnu for Emacs icon\n\ diff -r 7a34490312a4 src/frame.c --- a/src/frame.c Thu Aug 21 08:23:02 2008 +0200 +++ b/src/frame.c Mon Aug 25 10:30:21 2008 +0200 @@ -120,7 +120,7 @@ Lisp_Object Qtty_color_mode; Lisp_Object Qtty_color_mode; Lisp_Object Qtty, Qtty_type; -Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth; +Lisp_Object Qfullscreen, Qfullwidth, Qfullheight, Qfullboth, Qmaximize; Lisp_Object Qfont_backend; Lisp_Object Qalpha; @@ -3262,6 +3262,8 @@ x_set_fullscreen (f, new_value, old_valu f->want_fullscreen = FULLSCREEN_WIDTH; else if (EQ (new_value, Qfullheight)) f->want_fullscreen = FULLSCREEN_HEIGHT; + else if (EQ (new_value, Qmaximize)) + f->want_fullscreen = FULLSCREEN_MAXIMIZE; if (FRAME_TERMINAL (f)->fullscreen_hook != NULL) FRAME_TERMINAL (f)->fullscreen_hook (f); @@ -4423,6 +4425,8 @@ syms_of_frame () staticpro (&Qfullheight); Qfullboth = intern ("fullboth"); staticpro (&Qfullboth); + Qmaximize = intern ("maximize"); + staticpro (&Qmaximize); Qx_resource_name = intern ("x-resource-name"); staticpro (&Qx_resource_name); diff -r 7a34490312a4 src/frame.h --- a/src/frame.h Thu Aug 21 08:23:02 2008 +0200 +++ b/src/frame.h Mon Aug 25 10:30:21 2008 +0200 @@ -75,12 +75,12 @@ enum text_cursor_kinds enum fullscreen_type { - /* Values used as a bit mask, BOTH == WIDTH | HEIGHT. */ - FULLSCREEN_NONE = 0, - FULLSCREEN_WIDTH = 1, - FULLSCREEN_HEIGHT = 2, - FULLSCREEN_BOTH = 3, - FULLSCREEN_WAIT = 4 + FULLSCREEN_NONE = 0x0, + FULLSCREEN_WIDTH = 0x1, + FULLSCREEN_HEIGHT = 0x2, + FULLSCREEN_BOTH = 0x4, + FULLSCREEN_WAIT = 0x8, + FULLSCREEN_MAXIMIZE = 0x10 }; diff -r 7a34490312a4 src/w32fns.c --- a/src/w32fns.c Thu Aug 21 08:23:02 2008 +0200 +++ b/src/w32fns.c Mon Aug 25 10:30:21 2008 +0200 @@ -3690,6 +3690,10 @@ w32_wnd_proc (hwnd, msg, wParam, lParam) return 0; case WM_WINDOWPOSCHANGING: + /* Don't restrict full-screen window */ + f = x_window_to_frame (dpyinfo, hwnd); + if (f && f->want_fullscreen & FULLSCREEN_BOTH) + goto dflt; /* Don't restrict the sizing of tip frames. */ if (hwnd == tip_window) return 0; diff -r 7a34490312a4 src/w32term.c --- a/src/w32term.c Thu Aug 21 08:23:02 2008 +0200 +++ b/src/w32term.c Mon Aug 25 10:30:21 2008 +0200 @@ -275,7 +275,8 @@ static void my_set_focus P_ ((struct fra static void my_set_focus P_ ((struct frame *, HWND)); static void my_set_foreground_window P_ ((HWND)); static void my_destroy_window P_ ((struct frame *, HWND)); - +static void w32_fullscreen_hook P_ ((struct frame *)); +static BOOL do_w32_fullscreen P_ ((struct frame *)); static Lisp_Object Qvendor_specific_keysyms; \f @@ -3456,6 +3457,62 @@ my_destroy_window (f, hwnd) { SendMessage (FRAME_W32_WINDOW (f), WM_EMACS_DESTROYWINDOW, (WPARAM) hwnd, 0); +} + +static void +w32_fullscreen_hook(f) + FRAME_PTR f; +{ + do_w32_fullscreen(f); +} + +static BOOL +do_w32_fullscreen(f) + FRAME_PTR f; +{ + DWORD style; + RECT workarea_rect, window_rect; + HWND hwnd; + BOOL ret = FALSE; + + hwnd = FRAME_W32_WINDOW (f); + switch (f->want_fullscreen) + { + case FULLSCREEN_BOTH: + /* Remove the window furniture. */ + my_show_window(f, hwnd, SW_MAXIMIZE); + style = GetWindowLongPtr(hwnd, GWL_STYLE); + style &= ~(WS_CAPTION | WS_BORDER | WS_THICKFRAME); + SetWindowLongPtr(hwnd, GWL_STYLE, style); + /* Resize ourselves to exactly cover the nearest monitor. */ + GetClientRect(GetDesktopWindow(), &workarea_rect); + SetWindowPos (hwnd, + HWND_TOP, + workarea_rect.left, + workarea_rect.top, + (workarea_rect.right - workarea_rect.left), + workarea_rect.bottom - workarea_rect.top, + SWP_FRAMECHANGED); + ret = TRUE; + break; + case FULLSCREEN_MAXIMIZE: + my_show_window(f, hwnd, SW_MAXIMIZE); + ret = TRUE; + break; + case FULLSCREEN_NONE: + /* Reinstate the window furniture. */ + hwnd = FRAME_W32_WINDOW (f); + style = GetWindowLongPtr(hwnd, GWL_STYLE); + style |= WS_CAPTION | WS_BORDER | WS_THICKFRAME; + SetWindowLongPtr(hwnd, GWL_STYLE, style); + my_show_window(f, hwnd, SW_RESTORE); + SetWindowPos(hwnd, NULL, 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | + SWP_FRAMECHANGED); + ret = TRUE; + break; + } + return ret; } /* Create a scroll bar and return the scroll bar vector for it. W is @@ -6091,7 +6148,7 @@ w32_create_terminal (struct w32_display_ terminal->mouse_position_hook = w32_mouse_position; terminal->frame_rehighlight_hook = w32_frame_rehighlight; terminal->frame_raise_lower_hook = w32_frame_raise_lower; - // terminal->fullscreen_hook = XTfullscreen_hook; + terminal->fullscreen_hook = w32_fullscreen_hook; terminal->set_vertical_scroll_bar_hook = w32_set_vertical_scroll_bar; terminal->condemn_scroll_bars_hook = w32_condemn_scroll_bars; terminal->redeem_scroll_bar_hook = w32_redeem_scroll_bar; diff -r 7a34490312a4 src/xterm.c --- a/src/xterm.c Thu Aug 21 08:23:02 2008 +0200 +++ b/src/xterm.c Mon Aug 25 10:30:21 2008 +0200 @@ -8580,9 +8580,10 @@ do_ewmh_fullscreen (f) break; } - if (what != NULL && !wm_supports (f, what)) return 0; - - + /* Only remove element when setting to none so that maxmize + works properley */ + if (f->want_fullscreen == FULLSCREEN_NONE) + { Fx_send_client_event (frame, make_number (0), frame, make_unibyte_string (atom, strlen (atom)), make_number (32), @@ -8607,6 +8608,10 @@ do_ewmh_fullscreen (f) (make_unibyte_string (fw, strlen (fw)), Qnil))); + } + + if (what != NULL && !wm_supports (f, what)) return 0; + f->want_fullscreen = FULLSCREEN_NONE; if (what != NULL) Fx_send_client_event (frame, make_number (0), frame, @@ -8626,7 +8631,15 @@ XTfullscreen_hook (f) XTfullscreen_hook (f) FRAME_PTR f; { - if (f->async_visible) + /* Maximise in X is full height plus full width */ + if (f->want_fullscreen == FULLSCREEN_MAXIMIZE) + { + f->want_fullscreen = FULLSCREEN_HEIGHT; + XTfullscreen_hook(f); + f->want_fullscreen = FULLSCREEN_WIDTH; + XTfullscreen_hook(f); + } + else if (f->async_visible) { BLOCK_INPUT; do_ewmh_fullscreen (f); [-- Attachment #3: Type: text/plain, Size: 136 bytes --] Take care, -- Ivan http://kanis.fr Never attribute to malice what can adequately be explained by stupidity. -- Robert J. Hanlon ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH] adding maximize to fullscreen frame parameters 2008-08-26 6:57 ` Ivan Kanis @ 2008-09-19 11:35 ` Lennart Borgman (gmail) 0 siblings, 0 replies; 41+ messages in thread From: Lennart Borgman (gmail) @ 2008-09-19 11:35 UTC (permalink / raw) Cc: emacs-devel Ivan Kanis wrote: > Eli Zaretskii <eliz@gnu.org> wrote: > >>> From: Ivan Kanis <expire-by-2008-08-29@kanis.fr> >>> Date: Sun, 24 Aug 2008 10:23:21 +0200 >>> >>>> Please leave two spaces after a period that ends a sentence. >>>> >>>> Also, I don't think "fullscreen" is a word (in "fullscreen mode"); I >>>> suggest to use "full-screen" in this context. >>>> >>> The included patch fixed the document glitch. >> Thanks, but there's still one case of a single space between >> sentences. > > Sorry if you get this twice. This patch fixes single space and > implement full-screen feature on Windows. Let know if you plan to > check it in I will write the ChangeLogs. What happened to this? ^ permalink raw reply [flat|nested] 41+ messages in thread
end of thread, other threads:[~2008-09-19 11:35 UTC | newest] Thread overview: 41+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-08-19 7:46 Proposal for a new API to fullscreen Ivan Kanis 2008-08-19 9:31 ` Tassilo Horn 2008-08-19 9:58 ` René Kyllingstad 2008-08-19 10:26 ` Tassilo Horn 2008-08-19 11:11 ` René Kyllingstad 2008-08-19 11:36 ` Tassilo Horn 2008-08-19 11:59 ` Ivan Kanis 2008-08-19 12:13 ` Lennart Borgman (gmail) 2008-08-19 13:31 ` Ivan Kanis 2008-08-19 13:40 ` Lennart Borgman (gmail) 2008-08-19 13:42 ` Lennart Borgman (gmail) 2008-08-19 12:47 ` Tassilo Horn 2008-08-19 13:49 ` Jan Djärv 2008-08-19 14:00 ` Tassilo Horn 2008-08-19 15:11 ` Tom Tromey 2008-08-19 18:52 ` Jan Djärv 2008-08-19 9:59 ` Andreas Schwab 2008-08-19 10:25 ` Tassilo Horn 2008-08-19 10:56 ` Andreas Schwab 2008-08-19 13:08 ` Jason Rumney 2008-08-19 13:42 ` Ivan Kanis 2008-08-19 16:53 ` Jason Rumney 2008-08-19 17:52 ` Tassilo Horn 2008-08-19 17:57 ` Lennart Borgman (gmail) 2008-08-19 18:14 ` Jason Rumney 2008-08-19 18:32 ` Lennart Borgman (gmail) 2008-08-19 18:33 ` Lennart Borgman (gmail) 2008-08-19 18:14 ` Tassilo Horn 2008-08-20 9:42 ` Ivan Kanis 2008-08-20 12:16 ` Jason Rumney 2008-08-20 13:06 ` Tassilo Horn 2008-08-20 13:46 ` Jason Rumney 2008-08-20 15:21 ` [PATCH] " Ivan Kanis 2008-08-19 15:08 ` Tom Tromey 2008-08-21 5:59 ` Ivan Kanis 2008-08-23 8:03 ` [PATCH] adding maximize to fullscreen frame parameters Ivan Kanis 2008-08-23 18:09 ` Eli Zaretskii 2008-08-24 8:23 ` Ivan Kanis 2008-08-24 18:12 ` Eli Zaretskii 2008-08-26 6:57 ` Ivan Kanis 2008-09-19 11:35 ` Lennart Borgman (gmail)
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.