0

是否可以在很棒的 wm 中将小部件绘制在其他小部件的上方?例如:在进度条上绘制带有一些文本(百分比)的 texbox。

这是有效的解决方案

local function make_stack(w1, w2)
    local ret = wibox.widget.base.make_widget()

    ret.fit = function(self, ...) return w1:fit(...) end
    ret.draw = function(self, wibox, cr, width, height)
        w1:draw(wibox, cr, width, height)
        w2:draw(wibox, cr, width, height)
    end

    update = function() ret:emit_signal("widget::updated") end
    w1:connect_signal("widget::updated", update)
    w2:connect_signal("widget::updated", update)

    return ret
end
4

1 回答 1

0

没有像这样内置的,但你可以自己写(未经测试):

function make_stack(w1, w2)
  local ret = wibox.widget.base.make_widget()

  local update = function() ret:emit_signal("widget::updated") end
  w1:connect_signal("widget::updated", update)
  w2:connect_signal("widget::updated", update)

  ret.fit = function(self, ...) return w2:fit(...) end
  ret.draw = function(self, wibox, cr, width, height)
    wibox.layout.base.draw_widget(wibox, cr, w1, 0, 0, width, height)
    wibox.layout.base.draw_widget(wibox, cr, w2, 0, 0, width, height)
  end

  return ret
end

该函数make_stack(w1, w2)创建一个新的小部件,该小部件w2w1. 小部件w2决定两个小部件的大小,如fit函数中所示。

例如,这可以像这样使用:left_layout:add(make_stack(mytasklist[s], mytextclock))

于 2015-01-11T08:59:19.837 回答