From 53314582cedbb437aa1c0f715b00524f5036124f Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Wed, 12 Nov 2003 21:42:10 +0000
Subject: [PATCH] Fix missing GUI update when deleting a View from a script

---
 Common/Views.cpp   | 13 ++++++++++---
 Fltk/Callbacks.cpp | 22 ++++++++++++++--------
 2 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/Common/Views.cpp b/Common/Views.cpp
index 7d41a67bb0..8de5cd0606 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,4 @@
-// $Id: Views.cpp,v 1.99 2003-11-08 05:59:35 geuzaine Exp $
+// $Id: Views.cpp,v 1.100 2003-11-12 21:42:10 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -29,6 +29,11 @@
 
 extern Context_T CTX;
 
+#if defined(HAVE_FLTK)
+extern int AddViewInUI(int, char *, int);
+extern int RemoveViewInUI(int);
+#endif
+
 #define VAL_INF 1.e200
 
 // Static reference view
@@ -350,7 +355,6 @@ void EndView(Post_View * v, int add_in_gui, char *file_name, char *name)
     v->smooth();
 
 #if defined(HAVE_FLTK)
-  extern int AddViewInUI(int, char *, int);
   if(!CTX.post.force_num && add_in_gui)
     AddViewInUI(List_Nbr(CTX.post.list), v->Name, v->Num);
 #endif
@@ -444,7 +448,6 @@ void DuplicateView(Post_View * v1, int withoptions)
     CopyViewOptions(v1, v2);
 
 #if defined(HAVE_FLTK)
-  extern int AddViewInUI(int, char *, int);
   AddViewInUI(List_Nbr(CTX.post.list), v2->Name, v2->Num);
 #endif
 }
@@ -462,6 +465,10 @@ bool FreeView(int num)
   FreeView(v);
   List_PSuppress(CTX.post.list, num);
 
+#if defined(HAVE_FLTK)
+  RemoveViewInUI(num);
+#endif
+
   Msg(INFO, "View %d deleted (%d views left)", num, List_Nbr(CTX.post.list));
   return true;
 }
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index d32ba31a81..57318d4301 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.184 2003-10-29 19:51:43 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.185 2003-11-12 21:42:10 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -152,6 +152,19 @@ int AddViewInUI(int i, char *Name, int Num)
   return 0;
 }
 
+int RemoveViewInUI(int i)
+{
+  if(i > NB_BUTT_MAX - 1)
+    return 1;
+  if(WID) {
+    WID->check_anim_buttons();
+    if(WID->get_context() == 3)
+      WID->set_context(menu_post, 0);
+    WID->reset_option_browser();
+  }
+  return 0;
+}
+
 int SetGlobalShortcut(int event)
 {
   return WID->global_shortcuts(event);
@@ -2766,13 +2779,6 @@ void view_remove_cb(CALLBACK_ARGS)
 {
   FreeView((long int)data);
 
-  WID->check_anim_buttons();
-
-  if(WID->get_context() == 3)
-    WID->set_context(menu_post, 0);
-
-  WID->reset_option_browser();
-
   if(!REMOVE_ALL_VIEWS)
     Draw();
 }
-- 
GitLab