Version: 2.2 (using 4.1.96 (KDE 4.1.96 (KDE 4.2 RC1)), Kubuntu packages) Compiler: cc OS: Linux (x86_64) release 2.6.27-9-generic Konsole won't allow me to change the transparency to 10% or 20% -- this is very specific: If I set it to one of those values, it is set to that value -1 (so, 9% or 19%). # Steps to reproduce 1. Open Konsole 2. Settings -> Edit Current Profile -> Appearance Tab 3. Select "Edit" 4. Drag "Background transparency" slider to 10% 5. Press "OK" 6. Press "Apply" 7. Press "Edit" again 8. Observe that "Background transparency" is set to 9% This only occurs at 10% and 20%; it does not occur at any other values. It occurs if, instead of pressing "Apply" in 6, you press "OK" and follow steps 2 & 3. # Expected Behavior When I set the transparency to 10% or 20%, it should stay at that value.
Created attachment 30333 [details] quick fix: call qRound instead of casting to int i was unable to test the fix, because I don't have an usable kde build environment set up, but I think i found the issue: opacity is stored as a floating point number and the operation of muliplying it with 100 and casting it to int sometimes leads to a number one less than is expected - caused by inaccuracy of the floating point number. why isn't opacity stored as an int? perhaps that would be a better fix. it can be that <QtGlobal> must be added as an include to make it compile.
SVN commit 912671 by knight: Fix transparently values of 10%, 20% and others not being saved and restored correctly in color scheme editor. Use qRound() on the opacity float instead of (int) cast. Patch by Andre Wisplinghoff BUG:181006 M +1 -1 ColorSchemeEditor.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=912671
> why isn't opacity stored as an int? perhaps that would be a better fix. Qt has two ways of representing alpha - int values from 0 to 255 and floats from 0 to 1. I thought that 0..1 would be easier to understand when reading the code and/or config files. > it can be that <QtGlobal> must be added as an include to make it compile. <QtGlobal> is included by all other Qt includes so any source files which include any Qt or KDE headers will have the declarations from <QtGlobal> available to them.