[PATCH] Fix infinite recursion in KdeuiWidgetsProxyStyle

Aurélien Gâteau aurelien.gateau at free.fr
Wed Jun 11 22:26:33 BST 2008


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.

The first patch breaks the infinite recursion by detecting if the style 
proxied by KdeuiWidgetsProxyStyle is QStyleSheetStyle. It fixes a crash 
in Gwenview when one tries to edit places shown on the start page.
It also fixes most crashes caused by passing a custom stylesheet to the 
application from the command line. Konqueror still crashes, but Dolphin 
and Gwenview and a few others no longer crash.

The second patch reworks the way KLineEdit tells KLineEditStyle 
(inherited from KdeuiWidgetsProxyStyle) the margin to reserve for the 
"clear" button. I had to do so because after the first patch, the casts:

dynamic_cast<KLineEditStyle*>(style())

Would return 0 if the parent widget where using QStyleSheetStyle (I 
haven't figured out why).

Is it ok to apply?

Aurélien
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Avoid-infinite-recursion-if-widget-uses-QStyleSheetSt.diff
Type: text/x-diff
Size: 2866 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20080611/f1f296ec/attachment.diff>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-Store-overlap-in-KLineEditPrivate.diff
Type: text/x-diff
Size: 3911 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20080611/f1f296ec/attachment-0001.diff>


More information about the kde-core-devel mailing list