(no subject)

Hi all,

I've been playing around with some of the neat eye candy stuff that's emerging
now, and one thing I've noticed is that sawfish will need to handle windows
with shaped input (like cairo clock, or xwinwrap'ed windows) to be able to
support some of these things.

For those who don't know, version 1.1 of the XShape extension added support for
shaping the input mask of a window by itself. This is important because apps
using argb visuals will use alpha transparency instead of output shaping to
produce a non-rectangular appearance. Then the input mask is set to match the
opaque parts of the window so input matches output.

Now, sawfish reparents client windows into a frame window and while the frame
window is made to conform to the output shape, it obviously doesn't know about
or handle input shaping. So, even if the client has shaped input, it's still
inside a frame that's catching events for the window manager.

Compiz avoids this by never reparenting client windows (it draws decorations as
peers). Metacity takes a different approach where a window that doesn't request
decorations also doesn't get reparented. (99.9% of the time, if you're
non-rectangular, you don't want decorations).

But sawfish still reparents undecorated windows. So, it seems the obvious thing
to do is change it to match the metacity behaviour.

I've started initial investigations into this, but I was wondering if John had
any useful tips. As a first step, I took a brute force approach and fiddled the
code to not reparent any windows at all - I wanted to see if events on the
client window that sawfish should interpret (like alt-left-click drag) would
still get handled - and they don't. Once that problem is dealt with, it should
be a simple matter to redefine undecorated windows to be un-reparented. (and if
that's controversial, we can retain the notion of a reparented undecorated
windows as a separate frame type).



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]