diff --git a/source/blender/draw/engines/overlay/overlay_next_mesh.hh b/source/blender/draw/engines/overlay/overlay_next_mesh.hh index d31edc27730..56b63483d52 100644 --- a/source/blender/draw/engines/overlay/overlay_next_mesh.hh +++ b/source/blender/draw/engines/overlay/overlay_next_mesh.hh @@ -528,16 +528,6 @@ class MeshUVs : Overlay { const ToolSettings *tool_setting = state.scene->toolsettings; const SpaceImage *space_image = reinterpret_cast(state.space_data); ::Image *image = space_image->image; - const bool is_tiled_image = image && (image->source == IMA_SRC_TILED); - const bool is_viewer = image && ELEM(image->type, IMA_TYPE_R_RESULT, IMA_TYPE_COMPOSITE); - /* Only disable UV drawing on top of render results. - * Otherwise, show UVs even in the absence of active image. */ - enabled_ = !is_viewer; - - if (!enabled_) { - return; - } - const bool space_mode_is_paint = space_image->mode == SI_MODE_PAINT; const bool space_mode_is_view = space_image->mode == SI_MODE_VIEW; const bool space_mode_is_mask = space_image->mode == SI_MODE_MASK; @@ -546,6 +536,31 @@ class MeshUVs : Overlay { const bool object_mode_is_edit = state.object_mode & OB_MODE_EDIT; const bool object_mode_is_paint = state.object_mode & OB_MODE_TEXTURE_PAINT; + const bool is_viewer = image && ELEM(image->type, IMA_TYPE_R_RESULT, IMA_TYPE_COMPOSITE); + const bool is_tiled_image = image && (image->source == IMA_SRC_TILED); + + /* The mask overlay is always drawn when enabled, even on top of viewers. */ + { + /* Mask Overlay. */ + show_mask_ = space_mode_is_mask && space_image->mask_info.mask && + space_image->mask_info.draw_flag & MASK_DRAWFLAG_OVERLAY; + if (show_mask_) { + mask_mode_ = eMaskOverlayMode(space_image->mask_info.overlay_mode); + mask_id_ = (Mask *)DEG_get_evaluated_id(state.depsgraph, &space_image->mask_info.mask->id); + } + else { + mask_id_ = nullptr; + } + } + + /* Only disable UV drawing on top of render results. + * Otherwise, show UVs even in the absence of active image. */ + enabled_ = !is_viewer || show_mask_; + + if (!enabled_) { + return; + } + { /* Edit UV Overlay. */ show_uv_edit = space_mode_is_uv && object_mode_is_edit; @@ -605,18 +620,6 @@ class MeshUVs : Overlay { (brush->image_brush_type == IMAGE_PAINT_BRUSH_TYPE_CLONE) && brush->clone.image; } - { - /* Mask Overlay. */ - show_mask_ = space_mode_is_mask && space_image->mask_info.mask && - space_image->mask_info.draw_flag & MASK_DRAWFLAG_OVERLAY; - if (show_mask_) { - mask_mode_ = eMaskOverlayMode(space_image->mask_info.overlay_mode); - mask_id_ = (Mask *)DEG_get_evaluated_id(state.depsgraph, &space_image->mask_info.mask->id); - } - else { - mask_id_ = nullptr; - } - } { /* UDIM Overlay. */ /* TODO: Always enable this overlay even if overlays are disabled. */