From 6655948ccd293b3bb0c6084512856c3523bb38ea Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Mon, 20 Sep 2010 19:25:30 +0000 Subject: [PATCH] IMPROVEMENT: when searcing for our hostApplet, always look for the extenders's applet before, it is slightly faster and -partly- fixes the inability of detecting the host applet when it is an applet-in-applet, like the systray svn path=/trunk/KDE/kdelibs/; revision=1177632 --- extenders/extender.cpp | 12 ++++++++---- extenders/extenderitem.cpp | 14 +++++++++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/extenders/extender.cpp b/extenders/extender.cpp index 0c368d422..a41234d33 100644 --- a/extenders/extender.cpp +++ b/extenders/extender.cpp @@ -699,10 +699,14 @@ void ExtenderPrivate::loadExtenderItems() if (containment) { Corona *corona = containment->corona(); - foreach (Containment *containment, corona->containments()) { - foreach (Applet *applet, containment->applets()) { - if (applet->id() == sourceAppletId) { - sourceApplet = applet; + if (sourceAppletId == q->applet()->id()) { + sourceApplet = q->applet(); + } else { + foreach (Containment *containment, corona->containments()) { + foreach (Applet *applet, containment->applets()) { + if (applet->id() == sourceAppletId) { + sourceApplet = applet; + } } } } diff --git a/extenders/extenderitem.cpp b/extenders/extenderitem.cpp index 9c21303df..2b8f10e2e 100644 --- a/extenders/extenderitem.cpp +++ b/extenders/extenderitem.cpp @@ -175,11 +175,15 @@ ExtenderItem::ExtenderItem(Extender *hostExtender, uint extenderItemId) //Find the sourceapplet. Corona *corona = hostExtender->d->applet.data()->containment()->corona(); - foreach (Containment *containment, corona->containments()) { - foreach (Applet *applet, containment->applets()) { - if (applet->id() == sourceAppletId && - applet->pluginName() == dg.readEntry("sourceAppletPluginName", "")) { - d->sourceApplet = applet; + if (sourceAppletId == hostExtender->applet()->id()) { + d->sourceApplet = hostExtender->applet(); + } else { + foreach (Containment *containment, corona->containments()) { + foreach (Applet *applet, containment->applets()) { + if (applet->id() == sourceAppletId && + applet->pluginName() == dg.readEntry("sourceAppletPluginName", "")) { + d->sourceApplet = applet; + } } } }