Subject: FVWM: Re: Root menu pops up where window border is...

From: Jui-Hsuan Joshua Feng <[email-masked]>
Date: Mon, 13 Apr 1998 20:02:53 -0500

>    * Subject: Root menu pops up where window border is...
>    * From: "Eddy J. Gurney" <[email-masked]>
>    * Date: Wed, 11 Mar 1998 16:37:18 -0500
> 
> ----------------------------------------------------------------------
> 
> I have noticed an annoying problem with fvwm2 (both 2.0.45 and 2.0.46).
> 
> I have my DeskTopSize set to "1 6" (1 wide by 6 high).
> 
> My EdgeResistance is set to 750 50.
> 
> To see this problem, position a window (an xterm works good) so that the
> bottom border of the window is right at the bottom edge of one of the
> virtual screens:
> 
> | |
> | |  xterm
> | |
> | |____________
> +============== <-- bottom of virtual screen, border of xterm is actually
>                     touching it; there should be no "root window" pixels
>                     visible
> 
> Now, take the mouse and quickly slide it to the bottom border of the
> xterm and click the left button. Since the mouse is in the window's
> border region, it SHOULD perform the Mouse 1 action associated with
> the window side (in my case, Raise-or-Resize). Unfortunately, what it
> does is perform the action associated with clicking in the root window
> (in my case, popping up a "Root Menu").
> 
> I've looked at the code in virtual.c, and it appears that fvwm creates
> four windows around the edge of the screen that it uses strictly for
> "input notification" to tell when the mouse has entered one of these
> four "invisible" windows around the edge of the screen (they are 2
> pixels wide). I think somehow these windows are interfering with the
> desired action, but that is just a guess.
> 
> This is important to me because I use this technique to quickly "Raise"
> a window by sliding the mouse down to its bottom border (a "hard stop",
> so it doesn't require precise mouse positioning) and clicking the left
> button... unfortunately, I get the stupid "Root Menu" instead of the
> desired "Raise-or-Resize" action!
> 
> Any suggestions on how to fix this? I tried a couple quick hacks in
> virtual.c and events.c, but to no avail.
> 
> Thanks for any suggestions,
> Eddy
> 
> P.S. For some reason, this problem does *NOT* exhibit itself when fvwm2
>      is first started -- it isn't until you actually MOVE to different
>      virtual screen that this behavior manifests itself. If you stay on
>      the first virtual screen, the actions described above work
>      "as expected".
> --

Try to comment out the following line in the file 'misc.c' under
the directory 'fvwm-2.0.46/fvwm'

void RaiseWindow(FvwmWindow *t)
{
....

  /* raisePanFrames(); */
}

and recompile fvwm2. I guess here is the only place raisePanFrames
is called. Hope this helps.

-- 
J Joshua Feng                            (O)608/262-3640 
Electrical & Computer Engr, Univ. of Wisconsin - Madison    
http://www.cae.wisc.edu/~fengj [email-masked]
--
Visit the official FVWM web page at <URL:http://www.hpc.uh.edu/fvwm/>.
To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
message to [email-masked].
To report problems, send mail to [email-masked].

---

From: "Eddy J. Gurney" <[email-masked]>
Date: Mon, 16 Mar 1998 13:37:42 -0500

,--
| > Now, take the mouse and quickly slide it to the bottom border of the
| > xterm and click the left button. Since the mouse is in the window's
| > border region, it SHOULD perform the Mouse 1 action associated with
| > the window side (in my case, Raise-or-Resize). Unfortunately, what it
| > does is perform the action associated with clicking in the root window
| > (in my case, popping up a "Root Menu").
| >
| > I've looked at the code in virtual.c, and it appears that fvwm creates
| > four windows around the edge of the screen that it uses strictly for
| > "input notification" to tell when the mouse has entered one of these
| > four "invisible" windows around the edge of the screen (they are 2
| > pixels wide). I think somehow these windows are interfering with the
| > desired action, but that is just a guess.
|
| Try to comment out the following line in the file 'misc.c' under
| the directory 'fvwm-2.0.46/fvwm'
|
| void RaiseWindow(FvwmWindow *t)
| {
| ....
|
|   /* raisePanFrames(); */
| }
|
| and recompile fvwm2. I guess here is the only place raisePanFrames
| is called. Hope this helps.
`--
Unfortunately, this did NOT have any affect, from what I could tell.
The one thing that did have an effect was changing the
PAN_FRAME_THICKNESS in fvwm.h from 2 to 0 and recompiling.

Of course, a thickness of zero on the pan frames means you cannot use
the mouse to change virtual screens; you must rely on FvwmPager or
key bindings.

I would like to see a solution that allows both; I can see no reason
where clicking on the border of a window should not perform the action
associated with clicking on the border. Why a window-border click is
being treated as a root-window click makes no sense to me and seems
very broken.

Eddy