changeset 16496:d3b01ae21259

temporary fix for terminal window resizing * input.cc (octave_base_reader::octave_gets): Call command_editor::reset_screen_size. * cmd-edit.h, cmd-edit.cc (command_editor::reset_screen_size, command_editor::do_reset_screen_size, gnu_readline::do_reset_screen_size): New functions. * oct-rl-edit.h, oct-rl-edit.c (octave_rl_reset_screen_size): New function.
author John W. Eaton <jwe@octave.org>
date Thu, 11 Apr 2013 12:02:44 -0400
parents b98ad20e4880
children 9ff3181e671c
files libinterp/interpfcn/input.cc liboctave/util/cmd-edit.cc liboctave/util/cmd-edit.h liboctave/util/oct-rl-edit.c liboctave/util/oct-rl-edit.h
diffstat 5 files changed, 31 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/interpfcn/input.cc	Thu Apr 11 11:57:23 2013 -0400
+++ b/libinterp/interpfcn/input.cc	Thu Apr 11 12:02:44 2013 -0400
@@ -220,6 +220,10 @@
       octave_link::pre_input_event ();
 
       octave_link::set_workspace (symbol_table::workspace_info ());
+
+      // FIXME -- this call should happen any time the terminal window
+      // size changes, not just prior to prompting for input.
+      command_editor::reset_screen_size ();
     }
 
   bool history_skip_auto_repeated_debugging_command = false;
--- a/liboctave/util/cmd-edit.cc	Thu Apr 11 11:57:23 2013 -0400
+++ b/liboctave/util/cmd-edit.cc	Thu Apr 11 12:02:44 2013 -0400
@@ -95,6 +95,8 @@
 
   void do_resize_terminal (void);
 
+  void do_reset_screen_size (void);
+
   std::string newline_chars (void);
 
   void do_restore_terminal_state (void);
@@ -331,6 +333,12 @@
   ::octave_rl_resize_terminal ();
 }
 
+void
+gnu_readline::do_reset_screen_size (void)
+{
+  ::octave_rl_reset_screen_size ();
+}
+
 std::string
 gnu_readline::newline_chars (void)
 {
@@ -994,6 +1002,13 @@
     instance->do_resize_terminal ();
 }
 
+void
+command_editor::reset_screen_size (void)
+{
+  if (instance_ok ())
+    instance->do_reset_screen_size ();
+}
+
 std::string
 command_editor::decode_prompt_string (const std::string& s)
 {
--- a/liboctave/util/cmd-edit.h	Thu Apr 11 11:57:23 2013 -0400
+++ b/liboctave/util/cmd-edit.h	Thu Apr 11 12:02:44 2013 -0400
@@ -79,6 +79,8 @@
 
   static void resize_terminal (void);
 
+  static void reset_screen_size (void);
+
   static std::string decode_prompt_string (const std::string& s);
 
   static void restore_terminal_state (void);
@@ -221,6 +223,8 @@
 
   virtual void do_resize_terminal (void) { }
 
+  virtual void do_reset_screen_size (void) { }
+
   virtual std::string do_decode_prompt_string (const std::string&);
 
   virtual std::string newline_chars (void) { return "\n"; }
--- a/liboctave/util/oct-rl-edit.c	Thu Apr 11 11:57:23 2013 -0400
+++ b/liboctave/util/oct-rl-edit.c	Thu Apr 11 12:02:44 2013 -0400
@@ -111,6 +111,12 @@
 }
 
 void
+octave_rl_reset_screen_size (void)
+{
+  rl_reset_screen_size ();
+}
+
+void
 octave_rl_restore_terminal_state ()
 {
   if (rl_deprep_term_function)
--- a/liboctave/util/oct-rl-edit.h	Thu Apr 11 11:57:23 2013 -0400
+++ b/liboctave/util/oct-rl-edit.h	Thu Apr 11 12:02:44 2013 -0400
@@ -60,6 +60,8 @@
 
 extern void octave_rl_resize_terminal (void);
 
+extern void octave_rl_reset_screen_size (void);
+
 extern void octave_rl_restore_terminal_state (void);
 
 extern void octave_rl_insert_text (const char *);