diff options
Diffstat (limited to 'main.lua')
| -rw-r--r-- | main.lua | 53 |
1 files changed, 53 insertions, 0 deletions
@@ -1277,6 +1277,59 @@ local function toggle_menu() set_key_bindings() end +local mouse_pos_time +local mouse_over_button_area = false +local mouse_over_toggle_button = false +local mouse_timer; mouse_timer = mp.add_periodic_timer(0.1, function() + if mouse_pos_time and + not mouse_over_toggle_button and + mp.get_time() - mouse_pos_time > + config.toggle_button_timeout then + osd:show_toggle_button(false) + mouse_timer:kill() + end +end, true) -- disabled +mp.observe_property('mouse-pos', 'native', function(_, mpos) + if not mpos then + return + end + + -- mpv sends (0, 0) on startup if the mouse hasn't moved yet. don't + -- trigger display of the button until the mouse has actually moved. + if not mouse_pos_time and mpos.x == 0 and mpos.y == 0 then + return + end + + mouse_pos_time = mp.get_time() + + local is_over = osd:mouse_over_button_area(mpos) + if is_over ~= mouse_over_button_area then + mouse_over_button_area = is_over + osd:show_toggle_button(mouse_over_button_area) + elseif mouse_over_button_area and osd.toggle_button.hidden then + osd:show_toggle_button(true) + end + + if mouse_over_button_area then + mouse_timer:resume() + else + mouse_timer:kill() + end + + local is_over = osd:mouse_over_toggle_button(mpos) + if is_over ~= mouse_over_toggle_button then + mouse_over_toggle_button = is_over + if mouse_over_toggle_button then + mp.add_forced_key_binding( + 'MBTN_LEFT', 'click', toggle_menu) + mp.add_forced_key_binding('MBTN_LEFT_DBL', 'click_dbl') + else + mp.remove_key_binding('click') + mp.remove_key_binding('click_dbl') + end + end +end) + mp.observe_property('user-data/osc/visibility', 'native', function(_, val) if val and (osd:is_hidden() or val ~= 'never') then osc_visibility = val |
