diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-08-31 08:11:50 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-08-31 08:11:50 +0400 |
commit | 3d0e56e8d92702d81169e5f673d6ed3426e71a3d (patch) | |
tree | 397afe9efa701546727fad9f51e0fe09a13ab429 | |
parent | f4f4dac523e01362cee06530fc3608ad28367a59 (diff) |
fix for ui glitch, pressing backspace over a button to reset to the default value didnt work for the uilist text button (others too), missing redraw.
-rw-r--r-- | source/blender/editors/interface/interface.c | 7 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 24 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_intern.h | 2 |
3 files changed, 21 insertions, 12 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index cca696bf5ca..5a195c10f72 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -2047,13 +2047,14 @@ bool ui_set_but_string(bContext *C, uiBut *but, const char *str) return false; } -void ui_set_but_default(bContext *C, short all) +void ui_set_but_default(bContext *C, const bool all) { + const char *opstring = "UI_OT_reset_default_button"; PointerRNA ptr; - WM_operator_properties_create(&ptr, "UI_OT_reset_default_button"); + WM_operator_properties_create(&ptr, opstring); RNA_boolean_set(&ptr, "all", all); - WM_operator_name_call(C, "UI_OT_reset_default_button", WM_OP_EXEC_DEFAULT, &ptr); + WM_operator_name_call(C, opstring, WM_OP_EXEC_DEFAULT, &ptr); WM_operator_properties_free(&ptr); } diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index d3dd4347d9f..781c1ef22bb 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -5400,13 +5400,6 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, const wmEvent * return WM_UI_HANDLER_BREAK; } - /* reset to default */ - /* XXX hardcoded keymap check.... */ - else if (event->type == BACKSPACEKEY && event->val == KM_PRESS) { - /* ctrl+backspace = reset active button; backspace = reset a whole array*/ - if (!(ELEM3(but->type, HSVCIRCLE, HSVCUBE, HISTOGRAM))) - ui_set_but_default(C, !event->ctrl); - } /* handle menu */ else if (event->type == RIGHTMOUSE && event->val == KM_PRESS) { /* RMB has two options now */ @@ -5533,7 +5526,22 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, const wmEvent * case BUT_EXTRA: break; } - + + + /* reset to default (generic function, only use if not handled by switch above) */ + /* XXX hardcoded keymap check.... */ + if (data->state == BUTTON_STATE_HIGHLIGHT) { + if ((retval == WM_UI_HANDLER_CONTINUE) && + (event->type == BACKSPACEKEY && event->val == KM_PRESS)) + { + /* ctrl+backspace = reset active button; backspace = reset a whole array*/ + ui_set_but_default(C, !event->ctrl); + ED_region_tag_redraw(data->region); + retval = WM_UI_HANDLER_BREAK; + } + } + + return retval; } diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index d2a8c47b347..0b02a1a5db4 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -393,7 +393,7 @@ extern bool ui_set_but_string(struct bContext *C, uiBut *but, const char *str); extern bool ui_set_but_string_eval_num(struct bContext *C, uiBut *but, const char *str, double *value); extern int ui_get_but_string_max_length(uiBut *but); -extern void ui_set_but_default(struct bContext *C, short all); +extern void ui_set_but_default(struct bContext *C, const bool all); extern void ui_check_but(uiBut *but); extern bool ui_is_but_float(uiBut *but); |