From 344514bca5e9fb216ba930e43369352ee56ba7fe Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ingo=20B=C3=BCrk?= Date: Sun, 30 Aug 2015 23:07:25 +0200 Subject: [PATCH] Move aspect_ratio from Con to Window. relates to #665 --- include/data.h | 6 +++--- src/commands.c | 2 +- src/con.c | 7 ++++--- src/handlers.c | 4 ++-- src/render.c | 6 +++--- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/include/data.h b/include/data.h index d6b99244..d75622ec 100644 --- a/include/data.h +++ b/include/data.h @@ -418,6 +418,9 @@ struct Window { /* minimum increment size specified for the window (in pixels) */ int width_increment; int height_increment; + + /* aspect ratio from WM_NORMAL_HINTS (MPlayer uses this for example) */ + double aspect_ratio; }; /** @@ -579,9 +582,6 @@ struct Con { double percent; - /* aspect ratio from WM_NORMAL_HINTS (MPlayer uses this for example) */ - double aspect_ratio; - /* the x11 border pixel attribute */ int border_width; int current_border_width; diff --git a/src/commands.c b/src/commands.c index 4f726df9..1740286c 100644 --- a/src/commands.c +++ b/src/commands.c @@ -602,7 +602,7 @@ static void cmd_resize_floating(I3_CMD, char *way, char *direction, Con *floatin const i3Window *window = focused_con->window; if (window != NULL) { if (strcmp(direction, "up") == 0 || strcmp(direction, "down") == 0 || - strcmp(direction, "height") == 0) { + strcmp(direction, "height") == 0) { if (px < 0) px = (-px < window->height_increment) ? -window->height_increment : px; else diff --git a/src/con.c b/src/con.c index 3427013d..b1ddf2ac 100644 --- a/src/con.c +++ b/src/con.c @@ -39,15 +39,16 @@ Con *con_new_skeleton(Con *parent, i3Window *window) { Con *new = scalloc(1, sizeof(Con)); new->on_remove_child = con_on_remove_child; TAILQ_INSERT_TAIL(&all_cons, new, all_cons); - new->aspect_ratio = 0.0; new->type = CT_CON; new->window = window; new->border_style = config.default_border; new->current_border_width = -1; - if (window) + if (window) { new->depth = window->depth; - else + new->window->aspect_ratio = 0.0; + } else { new->depth = XCB_COPY_FROM_PARENT; + } DLOG("opening window\n"); TAILQ_INIT(&(new->floating_head)); diff --git a/src/handlers.c b/src/handlers.c index 91817bad..1e7eef1e 100644 --- a/src/handlers.c +++ b/src/handlers.c @@ -999,8 +999,8 @@ static bool handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t stat } else goto render_and_return; - if (fabs(con->aspect_ratio - aspect_ratio) > DBL_EPSILON) { - con->aspect_ratio = aspect_ratio; + if (fabs(con->window->aspect_ratio - aspect_ratio) > DBL_EPSILON) { + con->window->aspect_ratio = aspect_ratio; changed = true; } diff --git a/src/render.c b/src/render.c index 76dfa69c..7ada19eb 100644 --- a/src/render.c +++ b/src/render.c @@ -172,14 +172,14 @@ void render_con(Con *con, bool render_fullscreen) { * Ignoring aspect ratio during fullscreen was necessary to fix MPlayer * subtitle rendering, see http://bugs.i3wm.org/594 */ if (!render_fullscreen && - con->aspect_ratio > 0.0) { + con->window->aspect_ratio > 0.0) { DLOG("aspect_ratio = %f, current width/height are %d/%d\n", - con->aspect_ratio, inset->width, inset->height); + con->window->aspect_ratio, inset->width, inset->height); double new_height = inset->height + 1; int new_width = inset->width; while (new_height > inset->height) { - new_height = (1.0 / con->aspect_ratio) * new_width; + new_height = (1.0 / con->window->aspect_ratio) * new_width; if (new_height > inset->height) new_width--; -- 2.39.2