diff --git a/libobs/obs-properties.c b/libobs/obs-properties.c index cfb861562..ff7ab514b 100644 --- a/libobs/obs-properties.c +++ b/libobs/obs-properties.c @@ -34,6 +34,7 @@ struct int_data { struct list_item { char *name; + bool disabled; union { char *str; @@ -525,7 +526,7 @@ void obs_property_list_clear(obs_property_t p) static size_t add_item(struct list_data *data, const char *name, const void *val) { - struct list_item item; + struct list_item item = { NULL }; item.name = bstrdup(name); if (data->format == OBS_COMBO_FORMAT_INT) @@ -580,6 +581,21 @@ size_t obs_property_list_item_count(obs_property_t p) return data ? data->items.num : 0; } +bool obs_property_list_item_disabled(obs_property_t p, size_t idx) +{ + struct list_data *data = get_list_data(p); + return (data && idx < data->items.num) ? + data->items.array[idx].disabled : false; +} + +void obs_property_list_item_disable(obs_property_t p, size_t idx, bool disabled) +{ + struct list_data *data = get_list_data(p); + if (!data || idx >= data->items.num) + return; + data->items.array[idx].disabled = disabled; +} + const char *obs_property_list_item_name(obs_property_t p, size_t idx) { struct list_data *data = get_list_data(p); diff --git a/libobs/obs-properties.h b/libobs/obs-properties.h index d3db9a26c..ed956fc49 100644 --- a/libobs/obs-properties.h +++ b/libobs/obs-properties.h @@ -166,6 +166,10 @@ EXPORT size_t obs_property_list_add_int(obs_property_t p, EXPORT size_t obs_property_list_add_float(obs_property_t p, const char *name, double val); +EXPORT void obs_property_list_item_disable(obs_property_t p, size_t idx, + bool disabled); +EXPORT bool obs_property_list_item_disabled(obs_property_t p, size_t idx); + EXPORT void obs_property_list_remove(obs_property_t p, size_t idx); EXPORT size_t obs_property_list_item_count(obs_property_t p);