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.
This commit is contained in:
Brecht Van Lommel 2013-12-18 12:02:31 +01:00
parent 7214001cdb
commit f92bb64505
Notes: blender-bot 2023-02-14 11:28:43 +01:00
Referenced by issue #37843, Split/join tab is missing after creating a new python console
3 changed files with 9 additions and 4 deletions

View File

@ -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));
}

View File

@ -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;

View File

@ -365,6 +365,7 @@ enum {
/* region do_draw */
#define RGN_DRAW 1
#define RGN_DRAW_PARTIAL 2
#define RGN_DRAWING 4
#endif