Add on_scale_change event to View (#1146)
* core view: emit on_scale_change event * core titleview: reconfigure hit_test on rescale fixes #1144
This commit is contained in:
parent
214c9d6287
commit
0fc793d1ae
|
@ -51,6 +51,10 @@ function TitleView:configure_hit_test(borderless)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function TitleView:on_scale_change()
|
||||||
|
self:configure_hit_test(self.visible)
|
||||||
|
end
|
||||||
|
|
||||||
function TitleView:update()
|
function TitleView:update()
|
||||||
self.size.y = self.visible and title_view_height() or 0
|
self.size.y = self.visible and title_view_height() or 0
|
||||||
title_commands[2] = core.window_mode == "maximized" and restore_command or maximize_command
|
title_commands[2] = core.window_mode == "maximized" and restore_command or maximize_command
|
||||||
|
|
|
@ -49,6 +49,7 @@ local Object = require "core.object"
|
||||||
---@field scrollable boolean
|
---@field scrollable boolean
|
||||||
---@field scrollbar core.view.scrollbar
|
---@field scrollbar core.view.scrollbar
|
||||||
---@field scrollbar_alpha core.view.increment
|
---@field scrollbar_alpha core.view.increment
|
||||||
|
---@field current_scale number
|
||||||
local View = Object:extend()
|
local View = Object:extend()
|
||||||
|
|
||||||
-- context can be "application" or "session". The instance of objects
|
-- context can be "application" or "session". The instance of objects
|
||||||
|
@ -69,6 +70,7 @@ function View:new()
|
||||||
h = { thumb = 0, track = 0 },
|
h = { thumb = 0, track = 0 },
|
||||||
}
|
}
|
||||||
self.scrollbar_alpha = { value = 0, to = 0 }
|
self.scrollbar_alpha = { value = 0, to = 0 }
|
||||||
|
self.current_scale = SCALE
|
||||||
end
|
end
|
||||||
|
|
||||||
function View:move_towards(t, k, dest, rate, name)
|
function View:move_towards(t, k, dest, rate, name)
|
||||||
|
@ -242,6 +244,12 @@ function View:on_mouse_wheel(y)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---Can be overriden to listen for scale change events to apply
|
||||||
|
---any neccesary changes in sizes, padding, etc...
|
||||||
|
---@param new_scale number
|
||||||
|
---@param prev_scale number
|
||||||
|
function View:on_scale_change(new_scale, prev_scale) end
|
||||||
|
|
||||||
function View:get_content_bounds()
|
function View:get_content_bounds()
|
||||||
local x = self.scroll.x
|
local x = self.scroll.x
|
||||||
local y = self.scroll.y
|
local y = self.scroll.y
|
||||||
|
@ -286,6 +294,11 @@ end
|
||||||
|
|
||||||
|
|
||||||
function View:update()
|
function View:update()
|
||||||
|
if self.current_scale ~= SCALE then
|
||||||
|
self:on_scale_change(SCALE, self.current_scale)
|
||||||
|
self.current_scale = SCALE
|
||||||
|
end
|
||||||
|
|
||||||
self:clamp_scroll_position()
|
self:clamp_scroll_position()
|
||||||
self:move_towards(self.scroll, "x", self.scroll.to.x, 0.3, "scroll")
|
self:move_towards(self.scroll, "x", self.scroll.to.x, 0.3, "scroll")
|
||||||
self:move_towards(self.scroll, "y", self.scroll.to.y, 0.3, "scroll")
|
self:move_towards(self.scroll, "y", self.scroll.to.y, 0.3, "scroll")
|
||||||
|
|
Loading…
Reference in New Issue