On Tue, Jul 08, 2003 at 08:55:37AM +0200, Dominik Vogt wrote:
> On Tue, Jul 08, 2003 at 08:12:18AM +0200, Olivier Chapuis wrote:
> > On Mon, Jul 07, 2003 at 09:37:54AM +0200, Dominik Vogt wrote:
> > > On Mon, Jul 07, 2003 at 09:09:42AM +0200, Olivier Chapuis wrote:
> > > > On Sun, Jul 06, 2003 at 02:12:54PM +0200, [EMAIL PROTECTED] wrote:
> > > > > On Sun, Jul 06, 2003 at 07:24:33AM +0200, Olivier Chapuis wrote:
> > > > > > On Sat, Jul 05, 2003 at 10:15:25PM +0200, [EMAIL PROTECTED] wrote:
> > >
> > > > It seems to work as mozilla set it and the good algo is choosen.
> > > > (All KDE >= 2 and GNOME2 apps set this prop).
> > > >
> > > > > > By the way, should we implement _NET_WM_STATE_FULLSCREEN?
> > > > >
> > > > > Yes. I'd like to do it myself to gather some experience with the
> > > > > ewmh code.
> > > > >
> > > >
> > > > It seems that this start to work. But what about a FullScreen command
> > > > which removes the decoration, MoveResize the window to the size
> > > > of the screen and possibly put the window in a given layer:
> > > >
> > > > FullScreen [bool] [StayOnTop|layer x y] [size_hint_override]
> > > >
> > > > then we define defaults fvwm func:
> > > >
> > > > AddToFunc EWMHFullScreenOn I FullScreen On
> > > > AddToFunc EWMHFullScreenOff I FullScreen Off
> > > >
> > > > which are called when needed by the ewmh code.
> > >
> > > I'd prefer doing this via a function. We have way too many move/
> > > resize/maximize functions already. The new ewmh code calls the
> > > ResizeMoveMaximize command.
> > >
> >
> > Yes. But I do not see how to restore the "initial" window state
> > without a designed command (or an new Maximize flags) for fullscreen:
> >
> > AddToFunc EWMHFullScreenOn
> > + I WindowStyle !Borders, !Title
> > + I WindowStyle StaysOnTop
> > + I Maximize ewmhiwa 100 100
> >
> > AddToFunc EWMHFullScreenOff
> > + I WindowStyle Borders, Title
> > + I WindowStyle StaysPut
> > + I Maximize off
> >
> > works well only on decorated stays put window.
>
> A more detailed reply. I should have read more carefully.
>
> 1) I think fiddling with the window's decorations and layer is a
> bad idea. If the application wants the window on a specific
> layer it can use the layer protocol.
>
>From the ewmh spec:
_NET_WM_STATE_FULLSCREEN indicate that the window should fill the entire
screen and have no window decoration.
Also there are stacking order recommendation in the ewmh spec. At present
time fvwm respect this recommendation only if the EWMHUseStackingOrderHints
style is used (off by default). The recommendation is:
- window with _NET_WM_STATE_BELOW
- normal window
- panel/dock apps (_NET_WM_TYPE_DOCK) without _NET_WM_STATE_BELOW
- FULLSCREEN window with the _focus_
Regarding this there is two types of user. Those who want its
"panel" (or main Buttons or TaskBar) on top and those who want
its "panel" put (like me and you dominik I think). The first type
of users will want fullscreen window on top, the others will want
fullscreen window put.
I do not want to consider the _focus_ condition (but this can be
implemented with WindowStyle + FvwmEvent and a FullScreen condition).
So a reasonable alternative is to use the same layer than the "panel"
for fullscreen window.
So my suggestion is to add a new fvwm command
--
FullScreen [flags] [bool]
Without its optional arguments (or if the bool bit has the value
"toggle") FullScreen causes the window to alternately switch from
a full-screen size without decoration to its normal size with its
normal decoration. To force a window into full-screen (normal) state
you can use a "True" or "False" value for the bool argument.
The optional flags argument is a space separated list containing the
following key words: ewmh, layer x, ontop, decoration,
size_override. These options are useful only when the window switch to
full-screen and the possible effect caused by these options are
discarded when the window switch back to its normal size. layer x put
the fullscreen window into layer x, ontop put the fullscreen window
into the StaysOnTop layer, ewmh put the fullscreen window into the
StaysOnTop layer only if the window has the EWMHUseStackingOrderHints
style, decoration forces to do not remove the window decoration. A
full-screen window may not be resized to the full size of the screen,
because a window may require some specific sizes. The size_override
key word forces screen full size.
--
Of course as we are in feature freeze it is may be not reasonable
to add this command??
Then, we add default functions
EWMHFullScreenOn I FullScreen ewmh True
EWMHFullScreenOff I FullScreen False
that the user can redefine.
If we do not add such a command I think we should leave the code
at is now (decoration off screen!?) or we need to add new variables
as explained in 3) to be able to define EWMHFullScreen{On,Off}.
By the way, Dominik if I well understand your last mail in
the "StyleById patch voting thread" thread, the addition of the
WindowStyle command will not have grave consequence?
> 3) And finally, I noticed that certain information about the
> window is not accessible from functions. To allow placing the
> window with ResizeMoveMaximize we need: the size of the
> window decorations on the top and left sides and the geometry
> of its Xinerama screen. This can be done with a couple of new
> variables:
>
> Border width + title thickness:
>
> $[w.decorsize.left]
> $[w.decorsize.right]
> $[w.decorsize.width] # sum of last two
> $[w.decorsize.top]
> $[w.decorsize.bottom]
> $[w.decorsize.height] # sum ov last two
>
> Only title geometry:
>
> $[w.title.thickness]
> $[w.title.direction]
>
> Only border geometry:
>
> $[w.bordersize.left]
> $[w.bordersize.right]
> $[w.bordersize.top]
> $[w.bordersize.bottom]
>
> Screen related:
>
> $[w.screen] # Xinerama screen number
> $[scr.x.<screen #>]
> $[scr.y.<screen #>]
> $[scr.width.<screen #>]
> $[scr.height.<screen #>]
>
> Phew, that's a whole lot of new code.
>
Regards, Olivier
--
Visit the official FVWM web page at <URL:http://www.fvwm.org/>.
To unsubscribe from the list, send "unsubscribe fvwm-workers" in the
body of a message to [EMAIL PROTECTED]
To report problems, send mail to [EMAIL PROTECTED]