[Bf-blender-cvs] [f92bb64] master: Fix T37843: area split widget missing in python console editor.
Brecht Van Lommel
noreply at git.blender.org
Wed Dec 18 12:04:13 CET 2013
Commit: f92bb6450571d6ac9ed31ccbd9d4d73a2c39b12e
Author: Brecht Van Lommel
Date: Wed Dec 18 12:02:31 2013 +0100
http://developer.blender.org/rBf92bb6450571d6ac9ed31ccbd9d4d73a2c39b12e
Fix T37843: area split widget missing in python console editor.
Python was indirectly causing redraw tags during drawing, which interfered
with the ARegion.drawrct, now ignore these during draw.
===================================================================
M source/blender/blenloader/intern/readfile.c
M source/blender/editors/screen/area.c
M source/blender/makesdna/DNA_screen_types.h
===================================================================
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index f3244a6..97e11d5 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6183,7 +6183,7 @@ static void direct_link_region(FileData *fd, ARegion *ar, int spacetype)
ar->swinid = 0;
ar->type = NULL;
ar->swap = 0;
- ar->do_draw = FALSE;
+ ar->do_draw = 0;
ar->regiontimer = NULL;
memset(&ar->drawrct, 0, sizeof(ar->drawrct));
}
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 2fd3423..a1daa3b 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -419,6 +419,8 @@ void ED_region_do_draw(bContext *C, ARegion *ar)
BLI_rcti_isect(&ar->winrct, &ar->drawrct, &ar->drawrct);
scissor_pad = false;
}
+
+ ar->do_draw |= RGN_DRAWING;
/* note; this sets state, so we can use wmOrtho and friends */
wmSubWindowScissorSet(win, ar->swinid, &ar->drawrct, scissor_pad);
@@ -453,7 +455,7 @@ void ED_region_do_draw(bContext *C, ARegion *ar)
glDisable(GL_BLEND);
#endif
- ar->do_draw = FALSE;
+ ar->do_draw = 0;
memset(&ar->drawrct, 0, sizeof(ar->drawrct));
uiFreeInactiveBlocks(C, &ar->uiblocks);
@@ -469,7 +471,9 @@ void ED_region_do_draw(bContext *C, ARegion *ar)
void ED_region_tag_redraw(ARegion *ar)
{
- if (ar) {
+ /* don't tag redraw while drawing, it shouldn't happen normally
+ * but python scripts can cause this to happen indirectly */
+ if (ar && !(ar->do_draw & RGN_DRAWING)) {
/* zero region means full region redraw */
ar->do_draw = RGN_DRAW;
memset(&ar->drawrct, 0, sizeof(ar->drawrct));
@@ -484,7 +488,7 @@ void ED_region_tag_redraw_overlay(ARegion *ar)
void ED_region_tag_redraw_partial(ARegion *ar, rcti *rct)
{
- if (ar) {
+ if (ar && !(ar->do_draw & RGN_DRAWING)) {
if (!ar->do_draw) {
/* no redraw set yet, set partial region */
ar->do_draw = RGN_DRAW_PARTIAL;
diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h
index 005b0bd..d343b2b 100644
--- a/source/blender/makesdna/DNA_screen_types.h
+++ b/source/blender/makesdna/DNA_screen_types.h
@@ -365,6 +365,7 @@ enum {
/* region do_draw */
#define RGN_DRAW 1
#define RGN_DRAW_PARTIAL 2
+#define RGN_DRAWING 4
#endif
More information about the Bf-blender-cvs
mailing list