[Kde-bindings] Re: Workaround for DataEngine::Data& slot argument in dataUpdated

Richard Dale richard.dale at telefonica.net
Thu Nov 18 08:35:06 UTC 2010


On Thursday, November 18, 2010 04:29:37 am David Palacio wrote:
> Hi,
> 
> Current problem: Plasmoid method `dataUpdated` cannot be called as slot
> (Cannot handle DataEngine::Data as slot argument).
> 
> Workaround: dataengine.data.diff (attached)
> 
> The type for DataEngine::Data in generated smokedata.cpp is:
> { "const Plasma::DataEngine::Data&", 0, Smoke::t_voidp|Smoke::tf_stack },
> //419
> 
> This is not found by get_moc_arguments since it removes the const prefix
> when searching the type.
> 
> Later, a handler for the type is not found since the name is missing the
> same prefix as above.
> 
> So is the generated type name in smokedata.cpp wrong? Is this workaround
> totally off?
No not totally off. I had a look at this problem a week or two ago and had been 
meaning to mail this mailing list about it. I've attached a patch for smokegen 
which drops const from types which are used in slot args. I didn't commit it, 
as I don't think it is the best way to fix it.

I think we should leave the types as they are in smokegen, but add an extra 
type signature for methods that are slots based on the type signature returned 
by QMetaObject::normalizedSignature().

We could change the way slot arg types are looked up in bindings like QtRuby 
so that they look for const slot types as well as non-const ones, but the 
lookup code is already very complicated and it seemed a bit clunky to do 
everything twice.

-- Richard

-- Richard
-------------- next part --------------
A non-text attachment was scrubbed...
Name: type_compiler_const.patch
Type: text/x-patch
Size: 853 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-bindings/attachments/20101118/94f2bf89/attachment.patch>


More information about the Kde-bindings mailing list