# HG changeset patch # User Rik # Date 1654897605 25200 # Node ID 9da8bb2974d758273361c28d185f466ee3fc0a1b # Parent 06c64a878fc0808e0cc6ea700c51b9a823fa12e5# Parent 9c0099048264e50b13082b28aa8ba37e626f41db maint: merge away extra head diff -r 06c64a878fc0 -r 9da8bb2974d7 libgui/src/command-widget.cc --- a/libgui/src/command-widget.cc Fri Jun 10 15:09:53 2022 +0200 +++ b/libgui/src/command-widget.cc Fri Jun 10 14:46:45 2022 -0700 @@ -249,14 +249,17 @@ // Cursor position changed: Are we in the command line or not? void console::cursor_position_changed (int line, int col) { - m_command_position = positionFromLineIndex (line, col); + m_cursor_position = positionFromLineIndex (line, col); if (m_cursor_position < m_command_position) { // We are in the read only area if (m_text_changed && (m_cursor_position == m_command_position - 1)) - undo (); // And here we have tried to remove the prompt by Backspace - else - setReadOnly (true); + { + setReadOnly (false); + insert (m_command_widget->prompt ().right (1)); // And here we have tried to remove the prompt by Backspace + setCursorPosition (line+1, col); + } + setReadOnly (true); } else setReadOnly (false); // Writable area diff -r 06c64a878fc0 -r 9da8bb2974d7 libgui/src/octave-qobject.cc --- a/libgui/src/octave-qobject.cc Fri Jun 10 15:09:53 2022 +0200 +++ b/libgui/src/octave-qobject.cc Fri Jun 10 14:46:45 2022 -0700 @@ -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 06c64a878fc0 -r 9da8bb2974d7 libgui/src/qt-interpreter-events.cc --- a/libgui/src/qt-interpreter-events.cc Fri Jun 10 15:09:53 2022 +0200 +++ b/libgui/src/qt-interpreter-events.cc Fri Jun 10 14:46:45 2022 -0700 @@ -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 06c64a878fc0 -r 9da8bb2974d7 libgui/src/qt-interpreter-events.h --- a/libgui/src/qt-interpreter-events.h Fri Jun 10 15:09:53 2022 +0200 +++ b/libgui/src/qt-interpreter-events.h Fri Jun 10 14:46:45 2022 -0700 @@ -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 06c64a878fc0 -r 9da8bb2974d7 libgui/src/terminal-dock-widget.cc --- a/libgui/src/terminal-dock-widget.cc Fri Jun 10 15:09:53 2022 +0200 +++ b/libgui/src/terminal-dock-widget.cc Fri Jun 10 14:46:45 2022 -0700 @@ -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 06c64a878fc0 -r 9da8bb2974d7 libgui/src/terminal-dock-widget.h --- a/libgui/src/terminal-dock-widget.h Fri Jun 10 15:09:53 2022 +0200 +++ b/libgui/src/terminal-dock-widget.h Fri Jun 10 14:46:45 2022 -0700 @@ -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;