View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0005020||ardour||bugs||public||2012-07-16 19:15||2012-07-20 01:58|
|Summary||0005020: Reverse Fader Scrolling to account for Lion's Reversed Scrolling|
|Description||In Lion scrolling down on the trackpad moves the faders up. Effects are similarly reversed when scrolling up, or left/right for horizontal faders.|
|Tags||No tags attached.|
||I don't think we can fix this properly in Ardour itself. It really needs a fix in GTK itself (the GUI toolkit we use), and this will take some to design and implement. The fact that the value that indicates "scroll up" goes from being a constant to a variable is quite a substantive issue.|
||@paul So you couldn't just reverse the code to consider "down scrolling" as raising the volume and "up scrolling" as lowering the volume when on Mac?|
it doesn't really work that way. if you're not a programmer (you might be, i don't know) there are several layers of abstraction between what the touchpad delivers to the CPU as you use it, and what any given program sees.
in ardour's case, we get events (which originated in the trackpad but then travel through the Darwin kernel, then the display server, then Cocoa, then GDK, then GTK) that tell us "the input device sent a Scroll message, and the direction was Up" (for example).
the problem is that in GDK/GTK/Cocoa, the typical way to test for this is to use a constant value that represents either Up or Down, because until Lion went this route, it *was* a constant. to handle Lion's behaviour in ardour, we'd have to change EVERY single place where we make this comparison (we use scroll events all over the place). Not only do we have to change the comparison, but we have to change the code quite substantially: in C and C++ comparing to the value of a constant value can be done much more efficiently than comparing to the value of a variable, so we use the efficient mechanism.
if we change Up/Down into a variable (I tried it before my previous comment), all that code becomes illegal C/C++, and has to be converted.
GTK should handle this for us (and for every other GTK app, such as GIMP and others). its not jst about faders, its above every place where we scroll up/down, and its not just about ardour.