[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54850] trunk/blender/source/blender/ editors/interface: fix for toggle buttons not taking effect on mousedown.

Campbell Barton ideasman42 at gmail.com
Mon Feb 25 12:52:18 CET 2013


Revision: 54850
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54850
Author:   campbellbarton
Date:     2013-02-25 11:52:18 +0000 (Mon, 25 Feb 2013)
Log Message:
-----------
fix for toggle buttons not taking effect on mousedown.

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

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-02-25 10:19:02 UTC (rev 54849)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-02-25 11:52:18 UTC (rev 54850)
@@ -767,7 +767,8 @@
 		data->cancel = TRUE;
 		
 		if (ui_is_but_bool(but)) {
-			const bool is_set = (ui_get_but_val(but) != 0.0);
+			/* assumes button has already been pressed */
+			const bool is_set = (ui_get_but_val(but) == 0.0);
 			PointerRNA ptr;
 			WM_operator_properties_create(&ptr, "UI_OT_drag_toggle");
 			RNA_boolean_set(&ptr, "state", !is_set);
@@ -2487,6 +2488,7 @@
 {
 	if (data->state == BUTTON_STATE_HIGHLIGHT) {
 		if (event->type == LEFTMOUSE && event->val == KM_PRESS && ui_is_but_bool(but)) {
+			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;
@@ -2502,9 +2504,12 @@
 	}
 	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->cancel = true;
+		data->applied = false;
 		return ui_do_but_EXIT(C, but, data, event);
 	}
-	return WM_UI_HANDLER_CONTINUE;
+
+	return WM_UI_HANDLER_BREAK;
 }
 
 static int ui_do_but_EXIT(bContext *C, uiBut *but, uiHandleButtonData *data, const wmEvent *event)

Modified: trunk/blender/source/blender/editors/interface/interface_ops.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_ops.c	2013-02-25 10:19:02 UTC (rev 54849)
+++ trunk/blender/source/blender/editors/interface/interface_ops.c	2013-02-25 11:52:18 UTC (rev 54850)
@@ -1252,6 +1252,7 @@
 	}
 
 	if (done) {
+		WM_event_add_mousemove(C);
 		MEM_freeN(op->customdata);
 		return OPERATOR_FINISHED;
 	}




More information about the Bf-blender-cvs mailing list