Hi,
since Opera 10.6x one needs to run a composite manager because the dropdown
window for visited URLs in the "Goto Page" window (opened with F2) needs
compositing effects since 10.6x :-( I guess more and more programs will
required this.
xcompmgr has many problems with ctwm (like loosing focus, disabling the
raise function, leaving parts of windows from other workspaces on the
screen), so I tried with compiz. This works almost fine, but has two
problems when changing workspaces.
1) distortions may occur when warping to a window with f.warpto and
- the window is iconified and WarpUnmapped is defined in .ctwmrc
- the window is not on the current workspace manager
- NoRaiseOnWarp is not defined in .ctwmrc
- the window overlaps some other window then deiconfied.
If all these conditions are met either the window that was warped to
might not be fully shown but parts of a window that should be below
are still visible.
Or, when iconifying the window again, parts of this window may still
be shown on the windows that were below it.
2) When changing a workspace with a key binding and a window that
is shown on all workspaces has been raised since the workspace
has been visited the last time, similar distortions occur.
One example:
- there are two (or more) workspaces WS1 and WS1
- one window A which is shown in all workspaces
- in WS1 there are windows W1 and W2, in WS2 one window W3
- the windows are placed such that W* overlaps part of A
Now go to WS1 and arrange the windows such that W1 overlaps A
and A overlaps W2. Then switch to WS2. Raise A to the top. If
A is ontop already, raise W3 first then raise A so that it is ontop
of all windows. Now place the mouse pointer into A and switch
back to WS1 with a key binding so that the mouse focus stays
in A.
In WS1 now A will have the focus, but it won't be fully shown,
parts of W1 which was overlapping A before will be painted
on A.
When leaving A with the mouse pointer it is re-painted and shown
correctly, but when moving the mouse into W1 it is also fully
painted and overlays the plan window, even if AutoRaise is
not specified. I.e., ctwm now acts as if 'AutoRaise { "A" "W1" }'
was defined.
Solution: Both problems can be fixed by defining
ChangeWorkspaceFunction f.refresh
in .ctwmrc.
Note that 1) can be fixed by changing the code for f.warpto. If the
window that we warp to is no in the current workspace, ctwm first
deiconifies and raises the window, then changes the workspace and
warps the pointer into the windows
I wrote a patch (before I detected the ChangeWorkspaceFunction ;-))
which changes this behaviour for all calls to WarpToWindow and switches
the workspace before deiconifying and raising the window.
To me this sounds more intuitive, so I wonder if there is any special
reason for deiconifying and raising before changing the workspace?
cu,
Frank
--
Dipl.-Inform. Frank Steiner Web: http://www.bio.ifi.lmu.de/~steiner/
Lehrstuhl f. Bioinformatik Mail: http://www.bio.ifi.lmu.de/~steiner/m/
LMU, Amalienstr. 17 Phone: +49 89 2180-4049
80333 Muenchen, Germany Fax: +49 89 2180-99-4049
* Rekursion kann man erst verstehen, wenn man Rekursion verstanden hat. *