Fix the mirror layout

Issues involve:
- :layout() had the wrong signature and expected a cr argument that was left
  from when this was still the :draw() function.
- horizontal and vertical reflection were mixed up (I guess it has always been
  this way?)
- The return value should be a table of widget placements. Instead it was just a
  single widget placement.

This is broken since commit 85ab3f045b.

Fixes: https://github.com/awesomeWM/awesome/issues/718
Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
Uli Schlachter 2016-02-29 22:09:18 +01:00
parent a189f2b13f
commit b40b69d379
1 changed files with 6 additions and 10 deletions

View File

@ -16,28 +16,24 @@ local matrix = require("gears.matrix")
local mirror = { mt = {} } local mirror = { mt = {} }
--- Layout this layout --- Layout this layout
function mirror:layout(context, cr, width, height) function mirror:layout(_, width, height)
if not self.widget then return end if not self.widget then return end
if not self.horizontal and not self.vertical then
base.draw_widget(context, cr, self.widget, 0, 0, width, height)
return
end
local m = matrix.identity local m = matrix.identity
local t = { x = 0, y = 0 } -- translation local t = { x = 0, y = 0 } -- translation
local s = { x = 1, y = 1 } -- scale local s = { x = 1, y = 1 } -- scale
if self.horizontal then if self.horizontal then
t.y = height
s.y = -1
end
if self.vertical then
t.x = width t.x = width
s.x = -1 s.x = -1
end end
if self.vertical then
t.y = height
s.y = -1
end
m = m:translate(t.x, t.y) m = m:translate(t.x, t.y)
m = m:scale(s.x, s.y) m = m:scale(s.x, s.y)
return base.place_widget_via_matrix(self.widget, m, width, height) return { base.place_widget_via_matrix(self.widget, m, width, height) }
end end
--- Fit this layout into the given area --- Fit this layout into the given area