Making translucent inner shadows for lists etc.



Hi all,

I'm developing oxygen-gtk, and would like to make our inner shadows
feature more reliable. To understand what it is about, see this
screenshot without the feature [1] and with one [2].
What currently is a problem is that we use composited gdk windows to
implement this feature, because we have to render a bit above the
contents of the widget. This makes the theme sometimes not get expose
events, e.g. when a gdk_draw_drawable() is called or something strange
happens, and as a result, the widget doesn't update at all. I guess
this is not quite a nice way for a theme to work - change app's
widgets' windows to composited and doing all the hacks to try to
render this.
I've tried using special overlay windows above the border of the
widgets, but it appeared that they aren't translucent, i.e. I can't
render some translucent image over them to see the window under them.
(This is how these shadows are implemented in oxygen-qt, where this
trick does work.)
I've also tried rendering the inner part of shadow in the process of
rendering the widget itself, but this appeared to conflict with
scrolling (parts of shadow got scrolled with the widget itself), and
didn't work for almost all widgets except lists, trees and several
else.

So, my question is: how could a GTK theme render such a shadow without
having to use composited gdk windows? Is there some better way?

Regards,
Ruslan

[1]: http://simplest-image-hosting.net/png-0-1351
[2]: http://simplest-image-hosting.net/png-0-2208


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