unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* 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: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  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: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 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 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  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 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: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: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 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  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 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 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 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 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 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 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 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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).