[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