summaryrefslogtreecommitdiff
path: root/main.lua
diff options
context:
space:
mode:
Diffstat (limited to 'main.lua')
-rw-r--r--main.lua53
1 files changed, 53 insertions, 0 deletions
diff --git a/main.lua b/main.lua
index 481cb7d..563c2cf 100644
--- a/main.lua
+++ b/main.lua
@@ -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