summaryrefslogtreecommitdiff
path: root/pager.lua
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2020-12-02 16:09:47 +0100
committerAnton Khirnov <anton@khirnov.net>2020-12-02 16:09:47 +0100
commitf5ad91619df0a398fad00e01e30c0fbd278f963f (patch)
tree41d52f28edd7505540d3035332532057fbb53f40 /pager.lua
parentc5282fe57820960f48a3e28f98609a848a972dfb (diff)
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.
Diffstat (limited to 'pager.lua')
-rw-r--r--pager.lua28
1 files changed, 14 insertions, 14 deletions
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)