diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-04-29 13:24:08 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-04-29 23:11:12 +0300 |
commit | 7a9f64e6657a231289f56b0a8c9949c8f7a23c59 (patch) | |
tree | efee3c4ac1988ad96d743f1d82e7a677096ca0c3 /source/blender/editors/screen/screen_edit.c | |
parent | 0c512a6f951e36e29d2f6865cc975f7e40c4d31d (diff) |
UI: better support for dynamically sized regions in topbar.
Dynamically sized regions in the topbar were flickering due to only updating
their size after redraws. Now there is an optional layout() callback for
all regions in an area to do UI layout first, then refresh the region layout,
and then do the actual drawing for each region.
Task T54753
Diffstat (limited to 'source/blender/editors/screen/screen_edit.c')
-rw-r--r-- | source/blender/editors/screen/screen_edit.c | 33 |
1 files changed, 0 insertions, 33 deletions
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index c7d1605cbbf..1cadefadd5c 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -835,36 +835,6 @@ void ED_screen_refresh(wmWindowManager *wm, wmWindow *win) screen->context = ed_screen_context; } -static bool screen_regions_need_size_refresh( - const wmWindow *win, const bScreen *screen) -{ - ED_screen_areas_iter(win, screen, area) { - if (area->flag & AREA_FLAG_REGION_SIZE_UPDATE) { - return true; - } - } - - return false; -} - -static void screen_refresh_region_sizes_only( - wmWindowManager *wm, wmWindow *win, - bScreen *screen) -{ - const int window_size_x = WM_window_pixels_x(win); - const int window_size_y = WM_window_pixels_y(win); - const int screen_size_x = WM_window_screen_pixels_x(win); - const int screen_size_y = WM_window_screen_pixels_y(win); - - screen_vertices_scale(win, screen, window_size_x, window_size_y, screen_size_x, screen_size_y); - - ED_screen_areas_iter(win, screen, area) { - screen_area_update_region_sizes(wm, win, area); - /* XXX hack to force drawing */ - ED_area_tag_redraw(area); - } -} - /* file read, set all screens, ... */ void ED_screens_initialize(wmWindowManager *wm) { @@ -887,9 +857,6 @@ void ED_screen_ensure_updated(wmWindowManager *wm, wmWindow *win, bScreen *scree if (screen->do_refresh) { ED_screen_refresh(wm, win); } - else if (screen_regions_need_size_refresh(win, screen)) { - screen_refresh_region_sizes_only(wm, win, screen); - } } |