Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Vogiatzis <Gvgeo>2019-04-25 19:10:41 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-04-25 19:19:54 +0300
commit4d1128872ecfe5f5b0fb794d2562a26f8b3b76ad (patch)
tree62db953dbb476f2bd38f0d91a0c4c5a76aac8207 /source/blender/editors/screen/screen_geometry.c
parent7f45e79e1abf1be1e2ee2c16428d94e92d2e850a (diff)
UI: keep timeline collapsed to header size when resizing window
This restores functionality lost with e8c9e85401ef. Differential Revision: https://developer.blender.org/D4714
Diffstat (limited to 'source/blender/editors/screen/screen_geometry.c')
-rw-r--r--source/blender/editors/screen/screen_geometry.c77
1 files changed, 47 insertions, 30 deletions
diff --git a/source/blender/editors/screen/screen_geometry.c b/source/blender/editors/screen/screen_geometry.c
index a0d9c232195..25855382307 100644
--- a/source/blender/editors/screen/screen_geometry.c
+++ b/source/blender/editors/screen/screen_geometry.c
@@ -160,7 +160,6 @@ void screen_geom_vertices_scale(const wmWindow *win, bScreen *sc)
WM_window_rect_calc(win, &window_rect);
WM_window_screen_rect_calc(win, &screen_rect);
- const int headery_init = ED_area_headersize();
const int screen_size_x = BLI_rcti_size_x(&screen_rect);
const int screen_size_y = BLI_rcti_size_y(&screen_rect);
ScrVert *sv = NULL;
@@ -192,37 +191,55 @@ void screen_geom_vertices_scale(const wmWindow *win, bScreen *sc)
sv->vec.y = screen_rect.ymin + round_fl_to_short((sv->vec.y - min[1]) * facy);
CLAMP(sv->vec.y, screen_rect.ymin, screen_rect.ymax - 1);
}
- }
-
- /* test for collapsed areas. This could happen in some blender version... */
- /* ton: removed option now, it needs Context... */
-
- /* make each window at least ED_area_headersize() high */
- for (sa = sc->areabase.first; sa; sa = sa->next) {
- int headery = headery_init;
- /* adjust headery if verts are along the edge of window */
- if (sa->v1->vec.y > window_rect.ymin) {
- headery += U.pixelsize;
- }
- if (sa->v2->vec.y < (window_rect.ymax - 1)) {
- headery += U.pixelsize;
+ /* test for collapsed areas. This could happen in some blender version... */
+ /* ton: removed option now, it needs Context... */
+
+ int headery = ED_area_headersize() + (U.pixelsize * 2);
+
+ if (facy > 1) {
+ /* Keep timeline small in video edit workspace. */
+ for (sa = sc->areabase.first; sa; sa = sa->next) {
+ if (sa->spacetype == SPACE_ACTION && sa->v1->vec.y == screen_rect.ymin &&
+ screen_geom_area_height(sa) <= headery * facy + 1) {
+ ScrEdge *se = BKE_screen_find_edge(sc, sa->v2, sa->v3);
+ if (se) {
+ const int yval = sa->v1->vec.y + headery - 1;
+
+ screen_geom_select_connected_edge(win, se);
+
+ /* all selected vertices get the right offset */
+ for (sv = sc->vertbase.first; sv; sv = sv->next) {
+ /* if is a collapsed area */
+ if (sv != sa->v1 && sv != sa->v4) {
+ if (sv->flag) {
+ sv->vec.y = yval;
+ }
+ }
+ }
+ }
+ }
+ }
}
-
- if (screen_geom_area_height(sa) < headery) {
- /* lower edge */
- ScrEdge *se = BKE_screen_find_edge(sc, sa->v4, sa->v1);
- if (se && sa->v1 != sa->v2) {
- const int yval = sa->v2->vec.y - headery + 1;
-
- screen_geom_select_connected_edge(win, se);
-
- /* all selected vertices get the right offset */
- for (sv = sc->vertbase.first; sv; sv = sv->next) {
- /* if is a collapsed area */
- if (sv != sa->v2 && sv != sa->v3) {
- if (sv->flag) {
- sv->vec.y = yval;
+ if (facy < 1) {
+ /* make each window at least ED_area_headersize() high */
+ for (sa = sc->areabase.first; sa; sa = sa->next) {
+ if (screen_geom_area_height(sa) < headery) {
+ /* lower edge */
+ ScrEdge *se = BKE_screen_find_edge(sc, sa->v4, sa->v1);
+ if (se && sa->v1 != sa->v2) {
+ const int yval = sa->v2->vec.y - headery + 1;
+
+ screen_geom_select_connected_edge(win, se);
+
+ /* all selected vertices get the right offset */
+ for (sv = sc->vertbase.first; sv; sv = sv->next) {
+ /* if is not a collapsed area */
+ if (sv != sa->v2 && sv != sa->v3) {
+ if (sv->flag) {
+ sv->vec.y = yval;
+ }
+ }
}
}
}