[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54863] trunk/blender/source/blender/ editors/interface/interface_handlers.c: add define for drag toggle.

Campbell Barton ideasman42 at gmail.com
Tue Feb 26 00:27:32 CET 2013


Revision: 54863
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54863
Author:   campbellbarton
Date:     2013-02-25 23:27:32 +0000 (Mon, 25 Feb 2013)
Log Message:
-----------
add define for drag toggle.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_handlers.c

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-02-25 22:36:50 UTC (rev 54862)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-02-25 23:27:32 UTC (rev 54863)
@@ -81,6 +81,8 @@
 
 /* place the mouse at the scaled down location when un-grabbing */
 #define USE_CONT_MOUSE_CORRECT
+/* support dragging toggle buttons */
+#define USE_DRAG_TOGGLE
 
 /* proto */
 static void ui_add_smart_controller(bContext *C, uiBut *from, uiBut *to);
@@ -770,7 +772,7 @@
 
 		button_activate_state(C, but, BUTTON_STATE_EXIT);
 		data->cancel = TRUE;
-		
+#ifdef USE_DRAG_TOGGLE
 		if (ui_is_but_bool(but)) {
 			/* assumes button has already been pressed */
 			const bool is_set = (ui_get_but_val(but) == 0.0);
@@ -784,7 +786,9 @@
 			WM_operator_name_call(C, "UI_OT_drag_toggle", WM_OP_INVOKE_DEFAULT, &ptr);
 			WM_operator_properties_free(&ptr);
 		}
-		else {
+		else
+#endif
+		{
 			wmDrag *drag;
 
 			drag = WM_event_start_drag(C, but->icon, but->dragtype, but->dragpoin, ui_get_but_val(but));
@@ -2493,28 +2497,32 @@
 
 static int ui_do_but_TOG(bContext *C, uiBut *but, uiHandleButtonData *data, const wmEvent *event)
 {
+#ifdef USE_DRAG_TOGGLE
 	if (data->state == BUTTON_STATE_HIGHLIGHT) {
 		if (event->type == LEFTMOUSE && event->val == KM_PRESS && ui_is_but_bool(but)) {
+			data->togdual = event->ctrl;
+			data->togonly = !event->shift;
 			ui_apply_button(C, but->block, but, data, true);
 			button_activate_state(C, but, BUTTON_STATE_WAIT_DRAG);
 			data->dragstartx = event->x;
 			data->dragstarty = event->y;
 			return WM_UI_HANDLER_CONTINUE;
 		}
-
+	}
+	else if (data->state == BUTTON_STATE_WAIT_DRAG) {
+		/* note: the 'BUTTON_STATE_WAIT_DRAG' part of 'ui_do_but_EXIT' could be refactored into its own function */
+		data->applied = false;
+		return ui_do_but_EXIT(C, but, data, event);
+	}
+#endif
+	if (data->state == BUTTON_STATE_HIGHLIGHT) {
 		if (ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
 			data->togdual = event->ctrl;
 			data->togonly = !event->shift;
 			button_activate_state(C, but, BUTTON_STATE_EXIT);
-			return WM_UI_HANDLER_CONTINUE;
+			return WM_UI_HANDLER_BREAK;
 		}
 	}
-	else if (data->state == BUTTON_STATE_WAIT_DRAG) {
-		/* note: the 'BUTTON_STATE_WAIT_DRAG' part of 'ui_do_but_EXIT' could be refactored into its own function */
-		data->applied = false;
-		return ui_do_but_EXIT(C, but, data, event);
-	}
-
 	return WM_UI_HANDLER_CONTINUE;
 }
 
@@ -2535,13 +2543,15 @@
 				return WM_UI_HANDLER_CONTINUE;
 			}
 		}
+#ifdef USE_DRAG_TOGGLE
 		if (event->type == LEFTMOUSE && ui_is_but_bool(but)) {
 			button_activate_state(C, but, BUTTON_STATE_WAIT_DRAG);
 			data->dragstartx = event->x;
 			data->dragstarty = event->y;
 			return WM_UI_HANDLER_CONTINUE;
 		}
-		
+#endif
+
 		if (ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
 			int ret = WM_UI_HANDLER_BREAK;
 			/* XXX (a bit ugly) Special case handling for filebrowser drag button */
@@ -3257,13 +3267,14 @@
 				return WM_UI_HANDLER_BREAK;
 			}
 		}
+#ifdef USE_DRAG_TOGGLE
 		if (event->type == LEFTMOUSE && ui_is_but_bool(but)) {
 			button_activate_state(C, but, BUTTON_STATE_WAIT_DRAG);
 			data->dragstartx = event->x;
 			data->dragstarty = event->y;
 			return WM_UI_HANDLER_BREAK;
 		}
-		
+#endif
 		/* regular open menu */
 		if (ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
 			button_activate_state(C, but, BUTTON_STATE_MENU_OPEN);




More information about the Bf-blender-cvs mailing list