Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2017-11-27 10:15:47 +0300
committerCampbell Barton <ideasman42@gmail.com>2017-11-27 10:36:54 +0300
commitd4161845b28b83e2a49bca24b749afb4d0ab8af6 (patch)
tree200f432f1588ff328996d13e60ae22531c6c0e39 /source/blender/windowmanager/intern/wm_operators.c
parentee99d1453a5baed844582e35cf4618952b7023b3 (diff)
Tool System: show manipulators at startup
Support duplicating, switching workspaces too.
Diffstat (limited to 'source/blender/windowmanager/intern/wm_operators.c')
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c33
1 files changed, 7 insertions, 26 deletions
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index a8281b7441e..ad1d0730ad2 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -1812,35 +1812,16 @@ static void WM_OT_operator_defaults(wmOperatorType *ot)
static int wm_operator_tool_set_exec(bContext *C, wmOperator *op)
{
- Main *bmain = CTX_data_main(C);
- WorkSpace *workspace = CTX_wm_workspace(C);
ScrArea *sa = CTX_wm_area(C);
- char id_keymap[sizeof(workspace->tool.keymap)];
- char id_manipulator_group[sizeof(workspace->tool.manipulator_group)];
- RNA_string_get(op->ptr, "keymap", id_keymap);
- RNA_string_get(op->ptr, "manipulator_group", id_manipulator_group);
- int index = RNA_int_get(op->ptr, "index");
-
- workspace->tool.index = index;
-
- if (workspace->tool.manipulator_group[0]) {
- wmManipulatorGroupType *wgt = WM_manipulatorgrouptype_find(workspace->tool.manipulator_group, false);
- if (wgt != NULL) {
- wmManipulatorMapType *mmap_type = WM_manipulatormaptype_ensure(&wgt->mmap_params);
- WM_manipulatormaptype_group_unlink(C, bmain, mmap_type, wgt);
- }
- }
- /* NOTE: we may want to move this logic into a function. */
- {
- BLI_strncpy(workspace->tool.keymap, id_keymap, sizeof(workspace->tool.keymap));
- BLI_strncpy(workspace->tool.manipulator_group, id_manipulator_group, sizeof(workspace->tool.manipulator_group));
- workspace->tool.spacetype = sa->spacetype;
- }
+ bToolDef tool_def = {0};
- if (workspace->tool.manipulator_group[0]) {
- WM_manipulator_group_type_ensure(workspace->tool.manipulator_group);
- }
+ tool_def.index = RNA_int_get(op->ptr, "index");
+ tool_def.spacetype = sa->spacetype;
+ RNA_string_get(op->ptr, "keymap", tool_def.keymap);
+ RNA_string_get(op->ptr, "manipulator_group", tool_def.manipulator_group);
+
+ WM_toolsystem_set(C, &tool_def);
/* For some reason redraw fails with menus (even though 'ar' isn't the menu's region). */
ED_area_tag_redraw(sa);