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:
parent
97d5f51e58
commit
d615077df8
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue