Mercurial > jwe > octave
changeset 29224:c2f3a0832cf0
fix possible glitch when interpreter is ready when main window is created
* interpreter-qobject.cc (execute): connect ready signal to new
slot interpreter_ready,
* octave-qobject.cc (base_qobject): initialize new flag m_interpreter_ready,
call handle_octave_ready in main_window if interpreter is ready;
(interpreter_ready): new slot for signal of interpreter being ready
* octave-qobject.h: new slot interpreter_ready, new flag m_interpreter_ready
author | Torsten Lilge <ttl-octave@mailbox.org> |
---|---|
date | Fri, 25 Dec 2020 17:13:14 +0100 |
parents | 8469b3aad7ac |
children | ab8aa1bb3c2f |
files | libgui/src/interpreter-qobject.cc libgui/src/octave-qobject.cc libgui/src/octave-qobject.h |
diffstat | 3 files changed, 21 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/interpreter-qobject.cc Wed Dec 23 11:23:44 2020 +0100 +++ b/libgui/src/interpreter-qobject.cc Fri Dec 25 17:13:14 2020 +0100 @@ -55,6 +55,9 @@ evmgr.connect_link (m_octave_qobj.get_qt_interpreter_events ()); evmgr.enable (); + connect (this, SIGNAL (ready (void)), + &m_octave_qobj, SLOT (interpreter_ready (void))); + int exit_status = 0; try
--- a/libgui/src/octave-qobject.cc Wed Dec 23 11:23:44 2020 +0100 +++ b/libgui/src/octave-qobject.cc Fri Dec 25 17:13:14 2020 +0100 @@ -165,7 +165,7 @@ m_qt_interpreter_events (new qt_interpreter_events (*this)), m_interpreter_qobj (new interpreter_qobject (*this)), m_main_thread (new QThread ()), m_gui_app (gui_app), - m_main_window (nullptr) + m_main_window (nullptr), m_interpreter_ready (false) { std::string show_gui_msgs = sys::env::getenv ("OCTAVE_SHOW_GUI_MESSAGES"); @@ -230,8 +230,8 @@ { m_main_window = new main_window (*this); - connect (m_interpreter_qobj, SIGNAL (ready (void)), - m_main_window, SLOT (handle_octave_ready (void))); + if (m_interpreter_ready) + m_main_window->handle_octave_ready (); connect (qt_link (), SIGNAL (focus_window_signal (const QString&)), @@ -271,6 +271,17 @@ string_vector::delete_c_str_vec (m_argv); } + void base_qobject::interpreter_ready (void) + { + // Slot for signal of interpreter being ready. + // If main window already exists, call initialization, + // otherwise store interpreter state + if (m_main_window) + m_main_window->handle_octave_ready (); + else + m_interpreter_ready = true; + } + void base_qobject::config_translators (void) { if (m_translators_installed)
--- a/libgui/src/octave-qobject.h Wed Dec 23 11:23:44 2020 +0100 +++ b/libgui/src/octave-qobject.h Fri Dec 25 17:13:14 2020 +0100 @@ -142,6 +142,8 @@ public slots: + void interpreter_ready (void); + void handle_interpreter_execution_finished (int); void handle_interpreter_shutdown_finished (int); @@ -185,6 +187,8 @@ bool m_gui_app; main_window *m_main_window; + + bool m_interpreter_ready; }; }