From 30fbf905ef8bd587eef43030b81d75b9eb704bec Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Tue, 26 Mar 2019 07:58:14 +0100 Subject: Fix T62774: Respect Show Overlays Some draw code did not respect Show Overlays option. These were: * All mode based drawing engines (edit mode) * Wireframe drawing This change make them respect the Show Overlays Option. Reviewed By: fclem, billreynish Maniphest Tasks: T62774 Differential Revision: https://developer.blender.org/D4572 --- source/blender/draw/intern/draw_manager.c | 2 -- source/blender/draw/modes/overlay_mode.c | 8 +++----- 2 files changed, 3 insertions(+), 7 deletions(-) (limited to 'source/blender/draw') diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index b826a03e715..4ecfb903a78 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1331,8 +1331,6 @@ static void drw_engines_enable(ViewLayer *view_layer, RenderEngineType *engine_t if (v3d->shading.type == OB_WIRE) { drw_engines_enable_from_overlays(v3d->overlay.flag); } - - drw_engines_enable_from_mode(mode); } } diff --git a/source/blender/draw/modes/overlay_mode.c b/source/blender/draw/modes/overlay_mode.c index 6dacf27ee98..52e8f73f971 100644 --- a/source/blender/draw/modes/overlay_mode.c +++ b/source/blender/draw/modes/overlay_mode.c @@ -177,7 +177,6 @@ static void overlay_cache_init(void *vedata) if (v3d->shading.type == OB_WIRE) { g_data->overlay.flag |= V3D_OVERLAY_WIREFRAMES; - g_data->show_overlays = true; if (ELEM(v3d->shading.wire_color_type, V3D_SHADING_OBJECT_COLOR, @@ -328,8 +327,7 @@ static void overlay_cache_populate(void *vedata, Object *ob) const DRWContextState *draw_ctx = DRW_context_state_get(); View3D *v3d = draw_ctx->v3d; - if ((!pd->show_overlays) || - (ob->dt < OB_WIRE) || + if ((ob->dt < OB_WIRE) || (!DRW_object_is_renderable(ob) && (ob->dt != OB_WIRE))) { return; @@ -359,14 +357,14 @@ static void overlay_cache_populate(void *vedata, Object *ob) } /* Don't do that in edit Mesh mode, unless there is a modifier preview. */ - if ((((ob != draw_ctx->object_edit) && !is_edit_mode) || has_edit_mesh_cage) || + if ((!pd->show_overlays) || (((ob != draw_ctx->object_edit) && !is_edit_mode) || has_edit_mesh_cage) || ob->type != OB_MESH) { const bool is_active = (ob == draw_ctx->obact); const bool is_sculpt_mode = is_active && (draw_ctx->object_mode & OB_MODE_SCULPT) != 0; const bool all_wires = (ob->dtx & OB_DRAW_ALL_EDGES); const bool is_wire = (ob->dt < OB_SOLID); - const bool use_coloring = (!is_edit_mode && !is_sculpt_mode && !has_edit_mesh_cage); + const bool use_coloring = (pd->show_overlays && !is_edit_mode && !is_sculpt_mode && !has_edit_mesh_cage); const int stencil_mask = (ob->dtx & OB_DRAWXRAY) ? 0x00 : 0xFF; float *rim_col, *wire_col; DRWShadingGroup *shgrp = NULL; -- cgit v1.2.3