Review Request: Support for transparent panel without composition

David Nolden zwabel+reviewboard at gmail.com
Tue Mar 31 02:43:10 CEST 2009



> On 2009-03-30 17:32:34, Aaron Seigo wrote:
> > so .. on a purely technical level .. the invokeMethod is really ugly (though probably mildly less ugly than stuffing the API in libplasma), and will of course not work with other Containment::PanelContainment type Containments unless they duplicate the code. and there's really no way of not duplicating the code in each PanelContainment to guarantee perfect results.
> > 
> > for wallpapers that animate (e.g. the slideshow) this would cause full panel repaints during animation, over and over, with the rather more expensive SourceUnder compositing. this would likely destroy performance both for the animation and the rest of plasma on machines that already are struggling to provide service w/out compositing and/or OpenGL available to them.
> > 
> > grabWidget causes a full repaint, which would be even more expensive (so we're talking about a paint on the desktop causing a repaint in the panel and another repaint in the desktop); grabWindow would just grab the relevant bits but likely has its own problems?
> > 
> > there's also future proofing concerns there with multiple overlapping panels and per-desktop panels.
> > 
> > i hope this all helps to explain why it's simply not an option.

- I know invokeMethod is ugly, that's why there was the public interface before..
- About the updating: Yes of course, but isn't it the same with plasmoids?
- The gab(..) calls are restricted to the area under the panel, which usually only contains a part of the wallpaper, so we're mainly talking about blitting here

Actually, I don't need this feature in this incarnation, and would consider allowing to setting a configurable rendering background for transparent panels, extenders, etc. much more useful, since it would solve the problem not only for the panels.
If the user would set the background to the same as the wallpaper, he would have a transparency-like effect without a hack.


- David


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.kde.org/r/472/#review746
-----------------------------------------------------------


On 2009-03-30 06:37:48, David Nolden wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.kde.org/r/472/
> -----------------------------------------------------------
> 
> (Updated 2009-03-30 06:37:48)
> 
> 
> Review request for Plasma.
> 
> 
> Summary
> -------
> 
> Many people can not, or do not want to use composition. A semi-transparent panel highly increases the appeal of a Desktop, and there currently is only very few plasma themes available that have a nice-looking panel without transparency enabled.
> 
> All other major linux Desktop-Environments support transparent panels without composition(KDE 3.x, GNOME, and others), and since usually the only thing that needs to be visible through the panel is the Desktop itself, using a composition-less approach does not have much disadvantage here.
> 
> Here's I'm proposing a patch to achieve  this in a relatively clean way: The panel is painted and updated as if it was a plasmoid on the Desktop itself, grabbing the painted area plasma-internally directly from the  underlying desktop-view. The corresponding area of the panel is updated whenever the desktop is repainted, which means that animated plasmoids partially hidden under the panel, animations like the desktop-fading, moving plasmoids partially under the panel, etc. "just work".
> 
> Result: A nice looking panel for everyone, less work for theme designers. Please don't leave those behind who don't want or can not use desktop composition!
> 
> (Note: If you try this out, it doesn't work with all themes, since some themes seem to have no alpha-information in the non-composition case).
> 
> 
> Diffs
> -----
> 
>   trunk/KDE/kdebase/workspace/plasma/containments/panel/panel.h 940781 
>   trunk/KDE/kdebase/workspace/plasma/containments/panel/panel.cpp 940781 
>   trunk/KDE/kdebase/workspace/plasma/shells/desktop/desktopview.h 940781 
>   trunk/KDE/kdebase/workspace/plasma/shells/desktop/desktopview.cpp 940781 
>   trunk/KDE/kdebase/workspace/plasma/shells/desktop/panelview.h 940781 
>   trunk/KDE/kdebase/workspace/plasma/shells/desktop/panelview.cpp 940781 
>   trunk/KDE/kdebase/workspace/plasma/shells/desktop/plasmaapp.h 940781 
>   trunk/KDE/kdebase/workspace/plasma/shells/desktop/plasmaapp.cpp 940781 
> 
> Diff: http://reviewboard.kde.org/r/472/diff
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> David
> 
>



More information about the Plasma-devel mailing list