Bug in KActionCollection::connectNotify
    David Faure 
    faure at kde.org
       
    Mon Mar 10 12:42:02 GMT 2008
    
    
  
On Friday 07 March 2008, Nicolas Ternisien wrote:
> I've just done a little patch on KActionCollection, which deprecate
> actionHighlighted() and rename it actionHovered(), to match the
> QAction API. This patch is linked to my previous and never answered
> email attached here.
> 
> That's my first KDEcore patch, so be cool with it ;-)
The idea is OK, but the implementation isn't: you can't add new virtual methods in a public class like KActionCollection, it breaks binary compatibility.
+  virtual void slotActionHovered();
It doesn't need to be virtual. All it does is emitting a signal, apps can decide what to do by connecting to the signal.
Otherwise, I have to ask: did you test this patch? I see an obvious bug in it:
   if (QMetaObject::normalizedSignature(SIGNAL(actionHighlighted(QAction*))) == signal) {
you need to also check for the new signal, otherwise it won't detect that somebody connected to it and it won't be emitted...
This should be something like
   if (QMetaObject::normalizedSignature(SIGNAL(actionHighlighted(QAction*))) == signal
    || QMetaObject::normalizedSignature(SIGNAL(actionHovered(QAction*))) == signal) {
-- 
David Faure, faure at kde.org, sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
    
    
More information about the kde-core-devel
mailing list