From 2d8c588fbd0b992e3eb57f335c62ff2a07277b06 Mon Sep 17 00:00:00 2001
From: Xiao Gui <xgui3783@gmail.com>
Date: Fri, 2 Jun 2023 13:28:38 +0200
Subject: [PATCH] fix: custom color map bypass selected region

---
 .../nehuba/layerCtrl.service/layerCtrl.service.ts        | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts
index 5f1e17c0f..be87e8eee 100644
--- a/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts
+++ b/src/viewerModule/nehuba/layerCtrl.service/layerCtrl.service.ts
@@ -54,6 +54,8 @@ export class NehubaLayerControlService implements OnDestroy{
         const cmCustomLayers = layers.filter(l => l.clType === "customlayer/colormap") as atlasAppearance.const.ColorMapCustomLayer[]
         const cmBaseLayers = layers.filter(l => l.clType === "baselayer/colormap") as atlasAppearance.const.ColorMapCustomLayer[]
         
+        const usingCustomCM = cmCustomLayers.length > 0
+
         const useCm = (() => {
           /**
            * if custom layer exist, use the last custom layer
@@ -79,7 +81,12 @@ export class NehubaLayerControlService implements OnDestroy{
         for (const [ngId, labelRecord] of Object.entries(record)) {
           for (const [label, region] of Object.entries(labelRecord)) {
             if (!region.color) continue
-            const [ red, green, blue ] = selectedRegionNameSet.size === 0 || selectedRegionNameSet.has(region.name)
+            /**
+             * if custom color map is used, do *not* selectively paint selected region
+             * custom color map can choose to subscribe to selected regions, and update the color map accordingly, 
+             * if they wish to respect the selected regions
+             */
+            const [ red, green, blue ] = usingCustomCM || selectedRegionNameSet.size === 0 || selectedRegionNameSet.has(region.name)
               ? useCm.get(region) || [200, 200, 200]
               : [255, 255, 255]
             if (!returnVal[ngId]) {
-- 
GitLab