[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdebase/nsplugins
From: George Staikos <staikos () kde ! org>
Date: 2004-08-08 16:46:52
Message-ID: 20040808164652.3D9A5926D () office ! kde ! org
[Download RAW message or body]
CVS commit by staikos:
Koos' nsplugins liveconnect patch (fixes a specific crash on certain sites)
M +19 -6 plugin_part.cpp 1.57
M +2 -1 plugin_part.h 1.28
--- kdebase/nsplugins/plugin_part.cpp #1.56:1.57
@@ -30,5 +30,5 @@ public:
PluginLiveConnectExtension::PluginLiveConnectExtension(PluginPart* part)
-: KParts::LiveConnectExtension(part), _part(part) {
+: KParts::LiveConnectExtension(part), _part(part), _retval(0L) {
}
@@ -54,6 +54,6 @@ Q_UNUSED(value);
bool PluginLiveConnectExtension::put( const unsigned long, const QString &field, const QString &value) {
kdDebug(1432) << "PLUGIN:LiveConnect::put " << field << " " << value << endl;
- if (field == "__nsplugin") {
- __nsplugin = value;
+ if (_retval && field == "__nsplugin") {
+ *_retval = value;
return true;
} else if (field.lower() == "src") {
@@ -72,6 +72,9 @@ QString PluginLiveConnectExtension::eval
//kdDebug(1432) << "String is [" << jscode << "]" << endl;
args.push_back(qMakePair(KParts::LiveConnectExtension::TypeString, jscode));
+ QString nsplugin("Undefined");
+ _retval = &nsplugin;
emit partEvent(0, "eval", args);
- return __nsplugin;
+ _retval = 0L;
+ return nsplugin;
}
@@ -180,5 +183,6 @@ KAboutData *PluginFactory::aboutData()
PluginPart::PluginPart(QWidget *parentWidget, const char *widgetName, QObject *parent,
const char *name, const QStringList &args)
- : KParts::ReadOnlyPart(parent, name), _widget(0), _args(args)
+ : KParts::ReadOnlyPart(parent, name), _widget(0), _args(args),
+ _destructed(0L)
{
setInstance(PluginFactory::instance());
@@ -218,4 +222,6 @@ PluginPart::~PluginPart()
delete _callback;
_loader->release();
+ if (_destructed)
+ *_destructed = true;;
}
@@ -339,8 +345,15 @@ void PluginPart::evalJavaScript(int id,
kdDebug(1432) <<"evalJavascript: before widget check"<<endl;
if (_widget) {
+ bool destructed = false;
+ _destructed = &destructed;
kdDebug(1432) <<"evalJavascript: there is a widget" <<endl;
QString rc = _liveconnect->evalJavaScript(script);
+ if (destructed)
+ return;
+ _destructed = 0L;
kdDebug(1432) << "Liveconnect: script [" << script << "] evaluated to [" << rc << "]" << endl;
- static_cast<NSPluginInstance*>((QWidget*)_widget)->javascriptResult(id, rc);
+ NSPluginInstance *ni = dynamic_cast<NSPluginInstance*>(_widget.operator->());
+ if (ni)
+ ni->javascriptResult(id, rc);
}
}
--- kdebase/nsplugins/plugin_part.h #1.27:1.28
@@ -109,4 +109,5 @@ private:
QStringList _args;
class NSPluginLoader *_loader;
+ bool *_destructed;
};
@@ -128,6 +129,6 @@ signals:
private:
- QString __nsplugin;
PluginPart *_part;
+ QString *_retval;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic