[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