diff --git a/layout/vertical.lua b/layout/vertical.lua index 8c5bd3c..895076d 100644 --- a/layout/vertical.lua +++ b/layout/vertical.lua @@ -99,7 +99,8 @@ local function new(data) data._internal.scroll_w and data._internal.scroll_w["down"] or nil, data.show_filter and { id = "filter_widget", - widget = filter(data) --FIXME for some reason it doesn't show up + data = data, + widget = filter } or nil, -- Attributes @@ -120,7 +121,6 @@ local function new(data) data._internal.content_layout = real_l:get_children_by_id( "content_layout" )[1] data._internal.suf_l = real_l:get_children_by_id( "suffix_layout" )[1] data._internal.pref_l = real_l:get_children_by_id( "prefix_layout" )[1] - data._internal.filter_tb = real_l:get_children_by_id( "filter_widget" )[1] -- Set the overloaded methods real_l.fit = real_fit diff --git a/widgets/filter.lua b/widgets/filter.lua index aa587d8..17bf5da 100644 --- a/widgets/filter.lua +++ b/widgets/filter.lua @@ -1,31 +1,50 @@ local setmetatable = setmetatable -local print = print -local color = require("gears.color") -local cairo = require( "lgi" ).cairo -local wibox = require("wibox") - -local beautiful = require( "beautiful" ) +local wibox = require("wibox") +local infoshapes = require( "radical.widgets.infoshapes" ) local module = {} ---TODO broken +local function set_data(self, data) + local info = self:get_children_by_id("infoshapes" )[1] + local tb = self:get_children_by_id("filter_text")[1] + + function self:fit(context,width,height) + return width,data.item_height + end + + self:set_bg(data.bg_highlight) + + tb:set_markup(" ".. data.filter_prefix .." "..data.filter_placeholder) + + info:add_infoshape { + text = data.filter_underlay , + alpha = data.filter_underlay_alpha, + color = data.filter_underlay_color, + } + + data:connect_signal("filter_string::changed",function() + local is_empty = data.filter_string == "" + tb:set_markup(" ".. data.filter_prefix .." "..(is_empty and data.filter_placeholder or data.filter_string)) + end) + + self:set_widget(info) --FIXME there is a bug somewhere + +end + local function new(data) - local filter_tb = wibox.widget.textbox() - local bg = wibox.widget.background() - bg:set_bg(data.bg_highlight) - bg:set_widget(filter_tb) - filter_tb:set_markup(" ".. data.filter_prefix .." "..data.filter_placeholder) - filter_tb.fit = function(tb,context,width,height) - return width,data.item_height - end --- filter_tb:set_underlay(data.filter_underlay,{alpha=data.filter_underlay_alpha,color=data.filter_underlay_color}) - data:connect_signal("filter_string::changed",function() - local is_empty = data.filter_string == "" - filter_tb:set_markup(" ".. data.filter_prefix .." "..(is_empty and data.filter_placeholder or data.filter_string)) - end) - bg.widget = filter_tb - return bg + return wibox.widget.base.make_widget_declarative { + { + { + id = "filter_text", + widget = wibox.widget.textbox + }, + id = "infoshapes", + widget = infoshapes , + }, + set_data = set_data, + widget = wibox.widget.background + } end return setmetatable(module, { __call = function(_, ...) return new(...) end }) --- kate: space-indent on; indent-width 2; replace-tabs on; +-- kate: space-indent on; indent-width 4; replace-tabs on;