diff options
author | Hans Goudey <h.goudey@me.com> | 2020-09-15 19:39:25 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2020-09-15 19:39:25 +0300 |
commit | bedbd8655ed1d331aeaf756874c46dbed93168a1 (patch) | |
tree | 418b4b78b8cb4ed8f12963050ce11375d3086f6e /source/blender/editors/space_buttons | |
parent | 8bcdcab659fb688d976a50d892dcb4285ff2a180 (diff) |
Property Search: Quick start and clear operators
`ctrl-F` to start the search is obviously necessary, but the clear
operator, `alt-F` requires some of explanation. First, it maps nicely
to the paradigm of "key to set, alt-key to clear," which makes it
unobtrusive. Second, it can be a quicker way to clear the search than
moving the mouse to the top. Finally, in the future, it could a reset
the panels to their expansion before the search started.
Differential Revision: https://developer.blender.org/D8857
Diffstat (limited to 'source/blender/editors/space_buttons')
-rw-r--r-- | source/blender/editors/space_buttons/buttons_intern.h | 2 | ||||
-rw-r--r-- | source/blender/editors/space_buttons/buttons_ops.c | 60 | ||||
-rw-r--r-- | source/blender/editors/space_buttons/space_buttons.c | 2 |
3 files changed, 64 insertions, 0 deletions
diff --git a/source/blender/editors/space_buttons/buttons_intern.h b/source/blender/editors/space_buttons/buttons_intern.h index 76a4d72057f..a5419fea5ca 100644 --- a/source/blender/editors/space_buttons/buttons_intern.h +++ b/source/blender/editors/space_buttons/buttons_intern.h @@ -89,6 +89,8 @@ extern const char *buttons_context_dir[]; /* doc access */ void buttons_texture_context_compute(const struct bContext *C, struct SpaceProperties *sbuts); /* buttons_ops.c */ +void BUTTONS_OT_start_filter(struct wmOperatorType *ot); +void BUTTONS_OT_clear_filter(struct wmOperatorType *ot); void BUTTONS_OT_toggle_pin(struct wmOperatorType *ot); void BUTTONS_OT_file_browse(struct wmOperatorType *ot); void BUTTONS_OT_directory_browse(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c index 2e6ad82ef08..f21bedfb366 100644 --- a/source/blender/editors/space_buttons/buttons_ops.c +++ b/source/blender/editors/space_buttons/buttons_ops.c @@ -38,6 +38,7 @@ #include "BKE_context.h" #include "BKE_main.h" #include "BKE_report.h" +#include "BKE_screen.h" #include "WM_api.h" #include "WM_types.h" @@ -53,6 +54,65 @@ #include "buttons_intern.h" /* own include */ /* -------------------------------------------------------------------- */ +/** \name Start / Clear Seach Filter Operators + * + * \note Almost a duplicate of the file browser operator #FILE_OT_start_filter. + * \{ */ + +static int buttons_start_filter_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceProperties *space = CTX_wm_space_properties(C); + ScrArea *area = CTX_wm_area(C); + ARegion *region = BKE_area_find_region_type(area, RGN_TYPE_HEADER); + + ARegion *region_ctx = CTX_wm_region(C); + CTX_wm_region_set(C, region); + UI_textbutton_activate_rna(C, region, space, "search_filter"); + CTX_wm_region_set(C, region_ctx); + + return OPERATOR_FINISHED; +} + +void BUTTONS_OT_start_filter(struct wmOperatorType *ot) +{ + /* Identifiers. */ + ot->name = "Filter"; + ot->description = "Start entering filter text"; + ot->idname = "BUTTONS_OT_start_filter"; + + /* Callbacks. */ + ot->exec = buttons_start_filter_exec; + ot->poll = ED_operator_buttons_active; +} + +static int buttons_clear_filter_exec(bContext *C, wmOperator *UNUSED(op)) +{ + SpaceProperties *space = CTX_wm_space_properties(C); + + space->runtime->search_string[0] = '\0'; + + ScrArea *area = CTX_wm_area(C); + ED_region_search_filter_update(area, CTX_wm_region(C)); + ED_area_tag_redraw(area); + + return OPERATOR_FINISHED; +} + +void BUTTONS_OT_clear_filter(struct wmOperatorType *ot) +{ + /* Identifiers. */ + ot->name = "Clear Filter"; + ot->description = "Clear the search filter"; + ot->idname = "BUTTONS_OT_clear_filter"; + + /* Callbacks. */ + ot->exec = buttons_clear_filter_exec; + ot->poll = ED_operator_buttons_active; +} + +/** \} */ + +/* -------------------------------------------------------------------- */ /** \name Pin ID Operator * \{ */ diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 59723fb1926..a12b7bddf9f 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -329,6 +329,8 @@ static void buttons_main_region_listener(wmWindow *UNUSED(win), static void buttons_operatortypes(void) { + WM_operatortype_append(BUTTONS_OT_start_filter); + WM_operatortype_append(BUTTONS_OT_clear_filter); WM_operatortype_append(BUTTONS_OT_toggle_pin); WM_operatortype_append(BUTTONS_OT_context_menu); WM_operatortype_append(BUTTONS_OT_file_browse); |