THIS IS AN AUTOMATED MESSAGE, DO NOT REPLY.

The following task has a new comment added:

FS#1296 - Updated signal causes total relayout
User who did this - Uli Schlachter (psychon)

----------
Sorry for spamming.

I tested a 45 degree rotation and quite some code broke. Here is the code for 
the rotation:

local custom = base.make_widget()
function custom:fit(width, height) return width, height end
function custom:draw() end
custom.before_draw_children = custom.draw
custom.after_draw_children = custom.draw
function custom:layout()
    local m = cairo.Matrix.create_translate(30, 30)
    m:rotate(math.pi / 4)
    m:translate(0, -30)
    return {
        base.place_widget(f, m, 30, 10),
    }
end

And here are the needed fixes:

function wibox:damage_area(x, y, width, height)
    local rect = cairo.RectangleInt({
        x = math.floor(x),
        y = math.floor(y),
        width = math.ceil(width),
        height = math.ceil(height)
    })
    self._dirty_area:union_rectangle(rect)
end

function wibox:_widget_needs_redraw(widget_state)
    -- We have to transform this widget's geometry into global coordinates
    local m = cairo.Matrix.create_identity()
    local state = widget_state
    while state ~= nil do
        m:multiply(m, state.matrix)
        state = state.parent
    end

    -- XXX: How can this be done nicer?
    local x1, y1 = m:transform_point(0, 0)
    local x2, y2 = m:transform_point(0, widget_state.height)
    local x3, y3 = m:transform_point(widget_state.width, widget_state.height)
    local x4, y4 = m:transform_point(widget_state.width, 0)
    local x = math.min(x1, x2, x3, x4)
    local y = math.min(y1, y2, y3, y4)
    local width = math.max(x1, x2, x3, x4) - x
    local height = math.max(y1, y2, y3, y4) - y

    self:damage_area(x, y, width, height)
end
----------

More information can be found at the following URL:
https://awesome.naquadah.org/bugs/index.php?do=details&task_id=1296#comment4158

You are receiving this message because you have requested it from the Flyspray 
bugtracking system.  If you did not expect this message or don't want to 
receive mails in future, you can change your notification settings at the URL 
shown above.

--
To unsubscribe, send mail to awesome-devel-unsubscr...@naquadah.org.

Reply via email to