[Bf-blender-cvs] [f7123f0f11c] blender2.8: WM: manipulator redo support
Campbell Barton
noreply at git.blender.org
Sun May 6 10:19:56 CEST 2018
Commit: f7123f0f11c747847a0b5f785fe393f073efcc1d
Author: Campbell Barton
Date: Sun May 6 09:49:55 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBf7123f0f11c747847a0b5f785fe393f073efcc1d
WM: manipulator redo support
Support for adjusting a setting from the last executed operator.
===================================================================
M source/blender/windowmanager/manipulators/WM_manipulator_types.h
M source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
===================================================================
diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_types.h b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
index 8a5580582d7..e4482e797e3 100644
--- a/source/blender/windowmanager/manipulators/WM_manipulator_types.h
+++ b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
@@ -153,6 +153,8 @@ typedef struct wmManipulatorOpElem {
/* operator properties if manipulator spawns and controls an operator,
* or owner pointer if manipulator spawns and controls a property */
PointerRNA ptr;
+
+ bool is_redo;
} wmManipulatorOpElem;
/* manipulators are set per region by registering them on manipulator-maps */
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c b/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
index 31861df1db2..3d7403dc0e1 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
@@ -54,6 +54,7 @@
#include "wm_event_system.h"
#include "ED_screen.h"
+#include "ED_undo.h"
/* own includes */
#include "wm_manipulator_wmapi.h"
@@ -357,6 +358,21 @@ static bool manipulator_tweak_start_and_finish(
*r_is_modal = false;
}
if (mpop && mpop->type) {
+
+ /* Undo/Redo */
+ if (mpop->is_redo) {
+ wmWindowManager *wm = CTX_wm_manager(C);
+ wmOperator *op = WM_operator_last_redo(C);
+
+ /* We may want to enable this, for now the manipulator can manage it's own properties. */
+#if 0
+ IDP_MergeGroup(mpop->ptr.data, op->properties, false);
+#endif
+
+ WM_operator_free_all_after(wm, op);
+ ED_undo_pop_op(C, op);
+ }
+
/* XXX temporary workaround for modal manipulator operator
* conflicting with modal operator attached to manipulator */
if (mpop->type->modal) {
More information about the Bf-blender-cvs
mailing list