diff options
author | Campbell Barton <ideasman42@gmail.com> | 2017-11-27 10:15:47 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2017-11-27 10:36:54 +0300 |
commit | d4161845b28b83e2a49bca24b749afb4d0ab8af6 (patch) | |
tree | 200f432f1588ff328996d13e60ae22531c6c0e39 /source/blender/windowmanager/intern/wm_operators.c | |
parent | ee99d1453a5baed844582e35cf4618952b7023b3 (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.c | 33 |
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); |