diff options
author | Lukas Toenne <lukas.toenne@gmail.com> | 2018-12-20 16:29:01 +0300 |
---|---|---|
committer | Lukas Toenne <lukas.toenne@gmail.com> | 2018-12-20 16:29:01 +0300 |
commit | 96e40fef46b923625c419bf2aa687c8bd25260da (patch) | |
tree | eaa4dd5766794994484839d0b3c5f3640fc8e3ea /source/blender/windowmanager/intern/wm_toolsystem.c | |
parent | cb7d8a4a0f40603c7e98ff70d488edca41c38fef (diff) |
Fix tool system integration of hair edit brushes.hair_object
Diffstat (limited to 'source/blender/windowmanager/intern/wm_toolsystem.c')
-rw-r--r-- | source/blender/windowmanager/intern/wm_toolsystem.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/source/blender/windowmanager/intern/wm_toolsystem.c b/source/blender/windowmanager/intern/wm_toolsystem.c index ef8a57a1255..49d4b4e52cb 100644 --- a/source/blender/windowmanager/intern/wm_toolsystem.c +++ b/source/blender/windowmanager/intern/wm_toolsystem.c @@ -255,6 +255,23 @@ static void toolsystem_ref_link(bContext *C, WorkSpace *workspace, bToolRef *tre } } } + else if ((tref->space_type == SPACE_VIEW3D) && + (tref->mode == CTX_MODE_EDIT_HAIR)) + { + const EnumPropertyItem *items = rna_enum_hair_edit_brush_items; + const int i = RNA_enum_from_identifier(items, tref_rt->data_block); + if (i != -1) { + const int value = items[i].value; + wmWindowManager *wm = bmain->wm.first; + for (wmWindow *win = wm->windows.first; win; win = win->next) { + if (workspace == WM_window_get_active_workspace(win)) { + Scene *scene = WM_window_get_active_scene(win); + ToolSettings *ts = scene->toolsettings; + ts->hair_edit.brushtype = value; + } + } + } + } else if ((tref->space_type == SPACE_IMAGE) && (tref->mode == SI_MODE_UV)) { @@ -509,6 +526,19 @@ void WM_toolsystem_ref_sync_from_context( } } } + else if ((tref->space_type == SPACE_VIEW3D) && + (tref->mode == CTX_MODE_EDIT_HAIR)) + { + if (ob->mode & OB_MODE_EDIT) { + const EnumPropertyItem *items = rna_enum_hair_edit_brush_items; + const int i = RNA_enum_from_value(items, ts->hair_edit.brushtype); + const EnumPropertyItem *item = &items[i]; + if (!STREQ(tref_rt->data_block, item->identifier)) { + STRNCPY(tref_rt->data_block, item->identifier); + STRNCPY(tref->idname, item->name); + } + } + } else if ((tref->space_type == SPACE_IMAGE) && (tref->mode == SI_MODE_UV)) { |