Send mouseleft event when the mouse leaves the window (#928)
* Send `mouseleft` event when the mouse leaves the window * Call `View:on_mouse_left` when the mouse leaves the `View` Previously `View:on_mouse_left` was called only when the mouse left the window, and it was called on every visible `View`. Now it gets also called when the mouse "changes" `View`, and only the last `View` the mouse was on will receive the event.
This commit is contained in:
@@ -51,6 +51,15 @@ function Node:on_mouse_released(...)
|
||||
end
|
||||
|
||||
|
||||
function Node:on_mouse_left()
|
||||
if self.type == "leaf" then
|
||||
self.active_view:on_mouse_left()
|
||||
else
|
||||
self:propagate("on_mouse_left")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function Node:consume(node)
|
||||
for k, _ in pairs(self) do self[k] = nil end
|
||||
for k, v in pairs(node) do self[k] = v end
|
||||
@@ -160,8 +169,12 @@ end
|
||||
|
||||
function Node:set_active_view(view)
|
||||
assert(self.type == "leaf", "Tried to set active view on non-leaf node")
|
||||
local last_active_view = self.active_view
|
||||
self.active_view = view
|
||||
core.set_active_view(view)
|
||||
if last_active_view and last_active_view ~= view then
|
||||
last_active_view:on_mouse_left()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user