On Tue, Oct 02, 2001 at 01:11:25PM +0200, Olivier Chapuis wrote:
> Ok, but there are an other problem: it is possible to call
> the WindowList or a menu via a mouse binding function as:
> 
> DestroyFunc MouseXX
> AddToFunc   MouseXX
> + I Mouse $0 $2 $3 $4 "$5" "$6" "$7" "$8" "$9"
> OR
> + I Mouse $1 $2 $3 $4 "$5" "$6" "$7" "$8" "$9"
> 
> This type of function allows to switch between mouse 2 and
> 3 in a config file where mouse bindings are defined by
> MouseXX 2 3 R A WindowList
> MouseXX 2 3 R S WindowList (CurrentDesk)
> ..etc.
> We use this in fvwm-themes. So then the action which arrive
> to get_menu_options (menu.c) is '"" "" "" "" ""' and then the
> menu position is not good. Ok this is strange but this work
> with Xinerama Off, the get_option_options has a test for this
> case (if (!tok))  and strictly speaking an "" menu position
> should be equivalent to a null one.

Ah, I see.

> > > 3. It seems natural for me that iconification happen on the
> > > current screen, so I test IconBox with 
> > > 
> > > Style "*" IconBox [EMAIL PROTECTED], IconGrid 64 10, IconFill left bottom
> > > 
> > > In "normal" use this work fine. However, if the above command
> > > is entered in a way or an other when the mouse cursor is on
> > > screen 1 the icons on screen 0 go in a random location (in the
> > > top of screen 0).
> > 
> > You are misinterpreting what your style line does: it creates an
> > icon box with the given dimensions on whatever screen the pointer
> > is on at the time the style command is issued.  It *does not*
> > create one icon box on each screen: this must be done manually.
> > 
> > What fvwm does is this:
> > 
> >  - Create a default icon box that covers the primary screen.
> >    (screen 0).
> >  - Create the given icon box on the screen with the pointer.
> >    (screen 1).
> > 
> > Whenever a window is iconified, fvwm looks for a suitable icon box
> > in this order:
> > 
> >  - Icon boxes that intersect with the screen of the window.
> >  - Any icon box other than the default icon box on any screen.
> >  - The default icon box.
> > 
> > So, what you are seeing is icons being placed in the default icon
> > box on the primary screen since this is the only box that
> > intersects the primary screen.  You have to specify a separate
> > icon box for each screen.
> > 
> > Of course it would be nice to have a way to specify the same icon
> > box for each screen in a single style command, but I don't see how
> > this can be done easily (most of the icon box calculations are
> > still in style.c).
> >
> 
> Ok I think I understand. But:
> 
> a. The order you mention is not totally exact. For example if I've:
>       Style * Iconbox [EMAIL PROTECTED], IconFill left top
> (Primary is screen 0) then if I iconify a window which is
> in screen 1 the icon go on the bottom right of screen 0
> (no iconbox if found I think).

It did find the icon box, but the loops did not break in case
loc_ok_wrong_screen got set and thus always chose the last
position to fit the icon, not the first one.

Fixed.

[snip]

> b. IMHO, the @c logic is wrong: a command like 
>      Style * Iconbox [EMAIL PROTECTED],IconFill left top
> will move the icons in an "inacceptable" way (especially
> if we fix the bug of a) and so is usable only at startup
> or if no windows are iconified.

The logic is consistent with all other uses of the 'c' screen.

> Ok, Ok, ... I should use multiple iconboxes and do not use
> @c. But what I am trying to do is to found a good iconbox
> for any Xinerama settings (optionally Off). As @c is unusable
> I suggest to change the @c logic: here current may means the
> center of the window and not the location of the pointer.
> I do not think that it is a difficult change. The idea is
> simple: replace 
> 
> /* get the screen dimensions for the icon box */
> FScreenGetScrRect(NULL, icon_boxes_ptr->IconScreen,
>               &ref.x, &ref.y, &ref.width, &ref.height);
> 
> by
> 
> /* get the screen dimensions for the icon box */
> if (icon_boxes_ptr->IconScreen == FSCREEN_CURRENT)
> {
>   FScreenGetScrRect(&fscr,FSCREEN_XYPOS ,
>                     &ref.x, &ref.y, &ref.width, &ref.height);
> }
> else
>   FScreenGetScrRect(NULL, icon_boxes_ptr->IconScreen,
>                     &ref.x, &ref.y, &ref.width, &ref.height);
> 
> in AutoPlaceIcon and fix the test of a). In fact a more elaborated
> FScreenGetScrRect(FSCREEN_XYPOS) is needed, one that can get
> the screen dimension from a xypos on the desktop (which seems
> needed, for example, to fix iconification from an other page
> problem of a).
> 
> The other alternative is to add an @w screen as suggested
> by Dmitry for iconbox geometry.

You're right, that was very easy to implement.  I didn't change
the 'c' behaviour because it would have been confusing.

Bye

Dominik ^_^  ^_^

-- 
Dominik Vogt, email: [EMAIL PROTECTED]
LifeBits Aktiengesellschaft, Albrechtstr. 9, D-72072 Tuebingen
fon: ++49 (0) 7071/7965-0, fax: ++49 (0) 7071/7965-20
--
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