> On June 22, 2013, 12:58 p.m., Thomas Lübking wrote:
> > kdeui/util/kglobalsettings.cpp, line 308
> > <http://git.reviewboard.kde.org/r/111171/diff/1/?file=165092#file165092line308>
> >
> >     These are the colors for the window titlbar (with ambiguous function 
> > names, though), the default for activeTitleColor used to be #30AEE8 - that 
> > is blue!
> >     
> >     Now you want to return the active window background (ie. usually gray) 
> > - iow: enforce the color alignment that once caused the former KWin 
> > maintainer to for the oxygen deco into the new default ozone?
> >     
> >     I mean, decorations can still keep their internal color settings (what 
> > was somehow required because the titlebar color was initially happily 
> > removed from the color kcm - instead one could define the button color in 
> > listviews...), but the implication of this change is that the titlbar can 
> > no more be individually configured and *has* to align to the window 
> > background.
> >     
> >     -> The RR should clearly state that central color configuration for 
> > titlebars will ultimately be unsupported.
> >     
> >     Until then, the change can imo not go in before KF5 anyway, because 
> > it's a very visible behavioral change for users of Laptop, Plastik, BII and 
> > some legacy decorations (you still /can/ compile Quartz and Keramik and 
> > what they all were called) and pot. some distro specific decorations.
> 
> Aleix Pol Gonzalez wrote:
>     Are you sure these are being used? because I searched for uses of this 
> API and I didn't see such uses.
> 
> Thomas Lübking wrote:
>     KWin reads the setting values by hand in 
> libkdecorations/kdecoration_p.cpp - so actually I was wrong in that aspect: 
> the change in KGlobalSettings will not have a visible impact here - no 
> guarantee for 3rd party decos beyond bespin (esp. on custom config dialogs)
>     
>     Not sure whether this makes the change better, since now KWin will no 
> longer reflect what KGlobalSettings reports.
>     I'm not sure how important it is to export those values via 
> KGlobalSettings (i guess they existed to use the colors on MDI windows from 
> KStyle), but even while deprecated, their behavior should not change.
>     And unless the conclusion is that titlebars shall align to the window 
> content color, the advice should also not be to query that instead. It's 
> better to state "information not avialable" than to give a false information.
> 
> Martin Gräßlin wrote:
>     It's worse - KWin does not just read the values by itself, it reads them 
> from kwinrc instead of kdeglobals. So whatever is set in KGlobalSettings: 
> KWin ignores it.
> 
> Thomas Lübking wrote:
>     No ;-)
>     Welcome to the magics of KConfig.
>     I for one have no [WM] entry in kwinrc, it's only in kdeglobal - try 
> grepping it =)
>     However, KConfig resolves to kdeglobal for *every* rc unless explicitly 
> told do do not, so <advert>
>     
>     kconfig kdeglobal/WM list
>     and
>     kconfig kwinrc/WM list
>     </advert>
>     
>     will print the same value (read from kdeglobal) unless you explicitly add 
> a configuration to kwinrc (what's afaics not done anywhere - hopefully ;-)
> 
> Martin Gräßlin wrote:
>     wtf?!? I hate magic functionality
> 
> Thomas Lübking wrote:
>     Well, yes. The "magic" function here is the open flag:
>     
> http://api.kde.org/4.10-api/kdelibs-apidocs/kdecore/html/classKConfig.html#ad1f23964bbf8c11449e92a2596d15f7e
>     
>     One can either omit cascading (system wide files) or globals (kdeglobals)
>     Since the color and some WM settings were/are attractive from many 
> points, it was/is reasonable to store them globally.
> 
> Aleix Pol Gonzalez wrote:
>     In any case, this seems broken to me.
>     
>     If you're really serious about this, we probably should just deprecate 
> the function and advise users to just read the file directly if they want to 
> access this data and move on.
> 
> Thomas Lübking wrote:
>     No, it's not broken at all - normal KConfig behavior, ever has been.
>     
>     If this shall be deprecated (can't say - i don't need them and don't 
> care) your conclusion is however right:
>     the current behavior shall be preserved and the clients be advised to 
> query the setting directly (as kwin does atm) for KF5.
>     
>     The "serious" part is that you were about to alter functionality in even 
> frozen kdelibs and esp. imply a wider reaching change: fixed "titlebar == 
> window background" assumption, ie. no titlebar colors - which, given the 
> little war on oxygen back then, probably needs to be openly discussed before.
>     
>     Personally, i'd be fine moving the setting to kwin only - as MDI is a bug 
> to begin with and the setting unlikely required by applications then.
>     I simply didn't want KWin to receive bugreports "plastik: colors no more 
> supported" (what, as now  figured, would however only happen by withdrawing 
> the color kcm setting on top of mentioned implication) and i *seriously* do 
> not want to see such war as on ozone ./. oxygen ever again (so the idea to 
> deprecate those color config triggered a button ;-)
>     /my2¢
> 
> Aaron J. Seigo wrote:
>     "I hate magic functionality"
>     
>     ... any sufficiently advanced technology *cough*
>     
>     As noted, this is documented behaviour and it serves a very real and very 
> useful purpose: to allow global settings to be transparently available to 
> (yet still be overridden by!) each application. It's a very simple and 
> elegant way to allow for global behaviours to be configured without requiring 
> such code in every application.
> 
> David Faure wrote:
>     Aaron is completely right. But of course the case of WM colors is a 
> really bad one for kdeglobals. Having them there pollutes the KConfig (= eats 
> more memory) in each application, which typically doesn't care for these 
> settings.
> 
> Kevin Ottens wrote:
>     Exactly, having KConfig also look in kdeglobals is definitely a magic we 
> want to keep. Now in the case of those particular colors it's likely a kind 
> of abuse, I'd like to see them moved to be kwin only. It looks like the best 
> way forward.
> 
> Aurélien Gâteau wrote:
>     I see the point of having cross-app configuration files, I assume classes 
> from kdelibs for example can use it to store settings. What I don't 
> understand is in which situation it is useful to have all configuration file 
> inherit from cross-app configuration keys, compared to having cross-app code 
> explicitly call KSharedConfig::openConfig("kdeglobals"). Can someone provide 
> an example?
>     
>     To me it feels dangerous because application developers may not be aware 
> of this feature and may inherit values for keys they expect to be application 
> specific if they are unlucky to pick a group used in kdeglobals or if a group 
> they used in the past is now used by a component which writes in kdeglobals.
>     
>
> 
> Thomas Lübking wrote:
>     
> https://techbase.kde.org/KDE_System_Administration/Kiosk/Introduction#KDE_Action_Restrictions
> 
> Aurélien Gâteau wrote:
>     Kiosk is actually a good example of why inheriting from kdeglobals can be 
> painful.
>     
>     I used to work for a company which deployed locked-down KDE systems for 
> dentists. We would create the locked-down configuration by running KDE as an 
> "empty" user, configure the desktop to our liking, then copy the config files 
> from $HOME/.kde to a custom, read-only dir which was inserted in $KDEDIRS. We 
> would of course lock-down the config files from the custom dir by marking 
> their config as immutable. As you know there are 3 ways to lock-down a config 
> file: you can lock the whole file, a whole section or a single key. We 
> usually locked down sections since we felt it was the most convenient way to 
> go. We locked down sections in many files, and at some point we locked down 
> the "General" section of kdeglobals... and wasted quite some time figuring 
> out why many applications would not save all of their settings. You would not 
> believe how common a "General" section is.
>     
>     Sure it is nice to be able to take advantage of this to lock-down actions 
> at the desktop and/or application level, but that could also be done by first 
> looking at kdeglobals:"KDE Action Restrictions":action/${actionName} and then 
> at ${appname}rc:"KDE Action Restrictions":action/${actionName}. Furthermore, 
> since this code is specific to Kiosk, it makes sense for it to actively look 
> at KConfig::isImmutable() and KConfigGroup::isEntryImmutable().
> 
> Thomas Lübking wrote:
>     This went so much OT -  sorry that we're abusing your RR, Aleix.
>     
>     ----
>     
>     Why would the code be specific to kiosk? - You asked for an example, not 
> justification.
>     
>     It does eg. also allow you to preconfigure the MainWindow settings of all 
> (even yet unwritten) applications - w/o any requirement to immutability, 
> rather explicitly allowing them to be altered per application and account 
> afterwards.
>     It does as well allow to control all immutability settings from only one 
> file (unless an application doesn't IncludeGlobals when reading its settings)
>     
>     
>     I'm pretty sure that the [General] section has widespread usage (eg. in 
> gwenview ;-)
>     But when you draw a broadsword, don't complain about the bloodshed ;-P
>     (And yes: "general" in "*global*" is a broadsword - or rather even a 
> scythe)
>     
>     
>     Now, I don't want to defend the behavior of KConfig, but your arguments 
> so far have been:
>        a) developers not aware of the behavior (ie. using KConfig w/o ever 
> looking at the API doc) and
>        b) admins using a system w/o understanding its design (for I will not 
> assume that, had you known that the General group from kdeglobals was merged 
> into all General groups of all applications, you had immuted it)
>     
>     b) Is actually not relevant at all, as even if FullConfig had to be 
> explicitly passed, it would happen nevertheless - and then some applications 
> could have stored their generals and others could not.
>     Doesn't seem any simpler to track.
>     
>     About a):
>     I assume if the API was new, one might make the parameter w/o default - 
> enforcing developers awareness and informed choice.
>     Nevertheless, using an API by cnp w/o wasting a glimpse at the docu is 
> just wrong.
>     Happens, yes. I do sometimes, yes. - But it's still wrong.
>     
>     You certainly have a point on the name collision (so on't use background 
> in [General]...), but usually the local context has precedence, thus the 
> worst thing to happen was that the "vanilla" default value isn't the one you 
> used in the code (until the user stores the desired value once).
>     
>     Eventually the default actually should have been CascadeOnly (because 
> IncludeGlobals seems mostly interesting to libs only), but "bUseKDEGlobals" 
> has been true by default in even KDE3 - and, unfortunately, we don't live in 
> should-land.
>     
>     => I'd suggest to bring this up at an appropriate place w/ an appropriate 
> subject line for KF5.
>     My opinion? - Changing the behviour has to make the parameter mandatory, 
> ie. break compilation to enforce a developer choice.
> 
> Kevin Ottens wrote:
>     Yes, please move that debate somewhere else... hijacking that review for 
> that is just making things painful at that point.
>     
>     Now bottom line (and I'm repeating myself to give a direction to that 
> review again):
>     Please move those color settings to be kwin only. Thanks.

Agreed, let's move this to kde-core-devel.


- Aurélien


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/111171/#review34861
-----------------------------------------------------------


On June 22, 2013, 12:25 p.m., Àlex Fiestas wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/111171/
> -----------------------------------------------------------
> 
> (Updated June 22, 2013, 12:25 p.m.)
> 
> 
> Review request for KDE Frameworks and kdelibs.
> 
> 
> Description
> -------
> 
> Deprecate: inactiveTitleColor, inactiveTextColor, activeTitleColor, 
> activeTextColor in favor of KColorScheme and replace the implementation of 
> those methods with it.
> 
> 
> Diffs
> -----
> 
>   kdeui/util/kglobalsettings.h 4b77ed5 
>   kdeui/util/kglobalsettings.cpp 3e60632 
>   khtml/misc/helper.cpp dccb9bf 
> 
> Diff: http://git.reviewboard.kde.org/r/111171/diff/
> 
> 
> Testing
> -------
> 
> I have compared the colors returned by the methods before and after this 
> patch, they are close enough.
> 
> Additionally used some apps like filelight with the change, and it seems to 
> work for them as well.
> 
> 
> Thanks,
> 
> Àlex Fiestas
> 
>

Reply via email to