# HG changeset patch # User Torsten Lilge # Date 1654876943 -7200 # Node ID 9c0099048264e50b13082b28aa8ba37e626f41db # Parent d5696a4efa848adcf9aeae0181a0bbaef5caa1ee exp cmd widget: fix missing promt after error * octave-qobject.cc (base_qobject::terminal_widget): connect signals of interpreter events to terminal signals instead of slots * qt-interpreter-events.cc (display_exception): emit signal for new command line after exception message in eyp. terminal widget * qt-interpreter-events.h: new signal new_command_line_signal * terminal-dock-widget.cc (terminal_dock_widget): connect new interpreter triggered signal to related slot in console; (interpreter_output): removed, slot was only emitting a signal, which is now directly connected to the first signal; (update_prompt): dito * terminal-dock-widget.h: new signal new_command_line_signal, removed interpreter_output and update_prompt diff -r d5696a4efa84 -r 9c0099048264 libgui/src/octave-qobject.cc --- a/libgui/src/octave-qobject.cc Fri Jun 10 18:02:21 2022 +0200 +++ b/libgui/src/octave-qobject.cc Fri Jun 10 18:02:23 2022 +0200 @@ -474,10 +474,13 @@ this, &base_qobject::interpreter_stop); connect (qt_link (), &qt_interpreter_events::interpreter_output_signal, - m_terminal_widget, &terminal_dock_widget::interpreter_output); + m_terminal_widget, &terminal_dock_widget::interpreter_output_signal); connect (qt_link (), &qt_interpreter_events::update_prompt_signal, - m_terminal_widget, &terminal_dock_widget::update_prompt); + m_terminal_widget, &terminal_dock_widget::update_prompt_signal); + + connect (qt_link (), &qt_interpreter_events::new_command_line_signal, + m_terminal_widget, &terminal_dock_widget::new_command_line_signal); connect_interpreter_events (cmd_widget); } diff -r d5696a4efa84 -r 9c0099048264 libgui/src/qt-interpreter-events.cc --- a/libgui/src/qt-interpreter-events.cc Fri Jun 10 18:02:21 2022 +0200 +++ b/libgui/src/qt-interpreter-events.cc Fri Jun 10 18:02:23 2022 +0200 @@ -510,9 +510,12 @@ if (m_octave_qobj.experimental_terminal_widget () && m_octave_qobj.have_terminal_window ()) { + // Output the exception message std::ostringstream buf; ee.display (buf); emit interpreter_output_signal (QString::fromStdString (buf.str ())); + // Create w new command line + emit new_command_line_signal (); } else { diff -r d5696a4efa84 -r 9c0099048264 libgui/src/qt-interpreter-events.h --- a/libgui/src/qt-interpreter-events.h Fri Jun 10 18:02:21 2022 +0200 +++ b/libgui/src/qt-interpreter-events.h Fri Jun 10 18:02:23 2022 +0200 @@ -287,8 +287,9 @@ void show_community_news_signal (int serial); void show_release_notes_signal (void); - // Note: this signal currently not used by the old terminal widget. + // Note: the next two signals are currently not used by the old terminal widget. void interpreter_output_signal (const QString& msg); + void new_command_line_signal (const QString& msg = QString ()); void gui_status_update_signal (const QString& feature, const QString& status); diff -r d5696a4efa84 -r 9c0099048264 libgui/src/terminal-dock-widget.cc --- a/libgui/src/terminal-dock-widget.cc Fri Jun 10 18:02:21 2022 +0200 +++ b/libgui/src/terminal-dock-widget.cc Fri Jun 10 18:02:23 2022 +0200 @@ -67,6 +67,9 @@ connect (this, &terminal_dock_widget::execute_command_signal, con, &console::execute_command); + connect (this, &terminal_dock_widget::new_command_line_signal, + con, &console::new_command_line); + m_terminal = widget; } else @@ -147,18 +150,6 @@ emit settings_changed (settings); } - void terminal_dock_widget::interpreter_output (const QString& msg) - { - if (m_experimental_terminal_widget) - emit interpreter_output_signal (msg); - } - - void terminal_dock_widget::update_prompt (const QString& prompt) - { - if (m_experimental_terminal_widget) - emit update_prompt_signal (prompt); - } - void terminal_dock_widget::init_command_prompt () { if (m_experimental_terminal_widget) diff -r d5696a4efa84 -r 9c0099048264 libgui/src/terminal-dock-widget.h --- a/libgui/src/terminal-dock-widget.h Fri Jun 10 18:02:21 2022 +0200 +++ b/libgui/src/terminal-dock-widget.h Fri Jun 10 18:02:23 2022 +0200 @@ -65,26 +65,21 @@ void settings_changed (const gui_settings *settings); - // Note: UPDATE_PROMPT_SIGNAL and INTERPRETER_OUTPUT_SIGNAL are + // Note: the following four signals are // currently only used by the new experimental terminal widget. void update_prompt_signal (const QString&); void interpreter_output_signal (const QString&); + void new_command_line_signal (const QString& = QString ()); + void execute_command_signal (const QString&); public slots: void notice_settings (const gui_settings *settings); - // Note: INTERPRETER_OUTPUT and UPDATE_PROMPT are currently only - // used by the new experimental terminal widget. - - void interpreter_output (const QString&); - - void update_prompt (const QString&); - private: bool m_experimental_terminal_widget;