Move aspect_ratio from Con to Window.

relates to #665
This commit is contained in:
Ingo Bürk 2015-08-30 23:07:25 +02:00
parent f43a15acde
commit 344514bca5
5 changed files with 13 additions and 12 deletions

View File

@ -418,6 +418,9 @@ struct Window {
/* minimum increment size specified for the window (in pixels) */ /* minimum increment size specified for the window (in pixels) */
int width_increment; int width_increment;
int height_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; double percent;
/* aspect ratio from WM_NORMAL_HINTS (MPlayer uses this for example) */
double aspect_ratio;
/* the x11 border pixel attribute */ /* the x11 border pixel attribute */
int border_width; int border_width;
int current_border_width; int current_border_width;

View File

@ -602,7 +602,7 @@ static void cmd_resize_floating(I3_CMD, char *way, char *direction, Con *floatin
const i3Window *window = focused_con->window; const i3Window *window = focused_con->window;
if (window != NULL) { if (window != NULL) {
if (strcmp(direction, "up") == 0 || strcmp(direction, "down") == 0 || if (strcmp(direction, "up") == 0 || strcmp(direction, "down") == 0 ||
strcmp(direction, "height") == 0) { strcmp(direction, "height") == 0) {
if (px < 0) if (px < 0)
px = (-px < window->height_increment) ? -window->height_increment : px; px = (-px < window->height_increment) ? -window->height_increment : px;
else else

View File

@ -39,15 +39,16 @@ Con *con_new_skeleton(Con *parent, i3Window *window) {
Con *new = scalloc(1, sizeof(Con)); Con *new = scalloc(1, sizeof(Con));
new->on_remove_child = con_on_remove_child; new->on_remove_child = con_on_remove_child;
TAILQ_INSERT_TAIL(&all_cons, new, all_cons); TAILQ_INSERT_TAIL(&all_cons, new, all_cons);
new->aspect_ratio = 0.0;
new->type = CT_CON; new->type = CT_CON;
new->window = window; new->window = window;
new->border_style = config.default_border; new->border_style = config.default_border;
new->current_border_width = -1; new->current_border_width = -1;
if (window) if (window) {
new->depth = window->depth; new->depth = window->depth;
else new->window->aspect_ratio = 0.0;
} else {
new->depth = XCB_COPY_FROM_PARENT; new->depth = XCB_COPY_FROM_PARENT;
}
DLOG("opening window\n"); DLOG("opening window\n");
TAILQ_INIT(&(new->floating_head)); TAILQ_INIT(&(new->floating_head));

View File

@ -999,8 +999,8 @@ static bool handle_normal_hints(void *data, xcb_connection_t *conn, uint8_t stat
} else } else
goto render_and_return; goto render_and_return;
if (fabs(con->aspect_ratio - aspect_ratio) > DBL_EPSILON) { if (fabs(con->window->aspect_ratio - aspect_ratio) > DBL_EPSILON) {
con->aspect_ratio = aspect_ratio; con->window->aspect_ratio = aspect_ratio;
changed = true; changed = true;
} }

View File

@ -172,14 +172,14 @@ void render_con(Con *con, bool render_fullscreen) {
* Ignoring aspect ratio during fullscreen was necessary to fix MPlayer * Ignoring aspect ratio during fullscreen was necessary to fix MPlayer
* subtitle rendering, see http://bugs.i3wm.org/594 */ * subtitle rendering, see http://bugs.i3wm.org/594 */
if (!render_fullscreen && 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", 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; double new_height = inset->height + 1;
int new_width = inset->width; int new_width = inset->width;
while (new_height > inset->height) { 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) if (new_height > inset->height)
new_width--; new_width--;