If I use Voice Over to change the value of a slider, the value of the slider is updated, but sliderValueChanged (Slider *slider) is never called. So the slider is updating on the screen, but nothing connected to it ever updates.
But that requires access to the pimpl, which the accessibility handler doesn’t have. The Slider needs to expose a way to send the drag start and stop messages, otherwise there is no way to properly implement keyboard handling for the Slider.
We’re getting occasional crashes with this change during the Slider destructor. It looks like the pimpl has has already been deleted in these cases and is nullptr. This change seems to resolve it for us:
...
Slider::ScopedDragNotification::ScopedDragNotification (Slider& s)
: sliderBeingDragged (s)
{
sliderBeingDragged.pimpl->sendDragStart();
}
Slider::ScopedDragNotification::~ScopedDragNotification()
{
if (sliderBeingDragged.pimpl != nullptr)
sliderBeingDragged.pimpl->sendDragEnd();
}
...