changeset 31089:9da8bb2974d7

maint: merge away extra head
author Rik <rik@octave.org>
date Fri, 10 Jun 2022 14:46:45 -0700
parents 06c64a878fc0 (current diff) 9c0099048264 (diff)
children 1779a64b2510
files
diffstat 6 files changed, 23 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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);
           }
--- 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
       {
--- 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);
 
--- 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)
--- 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;