[Bf-blender-cvs] [26e05cf67ad] master: Fix T66246: Key accelerators crashing on save dialog
Campbell Barton
noreply at git.blender.org
Mon Jul 1 03:47:37 CEST 2019
Commit: 26e05cf67adb142086e9aa2655424144d14d8913
Author: Campbell Barton
Date: Mon Jul 1 11:46:19 2019 +1000
Branches: master
https://developer.blender.org/rB26e05cf67adb142086e9aa2655424144d14d8913
Fix T66246: Key accelerators crashing on save dialog
===================================================================
M source/blender/editors/include/UI_interface.h
M source/blender/editors/interface/interface.c
M source/blender/editors/interface/interface_handlers.c
M source/blender/editors/interface/interface_ops.c
===================================================================
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index bf728ec7772..3b2a80c1e05 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -723,7 +723,7 @@ bool UI_block_active_only_flagged_buttons(const struct bContext *C,
struct ARegion *ar,
struct uiBlock *block);
-void UI_but_execute(const struct bContext *C, uiBut *but);
+void UI_but_execute(const struct bContext *C, struct ARegion *ar, uiBut *but);
bool UI_but_online_manual_id(const uiBut *but,
char *r_str,
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index 697c289491a..a2138a1b3a5 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -896,9 +896,8 @@ bool UI_block_active_only_flagged_buttons(const bContext *C, ARegion *ar, uiBloc
}
/* simulate button click */
-void UI_but_execute(const bContext *C, uiBut *but)
+void UI_but_execute(const bContext *C, ARegion *ar, uiBut *but)
{
- ARegion *ar = CTX_wm_region(C);
void *active_back;
ui_but_execute_begin((bContext *)C, ar, but, &active_back);
/* Value is applied in begin. No further action required. */
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index e59431d265d..87d4bcbd1e8 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -1347,7 +1347,7 @@ static bool ui_drag_toggle_set_xy_xy(
/* is it pressed? */
int pushed_state_but = ui_drag_toggle_but_pushed_state(C, but);
if (pushed_state_but != pushed_state) {
- UI_but_execute(C, but);
+ UI_but_execute(C, ar, but);
if (do_check) {
ui_but_update_edited(but);
}
@@ -7939,6 +7939,8 @@ void ui_but_execute_begin(struct bContext *UNUSED(C),
uiBut *but,
void **active_back)
{
+ BLI_assert(ar != NULL);
+ BLI_assert(BLI_findindex(&ar->uiblocks, but->block) != -1);
/* note: ideally we would not have to change 'but->active' however
* some functions we call don't use data (as they should be doing) */
uiHandleButtonData *data;
@@ -9269,7 +9271,7 @@ static int ui_handle_menu_event(bContext *C,
for (but = block->buttons.first; but; but = but->next) {
if (!(but->flag & UI_BUT_DISABLED) && but->menu_key == event->type) {
if (but->type == UI_BTYPE_BUT) {
- UI_but_execute(C, but);
+ UI_but_execute(C, ar, but);
}
else {
ui_handle_button_activate_by_type(C, ar, but);
@@ -9350,7 +9352,7 @@ static int ui_handle_menu_event(bContext *C,
ar, UI_BUT_ACTIVE_DEFAULT, UI_HIDDEN);
if ((but_default != NULL) && (but_default->active == NULL)) {
if (but_default->type == UI_BTYPE_BUT) {
- UI_but_execute(C, but_default);
+ UI_but_execute(C, ar, but_default);
}
else {
ui_handle_button_activate_by_type(C, ar, but_default);
diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c
index aa7e7f97478..1df70573acb 100644
--- a/source/blender/editors/interface/interface_ops.c
+++ b/source/blender/editors/interface/interface_ops.c
@@ -1545,7 +1545,7 @@ static int ui_button_press_invoke(bContext *C, wmOperator *op, const wmEvent *ev
* having this avoids a minor drawing glitch. */
void *but_optype = but->optype;
- UI_but_execute(C, but);
+ UI_but_execute(C, ar, but);
but->optype = but_optype;
More information about the Bf-blender-cvs
mailing list