[Panel-devel] [PATCH] Plasma::More work on extender (and others)

Zack Rusin zack at kde.org
Fri Jul 13 00:09:25 CEST 2007


On Thursday 12 July 2007 11:15:14 am Aaron J. Seigo wrote:
> On Thursday 12 July 2007, Zack Rusin wrote:
> > On Thursday 12 July 2007 10:21:42 am Aaron J. Seigo wrote:
> >
> > from a technical perspective: shaped windows have tons of problems in the
> > current implementation. you'll end up bogging the server down.
>
> we can assume rectangular windows for the time being; that's really not a
> show stopper.

Cool.

> > problems, the main one that you'll hit is that resizing on a composited
> > desktop is not the best operation to perform.
>
> erg; this complicates things, however. when new items are added to an
> extender (programmatically even, not due to drag and drop) the window will
> need to grow; it would be nice if it actually "grew" versus just popped to
> a new size. but if that's a serious performance issue, then we can forgoe
> that as well.

The issue is that resizing window forces recreation of the backing pixmap. So 
a resize is equivalent to backing pixmap creation and full repaint over the 
entire widget. Which is going to be quite a killer for any kind of animation. 
Resizing the widget once to its final size and then just painting some 
regions with QPainter::CompositionMode_Source, Qt::transparent fill and doing 
animation on that will work ok though.

> > so you're looking at ability of splitting windows while seemingly moving
> > contents between them
>
> right

that's gonna be a snafu :) Unless of course we'll decide to keep window 
decorations on them. Window managers are not big fans of self-managing 
windows, which would be the case here, because you'd want to be able grab the 
frame drawn by the item and drag it around. Unless like I said, the frame is 
done by the window manager.

> - the ability show multiple items in a visual stack (vertical or
> horizontal) 
> - the ability to show/hide invidiaul items in that stack 
> - the ability to add and remove items to said stack
> - must work both on a graphicscene on the desktop as well as in a top level
> window w/out window decorations
> - animate "in" and "out" of view on first show and hide/destroy

That sounds trivial. Besides what's already in Plasma a little physics code to 
implement snapping/unsnapping items together is all that seems to be missing. 
I could make it part of the physics engine.

> - when in a top-level window, that window should be able to be detached
> from what it extended "out of" to float on its own as a "regular" window

That's gonna be interesting :) 

> nice-to-haves:
>
> - the ability to drag an item out of a stack and either have it sit on its
> own or join another stack

Challenging. Unless the "drag out" will drag out a pixmap and will be an 
actual drag&drop action with some neat mime semantics that make drop discover 
the state of the extender that was being dragged.

> - animation on grow/shrink of the stack

As described above - ok if we the window is pregrown to it's final size.

> most often, these extenders are likely to have only one in them. a good
> example is the calendar that appears when you click on the clock in kicker.
> a primary purpose of these extenders is to simply provide an easy way to
> show/hide a given bit of information. the kuiserver showing jobs is
> probably the most complex thing at this point that we need to accomodate;
> the calendar-from-clock is the more common one.

Ah, I see so we'll also need some neat animation/visual indication of where 
they came from. I see what you meant when you said you could have use my 
physics engine. 

z


More information about the Panel-devel mailing list