On Tue, Aug 18, 2009 at 1:45 PM, Cédric<k...@xfou.com> wrote: > Thanks Richard, > > That seems to be the problem. > What I was telling in my earlier mail is that the javascript binding seems > to have a similar problem with plasmoid.dataEngine("engine > name").serviceForSource("source name") and maybe they solved it by > implementing the service function: plasmoid.service("engine name", "source > name") (and method Plasma::Applet#service is not implemented in ruby ) . > I found the problem. It is a bug in how the smoke library works with overriden virtual methods in classes that are don't have bindings generated for them. In this case the 'TasksEngine' class isn't part of the bindings, and when the serviceForSource() method is called on the DataEngine, the code to invoke it looks like this:
void x_10(Smoke::Stack x) { // serviceForSource(const QString&) Plasma::Service* xret = this->Plasma::DataEngine::serviceForSource(*(const QString *)x[1].s_voidp); x[0].s_class = (void*)xret; } When it should probably look like this, and invoke the method in the TasksEngine class: void x_10(Smoke::Stack x) { // serviceForSource(const QString&) Plasma::Service* xret = this->serviceForSource(*(const QString *)x[1].s_voidp); x[0].s_class = (void*)xret; } Arno Rehn has just written a new smoke library bindings generator, and I think we need to discuss this issue and see if we can fix it in that tool. -- Richard _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel