a lot of stuff

This commit is contained in:
2022-12-11 17:30:18 +01:00
parent 42a888c311
commit d45e2496b1
89 changed files with 1067 additions and 1424 deletions

View File

@@ -18,8 +18,6 @@ local gshape = require('gears.shape')
local gobject = require('gears.object')
local mousegrabber = mousegrabber
local rubato = require("src.lib.rubato")
local overflow = { mt = {} }
-- Determine the required space to draw the layout's children and, if necessary,
@@ -275,7 +273,7 @@ end
--- Scroll the layout's content by `amount * step`.
--
-- A positive amount scroll down/right, a negative amount scrolls up/left.
-- A positive amount scrolls down/right, a negative amount scrolls up/left.
--
-- The amount of units scrolled is affected by `step`.
--
@@ -307,9 +305,6 @@ end
-- @tparam number scroll_factor The scroll factor.
-- @propemits true false
overflow.rubato_timed = rubato.timed { duration = 0.2 }
local first_call = true
function overflow:set_scroll_factor(factor)
local current = self._private.scroll_factor
local interval = self._private.used_in_dir - self._private.avail_in_dir
@@ -323,22 +318,10 @@ function overflow:set_scroll_factor(factor)
return
end
self._private.scroll_factor = math.min(1, math.max(factor, 0))
local function update_scroll()
self._private.scroll_factor = self.rubato_timed.pos
self:emit_signal("widget::layout_changed")
self:emit_signal("property::scroll_factor", factor)
end
-- Make sure it only subscribes once
if first_call then
self.rubato_timed:subscribe(update_scroll)
--first_call = false
end
-- Set the target to the new target + remaining target from last scroll. This makes it scroll faster and correctly.
self.rubato_timed.target = math.min(1,
math.max(factor + (self.rubato_timed.target - self.rubato_timed.pos), 0))
self:emit_signal("widget::layout_changed")
self:emit_signal("property::scroll_factor", factor)
end
function overflow:get_scroll_factor()
@@ -486,6 +469,19 @@ function overflow:get_scrollbar_widget()
return self._private.scrollbar_widget
end
function overflow:reset()
self._private.widgets = {}
self._private.scroll_factor = 0
local scrollbar_widget = separator({ shape = gshape.rectangle })
apply_scrollbar_mouse_signal(self, scrollbar_widget)
self._private.scrollbar_widget = scrollbar_widget
self:emit_signal("widget::layout_changed")
self:emit_signal("widget::reset")
self:emit_signal("widget::reseted")
end
local function new(dir, ...)
local ret = fixed[dir](...)
@@ -538,7 +534,7 @@ end
-- widgets exceeds the height available whithin the layout's outer container
-- a scrollbar will be added and scrolling behavior enabled.
-- @tparam widget ... Widgets that should be added to the layout.
-- @constructorfct wibox.layout.overflow.horizontal
-- @constructorfct wibox.layout.overflow.vertical
function overflow.vertical(...)
return new("vertical", ...)
end