View Single Post
Old 11-01-2010, 08:47 AM  
bigstar
FlashFXP Developer
 
bigstar's Avatar
 
Join Date: Oct 2001
Posts: 8,012
Default

I examined the delphi source code and I noticed a small issue with the logic of how mouse scrolling is handled. I found this page http://blogs.msdn.com/b/oldnewthing/.../07/54615.aspx that mentions the WHEEL_DELTA might have half a tick for high resolution mice.

Further testing revealed that I was able to reproduce this issue when the selected control has a horizontal scrollbar but not a vertical one.

Scrolling a full tick would scroll the control under the mouse cursor but a half tick would scroll the focused control.

The delphi VCL adds half ticks to a variable FWheelAccumulator for the control so that this can be combined with the next scroll tick, in the DoMouseWheel() function when a half tick comes in there is no condition to handle this case and the function returns false which then sends the scroll message to the parent control until all controls have been enumerated or one of them returns true.

We're trying to scroll a specific window and in my opinion a half tick should return true, instead of trying each parent control, since each control has its own FWheelAccumulator variable the half ticks add up and eventually trigger a scroll event that is equal to a full tick.

By changing this behavior in the Delphi VCL I was able to resolve the specific issue I noticed, I'm not entirely sure this is the exact issue you experienced, but I will send you a private message to a test build.
bigstar is offline