[Bf-blender-cvs] [77e9193c231] master: Fix invalid context when refreshing popups

Julian Eisel noreply at git.blender.org
Mon Apr 9 19:31:45 CEST 2018


Commit: 77e9193c23176a8143c1a01434b57594e0b0a8f4
Author: Julian Eisel
Date:   Mon Apr 9 19:24:31 2018 +0200
Branches: master
https://developer.blender.org/rB77e9193c23176a8143c1a01434b57594e0b0a8f4

Fix invalid context when refreshing popups

Patch D2759 by @raa, with minor edits by me.

===================================================================

M	source/blender/editors/interface/interface_region_popup.c

===================================================================

diff --git a/source/blender/editors/interface/interface_region_popup.c b/source/blender/editors/interface/interface_region_popup.c
index 15053f0d8ca..4714efdb4a7 100644
--- a/source/blender/editors/interface/interface_region_popup.c
+++ b/source/blender/editors/interface/interface_region_popup.c
@@ -303,19 +303,36 @@ static void ui_block_position(wmWindow *window, ARegion *butregion, uiBut *but,
 
 static void ui_block_region_draw(const bContext *C, ARegion *ar)
 {
+	ScrArea *ctx_area = CTX_wm_area(C);
+	ARegion *ctx_region = CTX_wm_region(C);
 	uiBlock *block;
 
 	if (ar->do_draw & RGN_DRAW_REFRESH_UI) {
+		ScrArea *handle_ctx_area;
+		ARegion *handle_ctx_region;
 		uiBlock *block_next;
+
 		ar->do_draw &= ~RGN_DRAW_REFRESH_UI;
 		for (block = ar->uiblocks.first; block; block = block_next) {
 			block_next = block->next;
 			if (block->handle->can_refresh) {
+				handle_ctx_area = block->handle->ctx_area;
+				handle_ctx_region = block->handle->ctx_region;
+
+				if (handle_ctx_area) {
+					CTX_wm_area_set((bContext *)C, handle_ctx_area);
+				}
+				if (handle_ctx_region) {
+					CTX_wm_region_set((bContext *)C, handle_ctx_region);
+				}
 				ui_popup_block_refresh((bContext *)C, block->handle, NULL, NULL);
 			}
 		}
 	}
 
+	CTX_wm_area_set((bContext *)C, ctx_area);
+	CTX_wm_region_set((bContext *)C, ctx_region);
+
 	for (block = ar->uiblocks.first; block; block = block->next)
 		UI_block_draw(C, block);
 }



More information about the Bf-blender-cvs mailing list