[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