in tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java [328:359]
private boolean setOverlayVisibility(UUID id, boolean isVisible) {
if (isVisible) {
setOverlayVisibility(highlightId, false);
}
if (!isVisible && highlightId.equals(id)) {
highlightId = NULL_ID;
}
View view = getView(id);
if (view != null) {
if (isVisible) {
RibDebugOverlay overlay = new RibDebugOverlay();
view.getOverlay().add(overlay);
view.invalidate();
idsToOverlay.put(id, new WeakReference<>(overlay));
highlightId = id;
} else {
WeakReference<RibDebugOverlay> overlayRef = idsToOverlay.get(id);
if (overlayRef == null) {
return false;
}
idsToOverlay.remove(id);
RibDebugOverlay overlay = overlayRef.get();
if (overlay == null) {
return false;
}
view.getOverlay().remove(overlay);
view.invalidate();
}
}
return true;
}