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

List:       kde-core-devel
Subject:    Re: Fwd: Re: PATCH - Mega style patch
From:       Neil Stevens <neil () qualityassistant ! com>
Date:       2002-03-01 4:54:43
[Download RAW message or body]

On Thursday February 28, 2002 08:52, Fredrik Höglund wrote:
> ----------  Forwarded Message  ----------
>
> Subject: Re: PATCH - Mega style patch
> Date: Thu, 28 Feb 2002 23:32:49 -0500
> From: Maks Orlovich <mo002j@mail.rochester.edu>
> To: Fredrik H?glund <fredrik@kde.org>
>
> Hi, can you please forward this to core-devel? This is quite important,
> and I don't have write access..
>
> -Thanks, Sad Eagle
>
> > Right now there's a big gaping problem in the Style handling - If a
> > style uses KDE, it gets applied to Qt anyway, and can take down all a
> > user's Qt apps, most notably the very qtconfig that would be needed to
> > fix it.
>
> First of all, it needs to be shown that this is truly necessary, IMHO,
> particularly since it touches KApplication.

The first version of Liquid for KDE 3 used kapp, which made Qt apps fail, 
including qtconfig which would be needed to repair it.  Liquid was since 
made to work with Qt-only apps, but the next style author may not care, 
which will create hardship on users of Qt-only apps who want that style.

That's the simple fact.  KDE applies styles to Qt indiscriminately, in a 
careless manner that jeopardizes the very users this system was supposed 
to help - users of Qt apps.

> First, the way you currently do enumeration in kcontrol ignores the fact
> that a style may not list itself in the plugin's keys() method but
> provide .themerc, for example to run only on displays of sufficient
> color depth. Further, if a style like that gets selected, the factory
> method will return 0, so your nice fallback code will chose the default
> -- sane behavior, but not what the user would expect when selecting "The
> new fancy style" in kcontrol.

No it doesn't.  It only uses keys() for styles that *don't* have themerc 
files.  It checks themerc files *first*.

> Also, why are you doing tolower() in all the style plugins, instead of
> doing it in one spot in the loader?

I just copied over from light what seemed to be the correct behavior, 
which seemed especially since Highcolor was using different case at 
different times.

> Not returning void* from kdeStyleFactory would be a nice touch too,
> IMHO. What this returns should always be an instance of something that
> inherits off QStyle.

Easy to fix.

>
> > * kstyles are modified to make their Qt enumeration name consistent
> > with their .themerc name
> > * themerc files have the .la file added as a new key, WidgetStyleLib
>
> This will force all pixmap themes to be modified to work with KDE3;
> again, in fairness they need to be modified to work with "old" kcm_style
> anyway, and I need to do some work still for it to be completely
> backwards compatible, but I would appreciate if that were not rendered
> impossible. Plus, someone will hurt me if I say that the .themerc's for
> their favorite pixmap themes need to be modified yet again ;-)

Someone whose Qt apps are broken because a KDE style author who didn't 
care about working with Qt apps, and who finds out that a way of avoiding 
this is rejected, will want to hurt you as well.  Or just be left with a 
distaste for KDE, that finger pointing (blaming the style author) would 
take precedence over robustness (avoiding KDE-only styles being applied to 
Qt in the first place).

> Also, as someone who did a lot to various pixmap themes's themerc's at
> various stages of development of KThemeStyle's KDE3 port, I can tell you
> that having information on styles in multiple places is a potential
> headache...

You already had two places before this patch - keys() and themerc.  After 
this patch there are two places - keys() and themerc.  The number isn't 
increased, so that's is no reason to ignore this fix.


-- 
Neil Stevens
neil@qualityassistant.com

Don't think of a bug as a problem.  Think of it as a call to action.
[prev in list] [next in list] [prev in thread] [next in thread] 

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