'Next wallpaper' functionality for image plugin?
Chani
chanika at gmail.com
Sun Oct 11 02:46:27 CEST 2009
On October 10, 2009 11:13:05 Yuen Hoe Lim wrote:
> Thought I'd post a quick question here since I'm not making much
> headway with pinning down exactly where I should be injecting code to
> add a contextual menu item. I've been putting kDebug() statements into
> places like contextMenuEvent() in Plasma::Containment and somehow it's
> looking like the default Containment method implementations never get
> called when I right click the desktop (the debug messages don't show
> up - and they do when I right click the, for example, panel instead).
> The desktop is just a containment, correct? So it looks to me like
> whatever exact containment (subclass?) the desktop is using is
> overriding the default containment context menu methods.
>
> Is this the case? If so, I can't seem to find what or where this
> subclass is. If not, well, might someone know what I'm doing/figuring
> wrong? :)
>
it's a quirk of qgraphicsscene: mousepress and release events (for the clicked
item and all its parent items!) get called before contextmenu event, and if
one of them accepts the event, there is no contextmenuevent.
my mouse plugin stuff handles rightclick in the mousereleaseevent function, so
it's accepting the clicks.
however, you don't want to be mucking with *event* functions, partially
because of that plugin stuff. what you want to do is go look at
Containment::contextualActions() ... oh, which doesn't actually exist because
it's inherited from Applet... so go look at Applet's documentation of that
function.
then, there are two ways you could do this:
1) create QList<QAction*> Containment::contextualActions() and have it return
wallpaper()->contextualActions() by default and edit every desktop-containment
plasmoid (desktop and folderview at least) to add wallpaper()-
>contextualActions() to its own contextualActions (assuming the function
already exists there).
2) edit the contextmenu mouse plugin to add containment()->wallpaper()-
>contextualActions() to its actions the same way it adds containment()-
>contextualActions().
which way you choose depends on whether you think containment plasmoids should
have control over whether the wallpaper's actions are included in the
contextmenu.
and of course, either way the contextualActions function has to be added to
Wallpaper too... er, except it can't be virtual because that's BIC, damnit. so
you'll have to find a more creative way of letting wallpaper plugins specify
what their actions are. but hopefully in a way that gets hidden inside the
Wallpaper class so that all the other classes have to do is call
contextualActions() and get the list they need.
--
This message brought to you by eevil bananas and the number 3.
www.chani3.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
Url : http://mail.kde.org/pipermail/plasma-devel/attachments/20091010/e564e301/attachment.sig
More information about the Plasma-devel
mailing list