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.

This commit is contained in:
2013-08-31 04:11:50 +00:00
parent f4f4dac523
commit 3d0e56e8d9
3 changed files with 21 additions and 12 deletions

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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);