VLC 4.0 handles mouse double-click events differently than VLC 3.0 does (regression?)
VLC 4.0 has changed how it registers mouse double-clicking.
Some of these changes are kind of buggy, e.g. you don't expect to be able to double-click with a mouse wheel or a right mouse button to full-screen.
These changes have also broke my video filter plugin, and while I can fix it by modifying it to account for the new behavior, I'm not sure if you meant to break it in the first place.
-
VLC 4.0 has also changed the way it registers double-clicking with the left mouse button, which breaks my plugin.
VLC 4.0 calls the video filter mouse callback function 3 times on a double-click:
- To notify of the first click
- To notify of the second click
- To notify of the double-click
*first left mouse button click* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=1, b_double_click=0 *second left mouse button click* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=1, b_double_click=0 mouse callback! p_mouse_old: i_pressed=1, b_double_click=0; p_mouse_new: i_pressed=1, b_double_click=1
VLC 3.0 calls the video filter mouse callback function 2 times on a double-click:
- To notify of the first click
- To notify of the second click, which is double-click
*first left mouse button click* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=1, b_double_click=0 *second left mouse button click* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=0, b_double_click=1
I'm arguing that VLC 4.0 shouldn't call video filter's mouse callback function 3 times when a user makes only 2 mouse clicks (speaking of the double-click), it should call it only 2 times, similar to what VLC 3.0 does.
-
VLC 4.0 registers double-clicking with a mouse wheel, when VLC 3.0 didn't. This results in VLC 4.0 going full-screen when you double-click the mouse wheel.
VLC 4.0:
*first mouse wheel click* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=2, b_double_click=0 *second mouse wheel click* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=2, b_double_click=0 mouse callback! p_mouse_old: i_pressed=2, b_double_click=0; p_mouse_new: i_pressed=2, b_double_click=1
VLC 3.0:
*first mouse wheel click* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=2, b_double_click=0 *second mouse wheel click -- doesn't register*
VLC shouldn't full-screen on double mouse wheel click, so VLC 3.0 behavior is preferred.
-
VLC 4.0 registers double-clicking with the right mouse button (under certain circumstances), when VLC 3.0 didn't.
To reproduce:
- Start playing a video
- Right-click on it to summon the context menu
- Move the mouse over the "Pause" button of the context menu
- The previous steps don't have to be done fast, you can do them at your own pace, e.g. you can go make tea at this point of you want to
- Now, however, quickly double-click with the right mouse button (this will result in the first click hitting the Pause button of the context menu and the next one hitting the video output)
- Observe VLC going full-screen, registering this as a double-click
(While the steps to reproduce might seem a bit obscure, if you keep right-clicking while moving the mouse, for no purpose, just messing around in VLC, you might accidentally double-click on Pause/Play context menu and cause VLC to full-screen, which it shouldn't do.)
VLC 4.0:
*right click to summon the context menu* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=4, b_double_click=0 *double-right click on the Pause button of the context menu* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=4, b_double_click=0 mouse callback! p_mouse_old: i_pressed=4, b_double_click=0; p_mouse_new: i_pressed=4, b_double_click=1
VLC 3.0 (Windows):
*right click to summon the context menu* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=4, b_double_click=0 *double-right click on the Pause button of the context menu* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=4, b_double_click=0
VLC 3.0 (Debian Linux):
*right click to summon the context menu* mouse callback! p_mouse_old: i_pressed=0, b_double_click=0; p_mouse_new: i_pressed=4, b_double_click=0 *double-right click on the Pause button of the context menu -- doesn't register*
VLC shouldn't full-screen on double-right click, so VLC 3.0 behavior is preferred.
VLC 4.0 (702b258d) was tested on Windows 10.
VLC 3.0 (3.0.17.4) was tested on Windows 10 and Debian 11 (Bullseye).