diff --git a/scripts/uosc/main.lua b/scripts/uosc/main.lua index 0394e35..0673a1e 100644 --- a/scripts/uosc/main.lua +++ b/scripts/uosc/main.lua @@ -328,7 +328,7 @@ cursor = { mbtn_left_enabled = nil, wheel_enabled = nil, decide_keybinds = function() - local enable_mbtn_left = (cursor.on_primary_down or cursor.on_primary_up) ~= nil + local enable_mbtn_left = true -- (cursor.on_primary_down or cursor.on_primary_up) ~= nil local enable_wheel = (cursor.on_wheel_down or cursor.on_wheel_up) ~= nil if enable_mbtn_left ~= cursor.mbtn_left_enabled then local flags = cursor.allow_dragging and 'allow-vo-dragging' or nil @@ -548,7 +548,7 @@ function update_cursor_position(x, y) -- displays the top bar, so we hardcode cursor position as infinity until -- we receive a first real mouse move event with coordinates other than 0,0. if not state.first_real_mouse_move_received then - if x > 0 and y > 0 then state.first_real_mouse_move_received = true + if x > 0 and y > 0 and x < INFINITY and y < INFINITY then state.first_real_mouse_move_received = true else x, y = INFINITY, INFINITY end end @@ -556,15 +556,18 @@ function update_cursor_position(x, y) cursor.x, cursor.y = (x + 0.5) / display.scale_x, (y + 0.5) / display.scale_y if old_x ~= cursor.x or old_y ~= cursor.y then - Elements:update_proximities() - - if cursor.x == INFINITY or cursor.y == INFINITY then - cursor.hidden, cursor.history = true, {} - Elements:trigger('global_mouse_leave') - elseif cursor.hidden then + is_leave = cursor.x == INFINITY or cursor.y == INFINITY + is_enter = cursor.hidden and not is_leave; + if is_enter then cursor.hidden, cursor.history = false, {} Elements:trigger('global_mouse_enter') - else + end + Elements:update_proximities() + + if is_leave then + cursor.hidden, cursor.history = true, {} + Elements:trigger('global_mouse_leave') + elseif not is_enter then -- Update cursor history for i = 1, cursor.history_size - 1, 1 do cursor.history[i] = cursor.history[i + 1] @@ -576,7 +579,7 @@ function update_cursor_position(x, y) cursor.queue_autohide() end - request_render() + render() end function handle_mouse_leave() @@ -673,7 +676,9 @@ function handle_mouse_pos(_, mouse) else update_cursor_position(mouse.x, mouse.y) end - cursor.hover_raw = mouse.hover + if state.first_real_mouse_move_received then + cursor.hover_raw = mouse.hover + end end mp.observe_property('mouse-pos', 'native', handle_mouse_pos) mp.observe_property('osc', 'bool', function(name, value) if value == true then mp.set_property('osc', 'no') end end) @@ -869,11 +874,13 @@ mp.observe_property('core-idle', 'native', create_state_setter('core_idle')) --[[ KEY BINDS ]] +cursor.decide_keybinds() + -- Pointer related binding groups function make_cursor_handler(event, cb) return function(...) - call_maybe(cursor[event], ...) call_maybe(cb, ...) + call_maybe(cursor[event], ...) cursor.queue_autohide() -- refresh cursor autohide timer end end