Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYevgeny Makarov <jenkm>2020-01-28 12:27:40 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2020-01-28 12:27:59 +0300
commitcdd223039b1ce5670ac62163dfa288e2b7f90123 (patch)
treecddb41dfe902b0ee59379dc54952c51c3a673745 /source/blender/editors/interface
parent50d65d5a2e533c0548d00d2840aeb9fa04d3e463 (diff)
Fix T65350: scrolling popovers with trackpad not working on macOS
Differential Revision: https://developer.blender.org/D6483
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r--source/blender/editors/interface/interface_handlers.c26
1 files changed, 18 insertions, 8 deletions
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 */