[sane.ds 2/4] Fix a subtle bug that prevented the float scrollbar from incrementing by one.
Jeremy White
jwhite at codeweavers.com
Thu Mar 5 17:13:45 CST 2009
---
dlls/sane.ds/ui.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/sane.ds/ui.c b/dlls/sane.ds/ui.c
index 31b5152..147c759 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);
More information about the wine-patches
mailing list