diff options
author | Yevgeny Makarov <jenkm> | 2020-10-29 19:01:45 +0300 |
---|---|---|
committer | Harley Acheson <harley.acheson@gmail.com> | 2020-10-29 19:03:49 +0300 |
commit | dfc576426b3999b219d8663384f66139d337649b (patch) | |
tree | 35dff230cd66ead3c64bf69d211777bb0bf1760b /source/blender/editors/interface/interface_handlers.c | |
parent | c26ad42ea43aa2160a765980087f3dd320db55f0 (diff) |
Allow Trackpad Ctrl-Pan to Cycle Enum Values
Allow Trackpad Ctrl-Pan to cycle enum values. Also allows cycling in more button types.
Differential Revision: https://developer.blender.org/D8535
Reviewed by Brecht Van Lommel
Diffstat (limited to 'source/blender/editors/interface/interface_handlers.c')
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 4451199bb7c..ac31148340a 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -4550,10 +4550,22 @@ static int ui_do_but_TOG(bContext *C, uiBut *but, uiHandleButtonData *data, cons button_activate_state(C, but, BUTTON_STATE_EXIT); return WM_UI_HANDLER_BREAK; } - if (ELEM(event->type, WHEELDOWNMOUSE, WHEELUPMOUSE) && event->ctrl) { - /* Support alt+wheel on expanded enum rows */ + if (ELEM(event->type, MOUSEPAN, WHEELDOWNMOUSE, WHEELUPMOUSE) && event->ctrl) { + /* Support ctrl-wheel to cycle values on expanded enum rows. */ if (but->type == UI_BTYPE_ROW) { - const int direction = (event->type == WHEELDOWNMOUSE) ? -1 : 1; + int type = event->type; + int val = event->val; + + /* Convert pan to scroll-wheel. */ + if (type == MOUSEPAN) { + ui_pan_to_scroll(event, &type, &val); + + if (type == MOUSEPAN) { + return WM_UI_HANDLER_BREAK; + } + } + + const int direction = (type == WHEELDOWNMOUSE) ? -1 : 1; uiBut *but_select = ui_but_find_select_in_enum(but, direction); if (but_select) { uiBut *but_other = (direction == -1) ? but_select->next : but_select->prev; @@ -5648,8 +5660,20 @@ static int ui_do_but_BLOCK(bContext *C, uiBut *but, uiHandleButtonData *data, co return WM_UI_HANDLER_BREAK; } if (ui_but_supports_cycling(but)) { - if (ELEM(event->type, WHEELDOWNMOUSE, WHEELUPMOUSE) && event->ctrl) { - const int direction = (event->type == WHEELDOWNMOUSE) ? 1 : -1; + if (ELEM(event->type, MOUSEPAN, WHEELDOWNMOUSE, WHEELUPMOUSE) && event->ctrl) { + int type = event->type; + int val = event->val; + + /* Convert pan to scroll-wheel. */ + if (type == MOUSEPAN) { + ui_pan_to_scroll(event, &type, &val); + + if (type == MOUSEPAN) { + return WM_UI_HANDLER_BREAK; + } + } + + const int direction = (type == WHEELDOWNMOUSE) ? 1 : -1; data->value = ui_but_menu_step(but, direction); |