[Bf-blender-cvs] [63f54f6d8de] topbar: Fix scale glitches on startup & DPI change

Julian Eisel noreply at git.blender.org
Tue Jul 18 20:52:17 CEST 2017


Commit: 63f54f6d8dec6dc94edbf76fa5fd1a7f6b6f5288
Author: Julian Eisel
Date:   Tue Jul 18 20:49:14 2017 +0200
Branches: topbar
https://developer.blender.org/rB63f54f6d8dec6dc94edbf76fa5fd1a7f6b6f5288

Fix scale glitches on startup & DPI change

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

M	source/blender/editors/screen/area.c
M	source/blender/editors/screen/screen_edit.c
M	source/blender/editors/screen/screen_intern.h

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

diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 32c78bb9d0e..39020736911 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -1480,7 +1480,7 @@ static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ListBase *hand
 	}
 }
 
-void screen_area_update_region_sizes(wmWindow *win, ScrArea *area)
+void screen_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *area)
 {
 	rcti rect = area->totrct;
 
@@ -1488,6 +1488,11 @@ void screen_area_update_region_sizes(wmWindow *win, ScrArea *area)
 	region_rect_recursive(win, area, area->regionbase.first, &rect, 0, false);
 	for (ARegion *ar = area->regionbase.first; ar; ar = ar->next) {
 		region_subwindow(win, ar, false);
+
+		/* region size may have changed, init does necessary adjustments */
+		if (ar->type->init) {
+			ar->type->init(wm, ar);
+		}
 	}
 
 	/* XXX hack to force drawing */
@@ -2138,6 +2143,7 @@ void ED_region_header(const bContext *C, ARegion *ar)
 	int maxco, xco, yco;
 	int headery = ED_area_headersize();
 	const int start_ofs = 0.4f * UI_UNIT_X;
+	bool region_layout_based = ar->flag & RGN_RESIZE_LAYOUT_BASED;
 
 	/* clear */
 	UI_ThemeClearColor((ED_screen_area_active(C) || (ar->regiontype != RGN_TYPE_HEADER)) ? TH_BACK : TH_HEADERDESEL);
@@ -2171,7 +2177,7 @@ void ED_region_header(const bContext *C, ARegion *ar)
 		if (xco > maxco)
 			maxco = xco;
 
-		if (ar->flag & RGN_RESIZE_LAYOUT_BASED) {
+		if (region_layout_based) {
 			ScrArea *sa = CTX_wm_area(C);
 
 			ar->sizex = maxco + start_ofs;
@@ -2185,7 +2191,7 @@ void ED_region_header(const bContext *C, ARegion *ar)
 	}
 
 	/* always as last  */
-	UI_view2d_totRect_set(&ar->v2d, maxco + UI_UNIT_X + 80, headery);
+	UI_view2d_totRect_set(&ar->v2d, maxco + (region_layout_based ? UI_UNIT_X + 80 : 0), headery);
 
 	/* restore view matrix? */
 	UI_view2d_view_restore(C);
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index 823ea2904f0..43c5270bd5b 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -830,7 +830,7 @@ void ED_screen_ensure_updated(wmWindowManager *wm, wmWindow *win, bScreen *scree
 	else {
 		ED_screen_areas_iter(win, screen, area) {
 			if (area->flag & AREA_FLAG_REGION_SIZE_UPDATE) {
-				screen_area_update_region_sizes(win, area);
+				screen_area_update_region_sizes(wm, win, area);
 				break;
 			}
 		}
diff --git a/source/blender/editors/screen/screen_intern.h b/source/blender/editors/screen/screen_intern.h
index 5a7557a529f..39c3d72af6a 100644
--- a/source/blender/editors/screen/screen_intern.h
+++ b/source/blender/editors/screen/screen_intern.h
@@ -43,7 +43,7 @@ struct Main;
 /* area.c */
 void        ED_area_data_copy(ScrArea *sa_dst, ScrArea *sa_src, const bool do_free);
 void        ED_area_data_swap(ScrArea *sa1, ScrArea *sa2);
-void        screen_area_update_region_sizes(wmWindow *win, ScrArea *area);
+void        screen_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *area);
 void        region_toggle_hidden(struct bContext *C, ARegion *ar, const bool do_fade);
 
 /* screen_edit.c */




More information about the Bf-blender-cvs mailing list