Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-07-01 04:46:19 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-07-01 04:47:01 +0300
commit26e05cf67adb142086e9aa2655424144d14d8913 (patch)
tree56dd4be3340a2b71c20313151dd2d9060644dcbb /source/blender/editors/interface
parentbbb3500c97167c070a76373e023bdd8820d3ca41 (diff)
Fix T66246: Key accelerators crashing on save dialog
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r--source/blender/editors/interface/interface.c3
-rw-r--r--source/blender/editors/interface/interface_handlers.c8
-rw-r--r--source/blender/editors/interface/interface_ops.c2
3 files changed, 7 insertions, 6 deletions
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;