From 1c24c04e6023f2d2a328dfcdc9f86cd381d029a3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 5 Apr 2018 18:20:27 +0200 Subject: Remove workspace object mode, reverts changes w/ 2.8 This caused too many problems syncing object modes with multiple objects/windows/workspaces, see: D3130 for details. --- source/blender/editors/sculpt_paint/paint_image.c | 47 ++++++++--------------- 1 file changed, 17 insertions(+), 30 deletions(-) (limited to 'source/blender/editors/sculpt_paint/paint_image.c') diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index e72dac3b19e..ae26de8b269 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -269,13 +269,11 @@ static int image_paint_poll(bContext *C) { Object *obact; - if (!image_paint_brush(C)) { + if (!image_paint_brush(C)) return 0; - } - const WorkSpace *workspace = CTX_wm_workspace(C); obact = CTX_data_active_object(C); - if ((obact && workspace->object_mode & OB_MODE_TEXTURE_PAINT) && CTX_wm_region_view3d(C)) { + if ((obact && obact->mode & OB_MODE_TEXTURE_PAINT) && CTX_wm_region_view3d(C)) { return 1; } else { @@ -1048,21 +1046,19 @@ static int texture_paint_toggle_poll(bContext *C) static int texture_paint_toggle_exec(bContext *C, wmOperator *op) { - wmWindowManager *wm = CTX_wm_manager(C); - WorkSpace *workspace = CTX_wm_workspace(C); Scene *scene = CTX_data_scene(C); Object *ob = CTX_data_active_object(C); const int mode_flag = OB_MODE_TEXTURE_PAINT; - const bool is_mode_set = (workspace->object_mode & mode_flag) != 0; + const bool is_mode_set = (ob->mode & mode_flag) != 0; if (!is_mode_set) { - if (!ED_object_mode_compat_set(C, workspace, mode_flag, op->reports)) { + if (!ED_object_mode_compat_set(C, ob, mode_flag, op->reports)) { return OPERATOR_CANCELLED; } } - if (workspace->object_mode & mode_flag) { - workspace->object_mode &= ~mode_flag; + if (ob->mode & mode_flag) { + ob->mode &= ~mode_flag; if (U.glreslimit != 0) GPU_free_images(); @@ -1112,7 +1108,7 @@ static int texture_paint_toggle_exec(bContext *C, wmOperator *op) } } - workspace->object_mode |= mode_flag; + ob->mode |= mode_flag; BKE_paint_init(scene, ePaintTextureProjective, PAINT_CURSOR_TEXTURE_PAINT); @@ -1123,7 +1119,7 @@ static int texture_paint_toggle_exec(bContext *C, wmOperator *op) toggle_paint_cursor(C, 1); } - ED_workspace_object_mode_sync_from_object(wm, workspace, ob); + // ED_workspace_object_mode_sync_from_object(wm, workspace, ob); GPU_drawobject_free(ob->derivedFinal); WM_event_add_notifier(C, NC_SCENE | ND_MODE, scene); @@ -1151,10 +1147,9 @@ static int brush_colors_flip_exec(bContext *C, wmOperator *UNUSED(op)) { UnifiedPaintSettings *ups = &CTX_data_tool_settings(C)->unified_paint_settings; - WorkSpace *workspace = CTX_wm_workspace(C); Object *ob = CTX_data_active_object(C); Brush *br; - if (!(ob && (workspace->object_mode & OB_MODE_VERTEX_PAINT))) { + if (!(ob && (ob->mode & OB_MODE_VERTEX_PAINT))) { br = image_paint_brush(C); } else { @@ -1185,11 +1180,8 @@ static int brush_colors_flip_poll(bContext *C) } else { Object *ob = CTX_data_active_object(C); - if (ob) { - WorkSpace *workspace = CTX_wm_workspace(C); - if (workspace->object_mode & OB_MODE_VERTEX_PAINT) { - return 1; - } + if (ob && (ob->mode & OB_MODE_VERTEX_PAINT)) { + return 1; } } return 0; @@ -1231,12 +1223,10 @@ void ED_imapaint_bucket_fill(struct bContext *C, float color[3], wmOperator *op) static int texture_paint_poll(bContext *C) { - if (texture_paint_toggle_poll(C)) { - WorkSpace *workspace = CTX_wm_workspace(C); - if (workspace->object_mode & OB_MODE_TEXTURE_PAINT) { + if (texture_paint_toggle_poll(C)) + if (CTX_data_active_object(C)->mode & OB_MODE_TEXTURE_PAINT) return 1; - } - } + return 0; } @@ -1247,19 +1237,16 @@ int image_texture_paint_poll(bContext *C) int facemask_paint_poll(bContext *C) { - const WorkSpace *workspace = CTX_wm_workspace(C); - return BKE_paint_select_face_test(CTX_data_active_object(C), workspace->object_mode); + return BKE_paint_select_face_test(CTX_data_active_object(C)); } int vert_paint_poll(bContext *C) { - const WorkSpace *workspace = CTX_wm_workspace(C); - return BKE_paint_select_vert_test(CTX_data_active_object(C), workspace->object_mode); + return BKE_paint_select_vert_test(CTX_data_active_object(C)); } int mask_paint_poll(bContext *C) { - const WorkSpace *workspace = CTX_wm_workspace(C); - return BKE_paint_select_elem_test(CTX_data_active_object(C), workspace->object_mode); + return BKE_paint_select_elem_test(CTX_data_active_object(C)); } -- cgit v1.2.3