[vlc-commits] hotkeys: take care of mouse wheel "key" events

Rémi Denis-Courmont git at videolan.org
Thu May 31 20:45:45 CEST 2018


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu May 31 21:34:59 2018 +0300| [62fc1d1f864435f953a0be1810fc88848f77531d] | committer: Rémi Denis-Courmont

hotkeys: take care of mouse wheel "key" events

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=62fc1d1f864435f953a0be1810fc88848f77531d
---

 modules/control/hotkeys.c | 18 ++++++++++--------
 src/video_output/event.h  | 15 +--------------
 2 files changed, 11 insertions(+), 22 deletions(-)

diff --git a/modules/control/hotkeys.c b/modules/control/hotkeys.c
index dae489fee4..a7a5792bb1 100644
--- a/modules/control/hotkeys.c
+++ b/modules/control/hotkeys.c
@@ -168,23 +168,25 @@ static int ButtonEvent( vlc_object_t *p_this, char const *psz_var,
     else
         p_sys->vrnav.b_button_pressed = false;
 
-    if ((newval.i_int & (1 << MOUSE_BUTTON_LEFT))
-     && !(oldval.i_int & (1 << MOUSE_BUTTON_LEFT)))
-        var_SetBool(pl_Get(p_intf), "intf-popupmenu", false);
+    unsigned pressed = newval.i_int & ~oldval.i_int;
 
-    if ((newval.i_int & (1 << MOUSE_BUTTON_CENTER))
-     && !(oldval.i_int & (1 << MOUSE_BUTTON_CENTER)))
+    if (pressed & (1 << MOUSE_BUTTON_LEFT))
+        var_SetBool(pl_Get(p_intf), "intf-popupmenu", false);
+    if (pressed & (1 << MOUSE_BUTTON_CENTER))
         var_TriggerCallback(pl_Get(p_intf), "intf-toggle-fscontrol");
-
 #ifndef _WIN32
-    if ((newval.i_int & (1 << MOUSE_BUTTON_RIGHT))
-     && !(oldval.i_int & (1 << MOUSE_BUTTON_RIGHT)))
+    if (pressed & (1 << MOUSE_BUTTON_RIGHT))
 #else
     if ((oldval.i_int & (1 << MOUSE_BUTTON_RIGHT))
      && !(newval.i_int & (1 << MOUSE_BUTTON_RIGHT)))
 #endif
         var_SetBool(pl_Get(p_intf), "intf-popupmenu", true);
 
+    for (int i = MOUSE_BUTTON_WHEEL_UP; i <= MOUSE_BUTTON_WHEEL_RIGHT; i++)
+        if (pressed & (1 << i))
+            var_SetInteger(p_intf->obj.libvlc, "key-pressed",
+                           i - MOUSE_BUTTON_WHEEL_UP + KEY_MOUSEWHEELUP);
+
     return VLC_SUCCESS;
 }
 
diff --git a/src/video_output/event.h b/src/video_output/event.h
index 1c17d79ff4..985052a45f 100644
--- a/src/video_output/event.h
+++ b/src/video_output/event.h
@@ -55,28 +55,15 @@ static inline void vout_SendEventViewpointMoved(vout_thread_t *vout,
 }
 static inline void vout_SendEventMousePressed(vout_thread_t *vout, int button)
 {
-    int key = KEY_UNSET;
     var_OrInteger(vout, "mouse-button-down", 1 << button);
 
-    switch (button)
-    {
-    case MOUSE_BUTTON_LEFT:
+    if (button == MOUSE_BUTTON_LEFT)
     {
         /* FIXME? */
         int x, y;
         var_GetCoords(vout, "mouse-moved", &x, &y);
         var_SetCoords(vout, "mouse-clicked", x, y);
-        return;
-    }
-    case MOUSE_BUTTON_CENTER:
-    case MOUSE_BUTTON_RIGHT:
-        return;
-    case MOUSE_BUTTON_WHEEL_UP:    key = KEY_MOUSEWHEELUP;    break;
-    case MOUSE_BUTTON_WHEEL_DOWN:  key = KEY_MOUSEWHEELDOWN;  break;
-    case MOUSE_BUTTON_WHEEL_LEFT:  key = KEY_MOUSEWHEELLEFT;  break;
-    case MOUSE_BUTTON_WHEEL_RIGHT: key = KEY_MOUSEWHEELRIGHT; break;
     }
-    vout_SendEventKey(vout, key);
 }
 static inline void vout_SendEventMouseReleased(vout_thread_t *vout, int button)
 {



More information about the vlc-commits mailing list