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 */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to