]> git.madduck.net Git - etc/awesome.git/blobdiff - layout/uselesstile.lua

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

wiki updated
[etc/awesome.git] / layout / uselesstile.lua
index bd365a893f40cdbf70862649b14347a334449461..ee3306067121bc5291f041dfdf4f6189bc972961 100644 (file)
@@ -1,12 +1,12 @@
 
 --[[
-
-     Licensed under GNU General Public License v2
-      * (c) 2014       projektile, worron
-      * (c) 2013       Luke Bonham
-      * (c) 2009       Donald Ephraim Curtis
-      * (c) 2008       Julien Danjolu
-
+                                                  
+     Licensed under GNU General Public License v2 
+      * (c) 2014, projektile, worron              
+      * (c) 2013, Luke Bonham                     
+      * (c) 2009, Donald Ephraim Curtis           
+      * (c) 2008, Julien Danjolu                  
+                                                  
 --]]
 
 local tag       = require("awful.tag")
@@ -37,7 +37,7 @@ end
 
 -- Find geometry for secondary windows column
 local function cut_column(wa, n, index)
-    local width = wa.width / n
+    local width = math.floor(wa.width / n)
     local area = { x = wa.x + (index - 1) * width, y = wa.y, width = width, height = wa.height }
 
     return area
@@ -45,7 +45,7 @@ end
 
 -- Find geometry for certain window in column
 local function cut_row(wa, factor, index, used)
-    local height = wa.height * factor.window[index] / factor.total
+    local height = math.floor(wa.height * factor.window[index] / factor.total)
     local area = { x = wa.x, y = wa.y + used, width = wa.width, height = height }
 
     return area
@@ -85,6 +85,7 @@ local function tile_column(canvas, area, list, useless_gap, transformation, winf
 
     for i, c in ipairs(list) do
         local g = cut_row(area, factor, i, used)
+        if i == #list then g.height = area.height - used end
         used = used + g.height
 
         -- swap workarea dimensions
@@ -94,6 +95,7 @@ local function tile_column(canvas, area, list, useless_gap, transformation, winf
         -- useless gap and border correction
         size_correction(c, g, useless_gap)
 
+
         c:geometry(g)
     end
 end
@@ -161,7 +163,7 @@ local function tile(p, orientation)
     local master_area = {
         x = wa.x,
         y = wa.y,
-        width  = nmaster > 0 and wa.width * mwfact or 0,
+        width  = nmaster > 0 and math.floor(wa.width * mwfact) or 0,
         height = wa.height
     }
 
@@ -179,11 +181,14 @@ local function tile(p, orientation)
     -- get column number for other windows
     local ncol = math.min(tag.getncol(t), #cls_other)
 
+    if ncol == 0 then ncol = 1 end
+
     -- split other windows to column groups
     local last_small_column = ncol - #cls_other % ncol
     local rows_min = math.floor(#cls_other / ncol)
 
     local client_index = 1
+    local used = 0
     for i = 1, ncol do
         local position = transformation.flip and ncol - i + 1 or i
         local rows = i <= last_small_column and rows_min or rows_min + 1
@@ -196,6 +201,8 @@ local function tile(p, orientation)
 
         -- and tile
         local column_area = cut_column(other_area, ncol, position)
+        if i == ncol then column_area.width = other_area.width - used end
+        used = used + column_area.width
 
         if not data[i] then data[i] = {} end
         tile_column(wa, column_area, column, useless_gap, transformation, data[i])