Slider problem


#1

I’ve got a vertical linear slider and a sliderListener. The slider behaves well visually, but if I click and hold on the slider, and then begin to move it around, none of the changes in the sliders value are getting through to my sliderValueChanged() routine.

This problem seems specific to the Mac. Is there an issue getting asynchronous message updates while the mouse is down or tracking? Would I be better off subclassing the slider class to do something when the slider values are updated than to rely on messages to the listener? Would it help if the slider sent synchronous messages instead of asynchronous ones?


#2

Ah… yes, that must be because of the mac’s mouse-tracking behaviour. Very annoying…

Yes, it does look like it should send it synchronously when the mouse is being dragged, so juce_Slider.cpp, line 1263 would be:

setValue (snapValue (valueWhenLastDragged, true), ! sendChangeOnlyOnRelease, true);

I don’t think there are any problems with doing it synchronously like that…


#3

excellent. That made things much better. Thanks for the suggestion.

It also exposed a similar error. Sometimes I have two sliders that are linked, so changing one changes the other. To do this I just call setValue() on the other from my sliderValueChanged() listener. When I do this, the second fader doesn’t make calls back to sliderValueChanged() regularly, as if it’s being blocked by the actions of the first slider. Is that possible?

I’ve rewritten code around that problem, but I wonder if there are still issues with synchronous messaging while the mouse is down.


#4