From f5ad91619df0a398fad00e01e30c0fbd278f963f Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 2 Dec 2020 16:09:47 +0100 Subject: pager: improve marking visible pages Use a new desktop signal - page:hide - to make updates work correctly in all cases. Mark pages of the same desktop displayed on other screens with a special color. --- pager.lua | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'pager.lua') diff --git a/pager.lua b/pager.lua index d7acd83..985122d 100644 --- a/pager.lua +++ b/pager.lua @@ -6,10 +6,14 @@ local wibox = require("wibox") local Page = {} -function Page:set_active(active) +function Page:set_visible(visible, this_screen) local border_color = nil - if active then - border_color = beautiful.border_focus or '#ffffff' + if visible then + if this_screen then + border_color = beautiful.border_focus or '#ffffff' + else + border_color = beautiful.border_marked or '#d00000' + end else border_color = beautiful.border_normal or '#000000' end @@ -74,7 +78,7 @@ function Page:new(tag, width, height, screen) tag:connect_signal('tagged', function (c) ret:update() end) tag:connect_signal('untagged', function (c) ret:update() end) - ret:set_active(false) + ret:set_visible(false, false) ret:update() return ret @@ -125,9 +129,14 @@ function PagerDesk:new(desktop, screen, width, height) desktop:connect_signal("page:view", function(desktop, s, page_idx) if s == ret.screen then - ret:_set_active(page_idx) title_page:set_text(string.format("%d", page_idx)) end + + ret.pages[page_idx]:set_visible(true, s == ret.screen) + end) + desktop:connect_signal("page:hide", + function(desktop, page_idx) + ret.pages[page_idx]:set_visible(false, false) end) client.connect_signal("focus", function(c) @@ -142,19 +151,10 @@ function PagerDesk:new(desktop, screen, width, height) ret.desktop = desktop ret.screen = screen - ret.active_page_idx = nil return ret end -function PagerDesk:_set_active(page_idx) - if self.active_page_idx then - self.pages[self.active_page_idx]:set_active(false) - end - self.pages[page_idx]:set_active(true) - self.active_page_idx = page_idx -end - local Pager = {} function Pager:set_desktop(desktop) -- cgit v1.2.3