diff libgui/src/history-dockwidget.cc @ 16447:e3b33a7530bc

improve encapsulation of history window object * history-dockwidget.h, history-dockwidget.cc (history_dock_widget::history_dock_widget): Set status tip here. Connect history_dock_widget::information signal to main_window::report_status_message. Connect history_dock_widget::command_double_clicked signal to main_window::handle_command_double_clicked. (history_dock_widget::connect_visibility_changed, history_dock_widget::focus, history_dock_widget::handle_visibility): New functions. * main-window.h, main-window.cc (main_window::history_window): Rename from _history_dock_widget. Don't use a pointer. Change all uses. (main_window::main_window): Initialize it here. (main_window::~main_window): Don't delete _history_dock_widget. (main_window::focus_history_window_signal): New signal. (main_window::focus_history_window): Rename from main_window::focus_command_history. Emit focus_history_window_signal instead of performing actions here. (main_window::handle_command_history_visible): Delete. (main_window::connect_visibility_changed): Call history_window.connect_visibility_changed instead of performing actions here. (main_window::construct): Don't create _history_dock_widget. Adapt signal/slot connections for new history_window object.
author John W. Eaton <jwe@octave.org>
date Sat, 06 Apr 2013 16:46:14 -0400
parents ee652dcc9ecc
children 744ff2fe11ce
line wrap: on
line diff
--- a/libgui/src/history-dockwidget.cc
+++ b/libgui/src/history-dockwidget.cc
@@ -34,16 +34,30 @@
 #include "cmd-hist.h"
 
 #include "history-dockwidget.h"
-#include "octave-link.h"
 
-history_dock_widget::history_dock_widget (QWidget * p)
+history_dock_widget::history_dock_widget (QWidget *p)
   : octave_dock_widget (p)
 {
   setObjectName ("HistoryDockWidget");
+  setStatusTip (tr ("Browse and search the command history."));
+
+  connect (this, SIGNAL (information (QString)),
+           p, SLOT (report_status_message (QString)));
+
+  connect (this, SIGNAL (command_double_clicked (const QString&)),
+           p, SLOT (handle_command_double_clicked (const QString&)));
+
   construct ();
 }
 
 void
+history_dock_widget::connect_visibility_changed (void)
+{
+  connect (this, SIGNAL (visibilityChanged (bool)),
+           this, SLOT (handle_visibility (bool)));
+}
+
+void
 history_dock_widget::construct ()
 {
   _history_model = new QStringListModel ();
@@ -141,3 +155,21 @@
   _history_model->setStringList (QStringList ());
 }
 
+void
+history_dock_widget::focus (void)
+{
+  if (! isVisible ())
+    setVisible (true);
+
+  setFocus ();
+  activateWindow ();
+  raise ();
+}
+
+void
+history_dock_widget::handle_visibility (bool visible)
+{
+  if (visible && ! isFloating ())
+    focus ();
+}
+