diff options
Diffstat (limited to 'source/blender/editors/animation')
-rw-r--r-- | source/blender/editors/animation/anim_filter.c | 5 | ||||
-rw-r--r-- | source/blender/editors/animation/time_scrub_ui.c | 37 |
2 files changed, 25 insertions, 17 deletions
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index 11581adf919..7cf4cb87fc8 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -1173,10 +1173,11 @@ static bool name_matches_dopesheet_filter(bDopeSheet *ads, char *name) } /* if we have a match somewhere, this returns true */ - return found; + return ((ads->flag & ADS_FLAG_INVERT_FILTER) == 0) ? found : !found; } /* fallback/default - just case insensitive, but starts from start of word */ - return BLI_strcasestr(name, ads->searchstr) != NULL; + bool found = BLI_strcasestr(name, ads->searchstr) != NULL; + return ((ads->flag & ADS_FLAG_INVERT_FILTER) == 0) ? found : !found; } /* (Display-)Name-based F-Curve filtering diff --git a/source/blender/editors/animation/time_scrub_ui.c b/source/blender/editors/animation/time_scrub_ui.c index 0615e21c4a5..acbac93b654 100644 --- a/source/blender/editors/animation/time_scrub_ui.c +++ b/source/blender/editors/animation/time_scrub_ui.c @@ -226,23 +226,30 @@ void ED_time_scrub_channel_search_draw(const bContext *C, ARegion *region, bDope immRectf(pos, rect.xmin, rect.ymin, rect.xmax, rect.ymax); immUnbindProgram(); - uiBlock *block = UI_block_begin(C, region, __func__, UI_EMBOSS); - PointerRNA ptr; RNA_pointer_create(&CTX_wm_screen(C)->id, &RNA_DopeSheet, dopesheet, &ptr); - PropertyRNA *prop = RNA_struct_find_property(&ptr, "filter_text"); - - int padding = 2 * UI_DPI_FAC; - uiDefAutoButR(block, - &ptr, - prop, - -1, - "", - ICON_NONE, - rect.xmin + padding, - rect.ymin + padding, - BLI_rcti_size_x(&rect) - 2 * padding, - BLI_rcti_size_y(&rect) - 2 * padding); + + const uiStyle *style = UI_style_get_dpi(); + const float padding_x = 2 * UI_DPI_FAC; + const float padding_y = UI_DPI_FAC; + + uiBlock *block = UI_block_begin(C, region, __func__, UI_EMBOSS); + uiLayout *layout = UI_block_layout(block, + UI_LAYOUT_VERTICAL, + UI_LAYOUT_HEADER, + rect.xmin + padding_x, + rect.ymin + UI_UNIT_Y + padding_y, + BLI_rcti_size_x(&rect) - 2 * padding_x, + 1, + 0, + style); + uiLayoutSetScaleY(layout, (UI_UNIT_Y - padding_y) / UI_UNIT_Y); + UI_block_layout_set_current(block, layout); + UI_block_align_begin(block); + uiItemR(layout, &ptr, "filter_text", 0, "", ICON_NONE); + uiItemR(layout, &ptr, "use_filter_invert", 0, "", ICON_ARROW_LEFTRIGHT); + UI_block_align_end(block); + UI_block_layout_resolve(block, NULL, NULL); UI_block_end(C, block); UI_block_draw(C, block); |