[PATCH] Fix infinite recursion in KdeuiWidgetsProxyStyle

David Faure faure at kde.org
Thu Jun 12 22:59:48 BST 2008


On Thursday 12 June 2008, Olivier Goffart wrote:
> Le mercredi 11 juin 2008, Aurélien Gâteau a écrit :
> > Hello,
> >
> > You (may) know that KLineEdit uses KdeuiWidgetsProxyStyle to define the
> > right margin necessary to show the "clear" button. To do so it uses a
> > proxy of QStyle(): KdeuiWidgetsProxyStyle.
> >
> > This causes infinite recursion when the KLineEdit parent uses
> > QStyleSheetStyle because also acts as a proxy to the "base" style.
> 
> If fact, it should not recurse infinitively.
> 
> Let's say you have QStyleSheetStyle which is the proxy for the OriginalStyle
> Then you add KdeuiWidgetsProxyStyle. which will be the proxy of the old 
> QStyleSheetStyle.  But a new QStyleSheetStyle will be created on top.
> 
> So we will have
> QStyleSheetStyle -> KdeuiWidgetsProxyStyle -> QStyleSheetStyle -> OriginalStyl
> e  (where -> mean "is a proxy for")
> 
> Now, maybe there is a bug making that some style may be deleted while they 
> should not.
> I'll look into that.

As I said, I think it comes from parent->parentWidget()->style().
This is where it recurses: we're looking at the style for _another_ widget than the lineedit!

So it can go    QStyleSheetStyle -> KdeuiWidgetsProxyStyle -> _same_ QStyleSheetStyle, but for the parent widget,
when that QStyleSheetStyle was applied to the whole application.
See my post for more info :)

-- 
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