systray [4/4]: implement systray transparency

Kirill K. Smirnov lich at math.spbu.ru
Fri Feb 15 08:10:31 CST 2008


> "Kirill K. Smirnov" <lich at math.spbu.ru> writes:
> > diff --git a/dlls/winex11.drv/winex11.drv.spec
> > b/dlls/winex11.drv/winex11.drv.spec index 36b83d7..126cbc5 100644
> > --- a/dlls/winex11.drv/winex11.drv.spec
> > +++ b/dlls/winex11.drv/winex11.drv.spec
> > @@ -130,6 +130,7 @@ # Desktop
> >
> >  # System tray
> >  @ cdecl wine_make_systray_window(long) X11DRV_make_systray_window
> > +@ cdecl wine_systray_window_clear(long) X11DRV_systray_window_clear
>
> We don't want to export such a specific function. Besides, it should
> really be setting the window shape.

  Do I understand you correct that we should cut off transparent parts of 
icon, thus making window shape to match solid part of icon? Taking into 
account that almost every xembed-systray-aware application uses 
ParentRelative attribute (and KDE developers assumes this as I noticed at bug 
#3534), the idea of changing window shape sounds really strange.

  1) Is there any strong reason why we really must change windows shape to 
achieve visual transparency?

  2) Will it be better to stop embedding wine windows in favor of embedding 
pure X windows (like other apps do)? This way assumes implementing all 
xembed-specific stuff at winex11.drv side and exporting ONLY ONE function 
like wine_xembed_systray_handler(int cmd, void *data), which converts windows 
icon to X11 icon, creates X11 window with ParentRelative bkgrnd and embeds 
it. Explorer will use this function when it adds/removes icon to/from system 
tray. Also, this function will detect the case of wine virtual desktop and 
notify explorer to stop using xembed.
  I'm just not sure that this way will not break relaying mouse events.

--
Kirill



More information about the wine-devel mailing list