On Tue, Aug 20, 2002 at 04:15:59PM +0100, John Latham wrote:
From: Dominik Vogt [EMAIL PROTECTED]
Date: Tue, 13 Aug 2002 00:35:04 +0200
On Mon, Aug 12, 2002 at 06:32:53PM +0100, John Latham wrote:
After start up, the mouse pointer is always resting over an xterm in my
set
up. Often, but not always, this xterm does not have the focus and I have
to
move the pointer out of it and back in again. This also happens every time
after a restart when the mouse pointer is resting over a window. In 2.2
and
previous, the window under the mouse would always get the focus in both
these
situations. I have tried this with sloppy and follow-mouse focus, on
2.4.6,
2.4.8 and 2.5.2.
For me it works as usual, but it always was always a bit random.
Maybe the last window created (e.g. Pager or buttons) gets the focus
instead
of the one under the mouse after the restart has finished?
A possible conection: if I PipeRead from FvwmTalk something which
destroys and
creates windows (e.g. Pager, Buttons) then after the PipeRead in 2.2
FvwmTalk
still has the focus with sloppy and follows policy, whereas is loses it
with
click focus (as you would expect). However, in 2.4 and 2.5 FvwmTalk has
lost
the focus regardless of policy. (Of course, FvwmTalk has changed so this
could
be a red herring).
I recommend to use FvwmConsole instead of FvwmTalk.
Or, if I select a menu item, which does a PipeRead that causes a new
window to
be started (e.g. xbiff), the new window ends up with the focus even
though the
mouse is left where it was when it selected the (sub-sub) menu, say now
over
an xterm. In 2.2 the xterm would now get the focus (this is with follow
mouse/sloppy focus of course).
I have some PipeReads which are executed via InitFunction and
RestartFunction.
So, if PipeRead has changed its behaviour in this way, then that could be
the
real cause of the start up / restart non-focus problem.
Bottom line: has something like a ``recheck focus policy and current mouse
position'' operation gone AWOL from the end of a PipeRead? :-) Perhaps
deliberately changed then -- is that really the best functionality?
It was not reliable in 2.2.x and screwed up some more advanced
functions. Therefore I rewrote the code keeping track of the
focus during function execution to be more reliable, at the cost
of some small changes in focus handling.
I would
suggest a good principle: with follows mouse/sloppy focus, if the mouse is
over a window that can take focus then that window has the focus -- at
least
by the time Fvwm becomes `quiescent' again.
See above. It's almost always easy to restore the focus with the
Focus command explicitly in your scripts.
Thanks for your clues -- mainly you stopped me looking in the wrong places. I
now realise that the lack of focus at start up and after restart was caused by
GrabFocus for certain windows being started which were click to focus (e.g.
xbiff, pager), even though most were sloppy focus. I just needed to add
GrabFocusOff to xbiff, pager etc..
Having thought a little about this, I have a suggestion to make.
The default GrabFocus for ClickToFocus and GrabFocusOff for MouseFocus are
sensible, only if all windows have the same focus policy. In a mixed policy
regime, perhaps the policy of the window which currently has focus should be
taken into account before giving focus to a newly created window. I am tempted
to suggest another pair of styles called, say, ReleaseFocus and
ReleaseFocusOff.
They already exist in 2.5.3-devel:
FPGrabFocus
FPGrabFocusTransient
FPOverrideGrabFocus
FPReleaseFocus
FPReleaseFocusTransient
FPOverrideReleaseFocus
ReleaseFocus would be default for ClickToFocus, and ReleaseFocusOff would be
default for MouseFocus (and SloppyFocus). A new window would get the focus if
and only if it has GrabFocus style, AND the current window has ReleaseFocus
style.
Bye
Dominik ^_^ ^_^
--
Dominik Vogt, mail: [EMAIL PROTECTED], phone: 0721/91374-382
Schlund + Partner AG, Erbprinzenstr. 4-12, D-76133 Karlsruhe
--
Visit the official FVWM web page at URL: http://www.fvwm.org/.
To unsubscribe from the list, send unsubscribe fvwm in the body of a
message to [EMAIL PROTECTED]
To report problems, send mail to [EMAIL PROTECTED]