[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54861] trunk/blender/source/blender/ editors: revert some changes from own commit r54850 which broke undo for toggle buttons , also make toggle buttons auto-key.

Campbell Barton ideasman42 at gmail.com
Mon Feb 25 22:13:41 CET 2013


Revision: 54861
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54861
Author:   campbellbarton
Date:     2013-02-25 21:13:40 +0000 (Mon, 25 Feb 2013)
Log Message:
-----------
revert some changes from own commit r54850 which broke undo for toggle buttons, also make toggle buttons auto-key.

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54850

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

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-02-25 20:15:42 UTC (rev 54860)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2013-02-25 21:13:40 UTC (rev 54861)
@@ -406,9 +406,9 @@
 	}
 }
 
-static void ui_apply_autokey_undo(bContext *C, uiBut *but)
+/* typically call ui_apply_undo(), ui_apply_autokey() */
+static void ui_apply_undo(uiBut *but)
 {
-	Scene *scene = CTX_data_scene(C);
 	uiAfterFunc *after;
 
 	if (but->flag & UI_BUT_UNDO) {
@@ -430,7 +430,12 @@
 		BLI_strncpy(after->undostr, str, sizeof(after->undostr));
 		BLI_addtail(&UIAfterFuncs, after);
 	}
+}
 
+static void ui_apply_autokey(bContext *C, uiBut *but)
+{
+	Scene *scene = CTX_data_scene(C);
+
 	/* try autokey */
 	ui_but_anim_autokey(C, but, scene, scene->r.cfra);
 
@@ -770,6 +775,8 @@
 			/* assumes button has already been pressed */
 			const bool is_set = (ui_get_but_val(but) == 0.0);
 			PointerRNA ptr;
+			/* auto-key is typically called on mouse-up, but we'r leaving the button so call here */
+			ui_apply_autokey(C, but);
 			WM_operator_properties_create(&ptr, "UI_OT_drag_toggle");
 			RNA_boolean_set(&ptr, "state", !is_set);
 			RNA_int_set(&ptr, "last_x", data->dragstartx);
@@ -2504,12 +2511,11 @@
 	}
 	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_BREAK;
+	return WM_UI_HANDLER_CONTINUE;
 }
 
 static int ui_do_but_EXIT(bContext *C, uiBut *but, uiHandleButtonData *data, const wmEvent *event)
@@ -5800,7 +5806,8 @@
 
 	if (!onfree && !data->cancel) {
 		/* autokey & undo push */
-		ui_apply_autokey_undo(C, but);
+		ui_apply_undo(but);
+		ui_apply_autokey(C, but);
 
 		/* popup menu memory */
 		if (block->flag & UI_BLOCK_POPUP_MEMORY)
@@ -6089,6 +6096,7 @@
 	data->region = ar;
 	ui_apply_button(C, but->block, but, data, true);
 	/* use onfree event so undo is handled by caller and apply is already done above */
+	ui_apply_autokey(C, but);
 	button_activate_exit((bContext *)C, but, data, false, true);
 	but->active = active_back;
 }

Modified: trunk/blender/source/blender/editors/util/undo.c
===================================================================
--- trunk/blender/source/blender/editors/util/undo.c	2013-02-25 20:15:42 UTC (rev 54860)
+++ trunk/blender/source/blender/editors/util/undo.c	2013-02-25 21:13:40 UTC (rev 54861)
@@ -83,8 +83,8 @@
 	Object *obact = CTX_data_active_object(C);
 
 	if (G.debug & G_DEBUG)
-		printf("undo push %s\n", str);
-	
+		printf("%s: %s\n", __func__, str);
+
 	if (obedit) {
 		if (U.undosteps == 0) return;
 		




More information about the Bf-blender-cvs mailing list