changeset 29775:a64352cadda8

use interpreter events to set initial data for workspace and history widgets * octave-qobject.cc (base_qojbect::history_widget): Use interpreter_event to set initial history values. (base_qojbect::workspace_widget): Use interpreter_event to set initial workspace values. * event-manager.h, event-manager.cc (event_manager::set_history): New function.
author John W. Eaton <jwe@octave.org>
date Thu, 17 Jun 2021 16:24:37 -0400
parents aa46787ed8b7
children 0916ffc997e6
files libgui/src/octave-qobject.cc libinterp/corefcn/event-manager.cc libinterp/corefcn/event-manager.h
diffstat 3 files changed, 25 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/octave-qobject.cc	Thu Jun 17 15:43:08 2021 -0400
+++ b/libgui/src/octave-qobject.cc	Thu Jun 17 16:24:37 2021 -0400
@@ -478,7 +478,14 @@
         connect (qt_link (), &qt_interpreter_events::clear_history_signal,
                  m_history_widget, &history_dock_widget::clear_history);
 
-        qt_link()->set_history (octave::command_history::list ());
+        emit interpreter_event
+          ([=] (interpreter& interp) {
+            // INTERPRETER THREAD
+
+            event_manager& xevmgr = interp.get_event_manager ();
+
+            xevmgr.set_history ();
+          });
       }
 
     return m_history_widget;
@@ -571,6 +578,15 @@
                        xevmgr.edit_variable (name, val);
                      });
                  });
+
+        emit interpreter_event
+          ([=] (interpreter& interp) {
+            // INTERPRETER THREAD
+
+            event_manager& xevmgr = interp.get_event_manager ();
+
+            xevmgr.set_workspace ();
+          });
       }
 
     return m_workspace_widget;
--- a/libinterp/corefcn/event-manager.cc	Thu Jun 17 15:43:08 2021 -0400
+++ b/libinterp/corefcn/event-manager.cc	Thu Jun 17 16:24:37 2021 -0400
@@ -182,6 +182,12 @@
                                  tw.get_symbol_info (), true);
       }
   }
+
+  void event_manager::set_history (void)
+  {
+    if (enabled ())
+      instance->set_history (octave::command_history::list ());
+  }
 }
 
 // FIXME: Should the following function be __event_manager_desktop__
--- a/libinterp/corefcn/event-manager.h	Thu Jun 17 15:43:08 2021 -0400
+++ b/libinterp/corefcn/event-manager.h	Thu Jun 17 16:24:37 2021 -0400
@@ -653,6 +653,8 @@
         instance->update_prompt (prompt);
     }
 
+    OCTINTERP_API void set_history (void);
+
     void set_history (const string_vector& hist)
     {
       if (enabled ())