diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-11-18 19:28:21 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-11-18 19:28:21 +0400 |
commit | b6b4aabf041e34a76b79ff6cfad3fd739b3bb090 (patch) | |
tree | ecd6ff4681bc38e1cbae4d34321461e5f5c3ed1f /source/blender | |
parent | 5eb1dba6e0d0308de7ae2b549029c0bbced22631 (diff) |
Fix T37511: toggle-drag feature was crashing with menu items.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index bb129c1ec9f..cff7500e6ef 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -859,6 +859,13 @@ static int ui_handler_region_drag_toggle(bContext *C, const wmEvent *event, void } } +static bool ui_is_but_drag_toggle(uiBut *but) +{ + return ((ui_is_but_bool(but) == true) && + /* menu check is importnt so the button dragged over isn't removed instantly */ + (ui_block_is_menu(but->block) == false)); +} + #endif /* USE_DRAG_TOGGLE */ @@ -2748,7 +2755,7 @@ static int ui_do_but_TOG(bContext *C, uiBut *but, uiHandleButtonData *data, cons { #ifdef USE_DRAG_TOGGLE if (data->state == BUTTON_STATE_HIGHLIGHT) { - if (event->type == LEFTMOUSE && event->val == KM_PRESS && ui_is_but_bool(but)) { + if (event->type == LEFTMOUSE && event->val == KM_PRESS && ui_is_but_drag_toggle(but)) { #if 0 /* UNUSED */ data->togdual = event->ctrl; data->togonly = !event->shift; @@ -2797,7 +2804,7 @@ static int ui_do_but_EXIT(bContext *C, uiBut *but, uiHandleButtonData *data, con } } #ifdef USE_DRAG_TOGGLE - if (event->type == LEFTMOUSE && ui_is_but_bool(but)) { + if (event->type == LEFTMOUSE && ui_is_but_drag_toggle(but)) { button_activate_state(C, but, BUTTON_STATE_WAIT_DRAG); data->dragstartx = event->x; data->dragstarty = event->y; @@ -3623,7 +3630,7 @@ static int ui_do_but_BLOCK(bContext *C, uiBut *but, uiHandleButtonData *data, co } } #ifdef USE_DRAG_TOGGLE - if (event->type == LEFTMOUSE && ui_is_but_bool(but)) { + if (event->type == LEFTMOUSE && ui_is_but_drag_toggle(but)) { button_activate_state(C, but, BUTTON_STATE_WAIT_DRAG); data->dragstartx = event->x; data->dragstarty = event->y; |