Hi,

Here is a patch that fixes negative float option values. Previously
because of a small calculation error, when negative values were
allowed for a float option (say with precision 5), when the user
entered -21, the value would change to -15, then -10, then -5, then 0,
instead of just changing to -20 and staying there. This patch fixes
that.

Regards,
Erkin
diff --git a/src/option.c b/src/option.c
index b9ef8e8..ac12b68 100644
--- a/src/option.c
+++ b/src/option.c
@@ -121,9 +121,10 @@ compSetFloatOption (CompOption	    *opti
 		    CompOptionValue *value)
 {
     float v, p;
+    int sign = (value->f < 0 ? -1 : 1);
 
     p = 1.0f / option->rest.f.precision;
-    v = ((int) (value->f * p + 0.5f)) / p;
+    v = ((int) (value->f * p + sign * 0.5f)) / p;
 
     if (v < option->rest.f.min ||
 	v > option->rest.f.max ||
_______________________________________________
compiz mailing list
compiz@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/compiz

Reply via email to