# HG changeset patch # User Torsten Lilge # Date 1608912794 -3600 # Node ID c2f3a0832cf0216c2960f3be9e7e5693a0b06af8 # Parent 8469b3aad7ac7d870ab168758564e84bb304b3c0 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 diff -r 8469b3aad7ac -r c2f3a0832cf0 libgui/src/interpreter-qobject.cc --- 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 diff -r 8469b3aad7ac -r c2f3a0832cf0 libgui/src/octave-qobject.cc --- 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) diff -r 8469b3aad7ac -r c2f3a0832cf0 libgui/src/octave-qobject.h --- 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; }; }