Add uiSliderSetRange function to modify the uiSlider range after creation.
Some applications need to modify the slider range at runtime. Instead of re-creating a slider with a new range, provide a function to modify the range of an existing uiSlider.
This commit is contained in:
parent
17486fd175
commit
82bf34abe4
|
@ -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;
|
||||
|
|
1
ui.h
1
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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue