[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-frameworks-devel
Subject:    Re: Why so many QStyles
From:       David Faure <faure () kde ! org>
Date:       2015-01-04 13:54:36
Message-ID: 2588066.Izr8huZGp5 () asterix
[Download RAW message or body]

On Sunday 04 January 2015 13:51:15 David Faure wrote:
> 2) I can't think of a reason against passing qApp->style() to the
> KLineEditStyle ctor; the rest of the code in QProxyStyle::ensureBaseStyle is
> about the -style cmdline override (which qApp->style() honours too).

More testing gives a very good reason against doing that...
"Ownership of style is transferred to QProxyStyle."

==2384==    at 0x4C2A601: operator delete(void*) (vg_replace_malloc.c:510)
==2384==    by 0x1E07D5DB: Breeze::Style::~Style() (breezestyle.cpp:200)
==2384==    by 0xC6335BB: QObjectPrivate::deleteChildren() (qobject.cpp:1935)
==2384==    by 0xC631CF7: QObject::~QObject() (qobject.cpp:1028)
==2384==    by 0xB3092BF: QStyle::~QStyle() (qstyle.cpp:420)
==2384==    by 0xB315CDD: QCommonStyle::~QCommonStyle() (qcommonstyle.cpp:131)
==2384==    by 0xB34563F: QProxyStyle::~QProxyStyle() (qproxystyle.cpp:151)
==2384==    by 0x7FF262F: KLineEditStyle::~KLineEditStyle() (in \
/d/kde/inst/kde_frameworks/lib64/libKF5Completion.so.5.6.0) ==2384==    by 0x7FF265F: \
KLineEditStyle::~KLineEditStyle() (klineedit_p.h:185) ==2384==    by 0x7FE768F: \
KLineEditPrivate::~KLineEditPrivate() (klineedit.cpp:51) ==2384==    by 0x7FF19FA: \
QScopedPointerDeleter<KLineEditPrivate>::cleanup(KLineEditPrivate*) \
(qscopedpointer.h:62) ==2384==    by 0x7FF12A2: QScopedPointer<KLineEditPrivate, \
QScopedPointerDeleter<KLineEditPrivate> >::~QScopedPointer() (qscopedpointer.h:109) \
==2384==    by 0x7FE8107: KLineEdit::~KLineEdit() (klineedit.cpp:202)

And QProxyStyle::setBaseStyle transfers ownership too.

So clearly the intent is that a separate widget style instance is used as the base \
for every proxy style. I'm not sure why, but that's what we'll have to work with.


[OTOH I wonder if KLineEdit couldn't keep its proxy style as a singleton, so that \
only one instance of it is created, this would at least keep instances down a bit. \
But it has some state (data members) so maybe this isn't possible].

-- 
David Faure, faure@kde.org, http://www.davidfaure.fr
Working on KDE Frameworks 5

_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic