From cacd74b9e6c4a528f26dff60e445f9e9bf7eb8aa Mon Sep 17 00:00:00 2001
From: Maxime Jacquemin <maxime2.jacquemin@gmail.com>
Date: Wed, 20 Apr 2022 16:08:37 +0200
Subject: [PATCH] [ivette] Deactivation of Evaluation when Eva component is not
 visible

---
 ivette/src/dome/main/menubar.ts               |  2 +-
 ivette/src/frama-c/kernel/ASTview.tsx         | 11 -----------
 ivette/src/frama-c/plugins/eva/valuetable.tsx |  4 ++++
 3 files changed, 5 insertions(+), 12 deletions(-)

diff --git a/ivette/src/dome/main/menubar.ts b/ivette/src/dome/main/menubar.ts
index a0095ce60be..52f4212c96f 100644
--- a/ivette/src/dome/main/menubar.ts
+++ b/ivette/src/dome/main/menubar.ts
@@ -404,7 +404,7 @@ export function setMenuItem({ id, ...options }: CustomMenuItem) {
   if (entry) {
     if (entry.spec) Object.assign(entry.spec, options);
     if (entry.item) Object.assign(entry.item, options);
-    if (options.label || options.type || options.click) requestUpdate();
+    requestUpdate ();
   } else
     console.warn(`[Dome] unknown menu item #${id}`);
 }
diff --git a/ivette/src/frama-c/kernel/ASTview.tsx b/ivette/src/frama-c/kernel/ASTview.tsx
index 304abf08132..339961b65b0 100644
--- a/ivette/src/frama-c/kernel/ASTview.tsx
+++ b/ivette/src/frama-c/kernel/ASTview.tsx
@@ -31,8 +31,6 @@ import _ from 'lodash';
 import * as Server from 'frama-c/server';
 import * as States from 'frama-c/states';
 import * as RichText from 'frama-c/richtext';
-import * as Eva from 'frama-c/plugins/eva/api/general';
-import { evaluateEvent } from 'frama-c/plugins/eva/valuetable';
 
 import * as Dome from 'dome';
 import { RichTextBuffer } from 'dome/text/buffers';
@@ -249,9 +247,7 @@ export default function ASTview() {
     if (meta) States.MetaSelection.emit(location);
   }
 
-  const computationState = States.useSyncValue(Eva.computationState);
   async function onContextMenu(markerId: string) {
-    onSelection(markerId);
     const items = [];
     const selectedMarkerInfo = markersInfo.getData(markerId);
     if (selectedMarkerInfo?.var === 'function') {
@@ -305,13 +301,6 @@ export default function ASTview() {
       enabled,
       onClick: () => onClick('Reads'),
     });
-    if (computationState === 'computed') {
-      items.push({
-        label: 'Evaluate',
-        enabled: true,
-        onClick: () => evaluateEvent.emit(),
-      });
-    }
     if (items.length > 0)
       Dome.popupMenu(items);
   }
diff --git a/ivette/src/frama-c/plugins/eva/valuetable.tsx b/ivette/src/frama-c/plugins/eva/valuetable.tsx
index c60093ea90b..00c3b7738ba 100644
--- a/ivette/src/frama-c/plugins/eva/valuetable.tsx
+++ b/ivette/src/frama-c/plugins/eva/valuetable.tsx
@@ -949,6 +949,10 @@ function useEvaluationMode(props: EvaluationModeProps): void {
     key: 'Cmd+E',
     onClick: () => evaluateEvent.emit(),
   });
+  React.useEffect(() => {
+    Dome.setMenuItem({ id: 'EvaluateMenu', enabled: true });
+    return () => Dome.setMenuItem({ id: 'EvaluateMenu', enabled: false });
+  });
 }
 
 /* -------------------------------------------------------------------------- */
-- 
GitLab