[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