widget snap

Marco Martin notmart at gmail.com
Sat Jan 2 22:08:32 CET 2010


On Saturday 02 January 2010, Aaron J. Seigo wrote:
> On January 1, 2010, Roman Shtylman wrote:
> > I was sitting around trying to organize some of my plasmoids... and
> > realized that you can't easily make a stack of plasmoids all exactly
> > aligned ... at least not that I could figure out. I thought it would
> 
> snapping is a nice idea. putting it in the handle is pretty much the "only"
> way to do it right now, but it's not a great solution: it means that click-
> dragging on applets that support that, which is many/most of them, will
>  work differently than when dragging on the handle. i have already observed
>  people not figuring out how to drag widgets from the desktop to the panel
>  because of this "handles are magical" behaviour.
> 
> it's also going to break / do unhappy things for any containment that
>  doesn't (for whatever reason) want such behavior.
> 
> this really does belong to the Containment, but it needs support in the
> handle. adding to this mess is that the handle is in libplasma at all: it
> isn't used by all Containments (think of panels, for instance, or amarok).
> 
> so, what are the handles for then? well, they do two things:
> 
> * provide quick and discoverable access to features like resize, remove and
> configuration
> 
> * guarantee that we have a click-and-drag surface for applets that may not
> provide one
> 
> the handle can't simply be moved into, e.g., DesktopContainment as really
>  all plasma-desktop "desktop" containments should have them. to me, it
>  sounds like we need to think about how handles are done and do them
>  better. they need to be:
> 
> * sharable between Containments (for consistency and code sharing)
> 
> * allowed to be specific to the application or the Containment

sick idea: how about making handles plugins? the base is really minimal, so 
most of the implementation could be shipped alongside the workspace..

> * be able to coordinate with the Containment on layout issues

i don't know if something could be shared in really different situations (free 
layout vs panel, could it be any code sharing at all?)

> * have logic for things like "moving to another Containment" moved outside
>  the handle to API that is available to the handle but which is actually
>  "native" to the Applet class so that we get rid of the "when you use the
>  handle, it behaves this way; when you click on the applet it behaves that
>  way" behaviour
> 
that also reminds me how bad at the moment Applet::registerAsDragHandle() 
works..
now if there is for instance the analog clock in the newspaper is possible to 
drag the whole page around out of the supposed boudaries by dragging the clock 
around, ir really ugly but didn't find a way at all to prevent it

Cheers, 
Marco Martin


More information about the Plasma-devel mailing list