diff --git a/darwin/slider.m b/darwin/slider.m index 6f5c5a76..945ec7b4 100644 --- a/darwin/slider.m +++ b/darwin/slider.m @@ -109,6 +109,18 @@ static void defaultOnChanged(uiSlider *s, void *data) // do nothing } +void uiSliderSetRange(uiSlider *s, int min, int max) +{ + if (min >= max) { + int temp = min; + min = max; + max = temp; + } + + [s->slider setMinValue:min]; + [s->slider setMaxValue:max]; +} + uiSlider *uiNewSlider(int min, int max) { uiSlider *s; diff --git a/ui.h b/ui.h index 40aea949..94193b04 100644 --- a/ui.h +++ b/ui.h @@ -210,6 +210,7 @@ typedef struct uiSlider uiSlider; _UI_EXTERN int uiSliderValue(uiSlider *s); _UI_EXTERN void uiSliderSetValue(uiSlider *s, int value); _UI_EXTERN void uiSliderOnChanged(uiSlider *s, void (*f)(uiSlider *s, void *data), void *data); +_UI_EXTERN void uiSliderSetRange(uiSlider *s, int min, int max); _UI_EXTERN uiSlider *uiNewSlider(int min, int max); typedef struct uiProgressBar uiProgressBar; diff --git a/unix/slider.c b/unix/slider.c index 7f0cc24a..f989a11f 100644 --- a/unix/slider.c +++ b/unix/slider.c @@ -44,6 +44,20 @@ void uiSliderOnChanged(uiSlider *s, void (*f)(uiSlider *, void *), void *data) s->onChangedData = data; } +void uiSliderSetRange(uiSlider *s, int min, int max) +{ + if (min >= max) { + int temp = min; + min = max; + max = temp; + } + + // we need to inhibit sending of ::value-changed because this WILL send a ::value-changed otherwise + g_signal_handler_block(s->range, s->onChangedSignal); + gtk_range_set_range(s->range, min, max); + g_signal_handler_unblock(s->range, s->onChangedSignal); +} + uiSlider *uiNewSlider(int min, int max) { uiSlider *s; diff --git a/windows/slider.cpp b/windows/slider.cpp index 5c671dda..ed6265e5 100644 --- a/windows/slider.cpp +++ b/windows/slider.cpp @@ -68,6 +68,18 @@ void uiSliderOnChanged(uiSlider *s, void (*f)(uiSlider *, void *), void *data) s->onChangedData = data; } +void uiSliderSetRange(uiSlider *s, int min, int max) +{ + if (min >= max) { + int temp = min; + min = max; + max = temp; + } + + SendMessageW(s->hwnd, TBM_SETRANGEMIN, (WPARAM) TRUE, (LPARAM) min); + SendMessageW(s->hwnd, TBM_SETRANGEMAX, (WPARAM) TRUE, (LPARAM) max); +} + uiSlider *uiNewSlider(int min, int max) { uiSlider *s;