diff options
-rw-r--r-- | source/blender/editors/interface/interface.c | 6 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index adb2e0e3b23..286cb1571bd 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -893,6 +893,12 @@ bool UI_but_active_only_ex( } } if ((activate == true) || (found == false)) { + /* There might still be another active button. */ + uiBut *old_active = ui_region_find_active_but(region); + if (old_active) { + ui_but_active_free(C, old_active); + } + ui_but_activate_event((bContext *)C, region, but); } else if ((found == true) && (isactive == false)) { diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 21cadec0d5f..bcb4f7c672f 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -8001,6 +8001,9 @@ static void button_activate_init(bContext *C, { uiHandleButtonData *data; + /* Only ever one active button! */ + BLI_assert(ui_region_find_active_but(region) == NULL); + /* setup struct */ data = MEM_callocN(sizeof(uiHandleButtonData), "uiHandleButtonData"); data->wm = CTX_wm_manager(C); |