From 1aeb9294f4aad7f7cdc6aa1b946d0f92e413710f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 28 Feb 2018 23:09:33 +1100 Subject: WorkSpace: use existing objects mode on select When selecting an object which is already visible in another window use the mode from that workspace without performing any mode switching. --- source/blender/editors/screen/workspace_edit.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/screen/workspace_edit.c') diff --git a/source/blender/editors/screen/workspace_edit.c b/source/blender/editors/screen/workspace_edit.c index 94527b82ce8..839b7468d4b 100644 --- a/source/blender/editors/screen/workspace_edit.c +++ b/source/blender/editors/screen/workspace_edit.c @@ -336,11 +336,31 @@ void ED_workspace_object_mode_sync_from_scene(wmWindowManager *wm, WorkSpace *wo { ViewLayer *view_layer = BKE_workspace_view_layer_get(workspace, scene); if (view_layer) { - Object *obact = obact = OBACT(view_layer); + Object *obact = OBACT(view_layer); ED_workspace_object_mode_sync_from_object(wm, workspace, obact); } } +bool ED_workspace_object_mode_in_other_window( + struct wmWindowManager *wm, WorkSpace *workspace, Object *obact, + eObjectMode *r_object_mode) +{ + for (wmWindow *win = wm->windows.first; win; win = win->next) { + WorkSpace *workspace_iter = BKE_workspace_active_get(win->workspace_hook); + if (workspace != workspace_iter) { + Scene *scene_iter = WM_window_get_active_scene(win); + ViewLayer *view_layer_iter = BKE_view_layer_from_workspace_get(scene_iter, workspace_iter); + Object *obact_iter = OBACT(view_layer_iter); + if (obact == obact_iter) { + *r_object_mode = workspace_iter->object_mode; + return true; + } + } + } + + return false; +} + /** \} Workspace API */ -- cgit v1.2.3