WIP: Basic Blender Project Support (experimental feature) #107655
|
@ -9678,7 +9678,8 @@ static int ui_handle_list_event(bContext *C, const wmEvent *event, ARegion *regi
|
|||
|
||||
for (int i = 0; i < len; i++) {
|
||||
if (!dyn_data->items_filter_flags ||
|
||||
((dyn_data->items_filter_flags[i] & UILST_FLT_ITEM) ^ filter_exclude))
|
||||
(((dyn_data->items_filter_flags[i] & UILST_FLT_ITEM_NEVER_SHOW) == 0) &&
|
||||
(dyn_data->items_filter_flags[i] & UILST_FLT_ITEM) ^ filter_exclude))
|
||||
{
|
||||
org_order[new_order ? new_order[++org_idx] : ++org_idx] = i;
|
||||
if (i == value) {
|
||||
|
|
|
@ -251,7 +251,7 @@ void UI_list_filter_and_sort_items(uiList *ui_list,
|
|||
const eUIListFilterResult filter_result = item_filter_fn(itemptr, name, i);
|
||||
|
||||
if (filter_result == UI_LIST_ITEM_NEVER_SHOW) {
|
||||
/* Pass. */
|
||||
dyn_data->items_filter_flags[i] = UILST_FLT_ITEM_NEVER_SHOW;
|
||||
}
|
||||
else if (filter_result == UI_LIST_ITEM_FILTER_MATCHES) {
|
||||
dyn_data->items_filter_flags[i] = UILST_FLT_ITEM;
|
||||
|
@ -432,7 +432,8 @@ static void ui_template_list_collect_items(PointerRNA *list_ptr,
|
|||
|
||||
RNA_PROP_BEGIN (list_ptr, itemptr, list_prop) {
|
||||
if (!dyn_data->items_filter_flags ||
|
||||
((dyn_data->items_filter_flags[i] & UILST_FLT_ITEM) ^ filter_exclude))
|
||||
(((dyn_data->items_filter_flags[i] & UILST_FLT_ITEM_NEVER_SHOW) == 0) &&
|
||||
((dyn_data->items_filter_flags[i] & UILST_FLT_ITEM) ^ filter_exclude)))
|
||||
{
|
||||
int new_order_idx;
|
||||
if (dyn_data->items_filter_neworder) {
|
||||
|
|
|
@ -614,7 +614,8 @@ enum {
|
|||
/* WARNING! Those values are used by integer RNA too, which does not handle well values > INT_MAX.
|
||||
* So please do not use 32nd bit here. */
|
||||
enum {
|
||||
UILST_FLT_ITEM = 1 << 30, /* This item has passed the filter process successfully. */
|
||||
UILST_FLT_ITEM_NEVER_SHOW = (1 << 0), /* Filtering returned #UI_LIST_ITEM_NEVER_SHOW. */
|
||||
UILST_FLT_ITEM = 1 << 30, /* This item has passed the filter process successfully. */
|
||||
};
|
||||
|
||||
/** #uiList.filter_flag */
|
||||
|
|
|
@ -615,7 +615,9 @@ static void uilist_filter_items(uiList *ui_list,
|
|||
int t_idx, t_ni, prev_ni;
|
||||
flt_data->items_shown = 0;
|
||||
for (i = 0, shown_idx = 0; i < len; i++) {
|
||||
if ((filter_flags[i] & UILST_FLT_ITEM) ^ filter_exclude) {
|
||||
if (((filter_flags[i] & UILST_FLT_ITEM_NEVER_SHOW) == 0) &&
|
||||
(filter_flags[i] & UILST_FLT_ITEM) ^ filter_exclude)
|
||||
{
|
||||
filter_neworder[shown_idx++] = filter_neworder[i];
|
||||
}
|
||||
}
|
||||
|
@ -642,7 +644,9 @@ static void uilist_filter_items(uiList *ui_list,
|
|||
/* we still have to set flt_data->items_shown... */
|
||||
flt_data->items_shown = 0;
|
||||
for (i = 0; i < len; i++) {
|
||||
if ((filter_flags[i] & UILST_FLT_ITEM) ^ filter_exclude) {
|
||||
if (((filter_flags[i] & UILST_FLT_ITEM_NEVER_SHOW) == 0) &&
|
||||
(filter_flags[i] & UILST_FLT_ITEM) ^ filter_exclude)
|
||||
{
|
||||
flt_data->items_shown++;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue