[Bf-blender-cvs] [cdd223039b1] blender-v2.82-release: Fix T65350: scrolling popovers with trackpad not working on macOS

Yevgeny Makarov noreply at git.blender.org
Tue Jan 28 10:30:03 CET 2020


Commit: cdd223039b1ce5670ac62163dfa288e2b7f90123
Author: Yevgeny Makarov
Date:   Tue Jan 28 10:27:40 2020 +0100
Branches: blender-v2.82-release
https://developer.blender.org/rBcdd223039b1ce5670ac62163dfa288e2b7f90123

Fix T65350: scrolling popovers with trackpad not working on macOS

Differential Revision: https://developer.blender.org/D6483

===================================================================

M	source/blender/editors/interface/interface_handlers.c

===================================================================

diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 089c87b86ed..41845943047 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -9549,18 +9549,29 @@ static int ui_handle_menu_event(bContext *C,
           break;
 
         case WHEELUPMOUSE:
-        case WHEELDOWNMOUSE: {
+        case WHEELDOWNMOUSE:
+        case MOUSEPAN: {
           if (IS_EVENT_MOD(event, shift, ctrl, alt, oskey)) {
             /* pass */
           }
           else if (!ui_block_is_menu(block)) {
-            const int scroll_dir = (event->type == WHEELUPMOUSE) ? 1 : -1;
-            if (ui_menu_scroll_step(ar, block, scroll_dir)) {
-              if (but) {
-                but->active->cancel = true;
-                button_activate_exit(C, but, but->active, false, false);
+            int type = event->type;
+            int val = event->val;
+
+            /* convert pan to scrollwheel */
+            if (type == MOUSEPAN) {
+              ui_pan_to_scroll(event, &type, &val);
+            }
+
+            if (type != MOUSEPAN) {
+              const int scroll_dir = (type == WHEELUPMOUSE) ? 1 : -1;
+              if (ui_menu_scroll_step(ar, block, scroll_dir)) {
+                if (but) {
+                  but->active->cancel = true;
+                  button_activate_exit(C, but, but->active, false, false);
+                }
+                WM_event_add_mousemove(C);
               }
-              WM_event_add_mousemove(C);
             }
             break;
           }
@@ -9572,7 +9583,6 @@ static int ui_handle_menu_event(bContext *C,
         case PAGEDOWNKEY:
         case HOMEKEY:
         case ENDKEY:
-        case MOUSEPAN:
           /* arrowkeys: only handle for block_loop blocks */
           if (IS_EVENT_MOD(event, shift, ctrl, alt, oskey)) {
             /* pass */



More information about the Bf-blender-cvs mailing list