diff --git a/headers/os/interface/ChannelSlider.h b/headers/os/interface/ChannelSlider.h index c07995a15c..18b3744fb3 100644 --- a/headers/os/interface/ChannelSlider.h +++ b/headers/os/interface/ChannelSlider.h @@ -121,7 +121,7 @@ virtual void _Reserved_BChannelSlider_7(void* , ...); uint32 _reserved_[12]; void _InitData(); - void _FinishChange(); + void _FinishChange(bool update = false); void _UpdateFontDimens(); void _DrawThumbs(); void _DrawGrooveFrame(BView* where, const BRect& area); diff --git a/src/kits/interface/ChannelSlider.cpp b/src/kits/interface/ChannelSlider.cpp index dfdc747a5b..789234bd06 100644 --- a/src/kits/interface/ChannelSlider.cpp +++ b/src/kits/interface/ChannelSlider.cpp @@ -677,7 +677,7 @@ BChannelSlider::_InitData() void -BChannelSlider::_FinishChange() +BChannelSlider::_FinishChange(bool update) { if (fInitialValues != NULL) { bool *inMask = NULL; @@ -690,11 +690,13 @@ BChannelSlider::_FinishChange() inMask[fCurrentChannel] = true; } } - InvokeChannel(NULL, 0, numChannels, inMask); + InvokeChannel(update ? NULL : ModificationMessage(), 0, numChannels, inMask); } - SetTracking(false); - _Redraw(); + if (!update) { + SetTracking(false); + _Redraw(); + } } @@ -863,6 +865,9 @@ BChannelSlider::_MouseMovedCommon(BPoint point, BPoint point2) else SetValueFor(fCurrentChannel, value); + if (ModificationMessage()) + _FinishChange(true); + _DrawThumbs(); }