[Bf-blender-cvs] [adc17317c5a] blender2.8: UI: open toolbar hold buttons on drag

Campbell Barton noreply at git.blender.org
Wed May 2 12:20:13 CEST 2018


Commit: adc17317c5af23c0986a449da6d0aef130d1f503
Author: Campbell Barton
Date:   Wed May 2 12:18:36 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBadc17317c5af23c0986a449da6d0aef130d1f503

UI: open toolbar hold buttons on drag

Allows for faster tool switching, no need to wait for it to open.

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

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 e0ee966cb34..7c04056ac93 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -128,7 +128,7 @@ static bool ui_mouse_motion_keynav_test(struct uiKeyNavLock *keynav, const wmEve
 #define BUTTON_FLASH_DELAY          0.020
 #define MENU_SCROLL_INTERVAL        0.1
 #define PIE_MENU_INTERVAL           0.01
-#define BUTTON_AUTO_OPEN_THRESH     0.3
+#define BUTTON_AUTO_OPEN_THRESH     0.2
 #define BUTTON_MOUSE_TOWARDS_THRESH 1.0
 /* pixels to move the cursor to get out of keyboard navigation */
 #define BUTTON_KEYNAV_PX_LIMIT      8
@@ -8369,6 +8369,19 @@ static int ui_handle_button_event(bContext *C, const wmEvent *event, uiBut *but)
 					/* deselect the button when moving the mouse away */
 					/* also de-activate for buttons that only show higlights */
 					if (ui_but_contains_point_px(ar, but, event->x, event->y)) {
+
+						/* Drag on a hold button (used in the toolbar) now opens it immediately. */
+						if (data->hold_action_timer) {
+							if (but->flag & UI_SELECT) {
+								if ((abs(event->x - event->prevx)) > 2 ||
+								    (abs(event->y - event->prevy)) > 2)
+								{
+									WM_event_remove_timer(data->wm, data->window, data->hold_action_timer);
+									data->hold_action_timer = WM_event_add_timer(data->wm, data->window, TIMER, 0.0f);
+								}
+							}
+						}
+
 						if (!(but->flag & UI_SELECT)) {
 							but->flag |= (UI_SELECT | UI_ACTIVE);
 							data->cancel = false;



More information about the Bf-blender-cvs mailing list