From 956c296a32e60253f1cbdd7dd937e6f9a2ee3662 Mon Sep 17 00:00:00 2001 From: Jeremy White Date: Thu, 5 Mar 2009 17:13:45 -0600 Subject: [PATCH] sane.ds: Fix a subtle bug that prevented the float scrollbar from incrementing by one. --- dlls/sane.ds/ui.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/sane.ds/ui.c b/dlls/sane.ds/ui.c index 31b51524534..147c7594314 100644 --- a/dlls/sane.ds/ui.c +++ b/dlls/sane.ds/ui.c @@ -853,10 +853,14 @@ static INT_PTR InitializeDialog(HWND hwnd) dd = SANE_UNFIX(*sf); HeapFree(GetProcessHeap(),0,sf); + /* Note that conversion of float -> SANE_Fixed is lossy; + * and when you truncate it into an integer, you can get + * unfortunate results. This calculation attempts + * to mitigate that harm */ if (s_quant) - pos = (dd / s_quant); + pos = ((dd + (s_quant/2.0)) / s_quant); else - pos = dd / 0.01; + pos = (dd + 0.005) / 0.01; SendMessageW(control, SBM_SETPOS, pos, TRUE);