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:
> > > I have mostly completed and applied the patch.  Still missing:
> > > 
> > >  * The window styles (although the members of the window_style
> > >    structure are already defined).
> > >  * Handling changes in update.c.
> > >  * Write man page.
> > 
> > I can do that if you want ... as I have also write down a patch
> > (partial) too!
> 
> I'm already on the job - I'm getting nervous with a half finished
> patch in cvs :-)
> 
> > >  * Check for _NET_WM_PID.
> > 
> > Seems you do that.
> 
> Actually, I have difficulties to understand the design of the
> ewmh_...c files.  I understand there are properties that are
> 
>  * set once on the root window at fvwm startup
>  * set on the root window but updated regularly
>  * set by fvwm on application windows (?)
>  * set by once applications on their windows when mapped
>  * set by apps on their window and updated later (?)
>  * client messages from apps to fvwm
>  * client messages from fvwm to client windows.
> 
> Where is this all located in the code and how does it correspond
> to the nine atom lists in ewmh.c?

The logic in the lists splitting is a bit different. There are
comments which explain this logic where there are defined. Basically,
atoms in a given list are handled in the same way by the code. The
code is maybe a bit difficult to understand at first reading but it is
easy to add new EWMH stuff as a lot of things are done automatically:
_basically_ add an atom in a list with a function handler and you have
done.

Note that the signification of an atom can depends on how it is used.
For, example the atoms in the EWMH_ATOM_LIST_WM_STATE can be received
by fvwm as a client message (send by any application) to ask a state
change.  Secondly, the wm must set the _NET_WM_STATE on an application
window with the atoms of the EWMH_ATOM_LIST_WM_STATE accordingly with
the state of the window. Finally, a window can map with a
_NET_WM_STATE set on it to indicate a desired mapping state. It is
useful to have such a list for automatic handling of these 3
situations via the functions handler of the list. These functions
should handle 3 different situations:

- Client msg (ev != NULL && style == NULL)
- Initial Mapping with the state set (ev == NULL && style != NULL).
  Note the additional arg "any" (== has_hint) for recapture and
  restarting.
- Query of the state (ev == NULL && style == NULL) 

> What is the idea behind these
> lists and how are they handled.  E.g., are the atoms in the lists
> detected automatically?
> 

Yes. For example to add a _NET_WM_STATE add it to the
EWMH_ATOM_LIST_WM_STATE list (in alphabetic order) and write down the
function handler (all the other stuff is done automatically: client
msg detection, initial mapping checking, state query for
_NET_WM_STATE, addition in the list of supported _NET stuff).

I will add more comment in ewmh code, but the list name and the
functions handler name can be used to know where a given EWMH property
is handled. 

> > >  * Test the patch.  I have only tried Mozilla yet.
> > 
> > Make some test with Tk it is ok.
> 
> I have written a small testing app and found a lot of bugs that
> are all fixed now.  Can you check with Tk, please?  If anything
> strange happens give instructions to reproduce and post the
> console output.
> 

Ok.

> The seven detection methods are:
> 
> 
>   - _NET_WM_PID (dould not find an application that sets it)
>   - full screen detection (icccm)
>   - full screen detection (traditional)
>   - moving window adjacent to a border (icccm)
>   - moving window adjacent to a border (traditional)
>   - moving window by the border width/height (icccm) while it
>     would stay in the same placew with the traditional method.
>   - same for traditional
> 
> I did not test the _NET_WM_PID detection yet.
>

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. 

> > Also you just wrote all the code for _NET_MOVERESIZE_WINDOW but
> > the trivial stuff in fvwm/ewmh*
> 
> Yes, I think so.  The logic in the __cr_get_grav_position()
> function should return the requested frame position.  It needs
> some work on the interface, though.
> 

What about building a ConfigureRequest event and send it to the
"events code" with an override_gravity arg (which forces icccm
motion algo and use the override_gravity gravity in the place
of the app gravity)?

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]

Reply via email to