]> git.sur5r.net Git - i3/i3/blobdiff - src/render.c
explicitly set filenames to $(basename __FILE__)
[i3/i3] / src / render.c
index b55c089ae4c5c53b42a2658d0725f0ce4160b441..f933433f3032073969b202079c4059567a58a67d 100644 (file)
@@ -1,3 +1,4 @@
+#line 2 "render.c"
 /*
  * vim:ts=4:sw=4:expandtab
  *
@@ -106,9 +107,9 @@ static void render_l_output(Con *con) {
  */
 void render_con(Con *con, bool render_fullscreen) {
     int children = con_num_children(con);
-    DLOG("Rendering %snode %p / %s / layout %d / children %d / orient %d\n",
+    DLOG("Rendering %snode %p / %s / layout %d / children %d\n",
          (render_fullscreen ? "fullscreen " : ""), con, con->name, con->layout,
-         children, con->orientation);
+         children);
 
     /* Copy container rect, subtract container border */
     /* This is the actually usable space inside this container for clients */
@@ -143,8 +144,17 @@ void render_con(Con *con, bool render_fullscreen) {
         inset->width -= (2 * con->border_width);
         inset->height -= (2 * con->border_width);
 
-        /* Obey the aspect ratio, if any */
-        if (con->proportional_height != 0 &&
+        /* Obey the aspect ratio, if any, unless we are in fullscreen mode.
+         *
+         * The spec isn’t explicit on whether the aspect ratio hints should be
+         * respected during fullscreen mode. Other WMs such as Openbox don’t do
+         * that, and this post suggests that this is the correct way to do it:
+         * http://mail.gnome.org/archives/wm-spec-list/2003-May/msg00007.html
+         *
+         * Ignoring aspect ratio during fullscreen was necessary to fix MPlayer
+         * subtitle rendering, see http://bugs.i3wm.org/594 */
+        if (!render_fullscreen &&
+            con->proportional_height != 0 &&
             con->proportional_width != 0) {
             double new_height = inset->height + 1;
             int new_width = inset->width;
@@ -199,11 +209,11 @@ void render_con(Con *con, bool render_fullscreen) {
 
     /* precalculate the sizes to be able to correct rounding errors */
     int sizes[children];
-    if (con->layout == L_DEFAULT && children > 0) {
+    if ((con->layout == L_SPLITH || con->layout == L_SPLITV) && children > 0) {
         assert(!TAILQ_EMPTY(&con->nodes_head));
         Con *child;
         int i = 0, assigned = 0;
-        int total = con->orientation == HORIZ ? rect.width : rect.height;
+        int total = con_orientation(con) == HORIZ ? rect.width : rect.height;
         TAILQ_FOREACH(child, &(con->nodes_head), nodes) {
             double percentage = child->percent > 0.0 ? child->percent : 1.0 / children;
             assigned += sizes[i++] = percentage * total;
@@ -280,8 +290,8 @@ void render_con(Con *con, bool render_fullscreen) {
         assert(children > 0);
 
         /* default layout */
-        if (con->layout == L_DEFAULT) {
-            if (con->orientation == HORIZ) {
+        if (con->layout == L_SPLITH || con->layout == L_SPLITV) {
+            if (con->layout == L_SPLITH) {
                 child->rect.x = x;
                 child->rect.y = y;
                 child->rect.width = sizes[i];