Hi,
I'm trying to fix this bug: http://www.kde-
look.org/content/show.php/Scripted+Image?content=91749 (Error having 2 of
them). Seems that if there is two (or more) same webkit plasmoids on desktop
only one of them loads properly on plasma start. When same plasmoid B load is
started before A load is finished javascript functions don't get called. This
happens only when plasmoids are same e.g. two scripted-image plasmoids. I made
attached patch to load plasmoids with the same plugin name in queue and it
seems to solve this but I'm not sure if this right way to do it?
Petri
Index: webapplet.cpp
===
--- webapplet.cpp (revision 1063166)
+++ webapplet.cpp (working copy)
@@ -28,6 +28,7 @@
#include QWebFrame
#include QWebPage
#include QFile
+#include QTimer
#include Plasma/Applet
#include Plasma/Package
@@ -67,8 +68,13 @@
Plasma::WebView *page;
bool loaded;
+KUrl url;
+QString webpage;
+static QMapQString, bool loading;
};
+QMapQString, bool WebApplet::Private::loading;
+
WebApplet::WebApplet(QObject *parent, const QVariantList args)
: AppletScript(parent),
d(new Private)
@@ -86,20 +92,31 @@
d-init(this);
QString webpage;
-webpage = package()-filePath(mainscript);
+d-webpage = package()-filePath(mainscript);
-if (webpage.isEmpty()) {
+if (d-webpage.isEmpty()) {
kDebug() fail! no page;
delete d-page;
d-page = 0;
return false;
}
-KUrl url(package()-filePath(html));
-kDebug() webpage package()-path() url;
-d-page-mainFrame()-setHtml(dataFor(webpage), url);
+d-url = KUrl(package()-filePath(html));
+kDebug() d-webpage package()-path() d-url;
+load();
return true;
}
+void WebApplet::load()
+{
+if (!d-loading.contains(package()-metadata().pluginName()) ||
+!d-loading[package()-metadata().pluginName()]) {
+d-loading[package()-metadata().pluginName()] = true;
+d-page-mainFrame()-setHtml(dataFor(d-webpage), d-url);
+} else {
+QTimer::singleShot(50, this, SLOT(load()));
+}
+}
+
void WebApplet::paintInterface(QPainter *painter,
const QStyleOptionGraphicsItem *option,
const QRect contentsRect)
@@ -116,6 +133,7 @@
void WebApplet::loadFinished(bool success)
{
+d-loading[package()-metadata().pluginName()] = false;
d-loaded = success;
}
Index: webapplet.h
===
--- webapplet.h (revision 1063166)
+++ webapplet.h (working copy)
@@ -56,6 +56,7 @@
void connectFrame(QWebFrame *);
virtual void loadFinished(bool);
virtual void initJsObjects();
+void load();
private:
class Private;
signature.asc
Description: This is a digitally signed message part.
___
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel