fix: sliders not responding on Wayland — add W_RedisplayView after paintSlider

Slider value changes (from click, drag, or programmatic set) call paintSlider to draw the new knob position into the pixman backing buffer, but the backing was never committed to the scene graph on Wayland. Added W_RedisplayView(slider->view) after each paintSlider call in: WMSetSliderValue, WMSetSliderMinValue, WMSetSliderMaxValue, and handleActionEvents (WME_MOTION/WME_BUTTON_RELEASE). The expose handler path does NOT get W_RedisplayView to avoid recursion.
This commit is contained in:
Ollie 2026-05-30 11:57:24 +02:00
parent 97d5f51e58
commit d615077df8
1 changed files with 11 additions and 3 deletions

View File

@ -146,8 +146,10 @@ void WMSetSliderMinValue(WMSlider * slider, int value)
slider->minValue = value;
if (slider->value < value) {
slider->value = value;
if (slider->view->flags.mapped)
if (slider->view->flags.mapped) {
paintSlider(slider);
W_RedisplayView(slider->view);
}
}
}
@ -158,8 +160,10 @@ void WMSetSliderMaxValue(WMSlider * slider, int value)
slider->maxValue = value;
if (slider->value > value) {
slider->value = value;
if (slider->view->flags.mapped)
if (slider->view->flags.mapped) {
paintSlider(slider);
W_RedisplayView(slider->view);
}
}
}
@ -174,8 +178,10 @@ void WMSetSliderValue(WMSlider * slider, int value)
else
slider->value = value;
if (slider->view->flags.mapped)
if (slider->view->flags.mapped) {
paintSlider(slider);
W_RedisplayView(slider->view);
}
}
void WMSetSliderContinuous(WMSlider * slider, Bool flag)
@ -474,6 +480,8 @@ static void handleActionEvents(WMEvent * event, void *data)
}
break;
}
if (sPtr->flags.dragging || event->type == WME_BUTTON_RELEASE)
W_RedisplayView(sPtr->view);
}
static void destroySlider(Slider * sPtr)