# HG changeset patch # User John W. Eaton # Date 1365352567 14400 # Node ID 094bd3627eadef2a2e07413b0c8426e00ac9b84e # Parent 4d4e7c6f839dd0fffaa7b4a2037fc472cbe0998f move common functionality to octave_dock_widget base class * octave-dock-widget.h (octave_dock_widget::handle_visibility, octave_dock_widget::connect_visibility_changed, octave_dock_widget::focus): New virtual functions. * documentation-dock-widget.cc, documentation-dock-widget.h, files-dock-widget.cc, files-dock-widget.h, history-dock-widget.cc, history-dock-widget.h, terminal-dock-widget.cc, terminal-dock-widget.h: Inherit handle_visibility, connect_visibility_changed, and focus methods. diff -r 4d4e7c6f839d -r 094bd3627ead libgui/src/documentation-dock-widget.cc --- a/libgui/src/documentation-dock-widget.cc Sun Apr 07 12:07:10 2013 -0400 +++ b/libgui/src/documentation-dock-widget.cc Sun Apr 07 12:36:07 2013 -0400 @@ -37,28 +37,3 @@ _webinfo = new webinfo (this); setWidget (_webinfo); } - -void -documentation_dock_widget::connect_visibility_changed (void) -{ - connect (this, SIGNAL (visibilityChanged (bool)), - this, SLOT (handle_visibility (bool))); -} - -void -documentation_dock_widget::focus (void) -{ - if (! isVisible ()) - setVisible (true); - - setFocus (); - activateWindow (); - raise (); -} - -void -documentation_dock_widget::handle_visibility (bool visible) -{ - if (visible && ! isFloating ()) - focus (); -} diff -r 4d4e7c6f839d -r 094bd3627ead libgui/src/documentation-dock-widget.h --- a/libgui/src/documentation-dock-widget.h Sun Apr 07 12:07:10 2013 -0400 +++ b/libgui/src/documentation-dock-widget.h Sun Apr 07 12:36:07 2013 -0400 @@ -35,14 +35,6 @@ documentation_dock_widget (QWidget *parent = 0); - void connect_visibility_changed (void); - -public slots: - - void focus (void); - - void handle_visibility (bool); - private: webinfo *_webinfo; diff -r 4d4e7c6f839d -r 094bd3627ead libgui/src/files-dock-widget.cc --- a/libgui/src/files-dock-widget.cc Sun Apr 07 12:07:10 2013 -0400 +++ b/libgui/src/files-dock-widget.cc Sun Apr 07 12:36:07 2013 -0400 @@ -136,13 +136,6 @@ } void -files_dock_widget::connect_visibility_changed (void) -{ - connect (this, SIGNAL (visibilityChanged (bool)), - this, SLOT (handle_visibility (bool))); -} - -void files_dock_widget::item_double_clicked (const QModelIndex& index) { // Retrieve the file info associated with the model index. @@ -211,22 +204,3 @@ // TODO: React on option for hidden files. } } - -void -files_dock_widget::focus (void) -{ - if (! isVisible ()) - setVisible (true); - - setFocus (); - activateWindow (); - raise (); -} - -void -files_dock_widget::handle_visibility (bool visible) -{ - if (visible && ! isFloating ()) - focus (); -} - diff -r 4d4e7c6f839d -r 094bd3627ead libgui/src/files-dock-widget.h --- a/libgui/src/files-dock-widget.h Sun Apr 07 12:07:10 2013 -0400 +++ b/libgui/src/files-dock-widget.h Sun Apr 07 12:36:07 2013 -0400 @@ -53,8 +53,6 @@ ~files_dock_widget (); - void connect_visibility_changed (void); - public slots: /** Slot for handling a change in directory via double click. */ @@ -74,20 +72,16 @@ /** Tells the widget to react on changed settings. */ void notice_settings (const QSettings *settings); - void focus (void); +signals: - void handle_visibility (bool visible); - -signals: /** Emitted, whenever the user requested to open a file. */ void open_file (const QString& fileName); /** Emitted, whenever the currently displayed directory changed. */ void displayed_directory_changed (const QString& dir); -protected: +private: -private: // TODO: Add toolbar with buttons for navigating the path, creating dirs, etc /** Toolbar for file and directory manipulation. */ diff -r 4d4e7c6f839d -r 094bd3627ead libgui/src/history-dock-widget.cc --- a/libgui/src/history-dock-widget.cc Sun Apr 07 12:07:10 2013 -0400 +++ b/libgui/src/history-dock-widget.cc Sun Apr 07 12:36:07 2013 -0400 @@ -54,13 +54,6 @@ } 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 (); @@ -176,22 +169,3 @@ { _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 (); -} - diff -r 4d4e7c6f839d -r 094bd3627ead libgui/src/history-dock-widget.h --- a/libgui/src/history-dock-widget.h Sun Apr 07 12:07:10 2013 -0400 +++ b/libgui/src/history-dock-widget.h Sun Apr 07 12:36:07 2013 -0400 @@ -37,17 +37,12 @@ history_dock_widget (QWidget *parent = 0); - void connect_visibility_changed (void); - public slots: void set_history (const QStringList& hist); void append_history (const QString& hist_entry); void clear_history (void); - void focus (void); - void handle_visibility (bool); - signals: void information (const QString& message); diff -r 4d4e7c6f839d -r 094bd3627ead libgui/src/octave-dock-widget.h --- a/libgui/src/octave-dock-widget.h Sun Apr 07 12:07:10 2013 -0400 +++ b/libgui/src/octave-dock-widget.h Sun Apr 07 12:36:07 2013 -0400 @@ -20,43 +20,68 @@ */ -#ifndef OCTAVEDOCKWIDGET_H -#define OCTAVEDOCKWIDGET_H +#if !defined (octave_dock_widget_h) +#define octave_dock_widget_h 1 #include -//#include -//#include class octave_dock_widget : public QDockWidget { Q_OBJECT - public: +public: + octave_dock_widget (QWidget *p) : QDockWidget (p) { connect (this, SIGNAL (visibilityChanged (bool)), this, SLOT (handle_visibility_changed (bool))); - connect (this, SIGNAL (topLevelChanged(bool)), - this, SLOT(top_level_changed(bool))); + connect (this, SIGNAL (topLevelChanged (bool)), + this, SLOT (top_level_changed (bool))); } virtual ~octave_dock_widget () { } + virtual void connect_visibility_changed (void) + { + connect (this, SIGNAL (visibilityChanged (bool)), + this, SLOT (handle_visibility (bool))); + } + signals: - /** Custom signal that tells if a user has clicked away + + /** Custom signal that tells whether a user has clicked away * that dock widget, i.e the active dock widget has * changed. */ void active_changed (bool active); protected: + virtual void closeEvent (QCloseEvent *e) { emit active_changed (false); QDockWidget::closeEvent (e); } +public slots: + + virtual void focus (void) + { + if (! isVisible ()) + setVisible (true); + + setFocus (); + activateWindow (); + raise (); + } + + virtual void handle_visibility (bool visible) + { + if (visible && ! isFloating ()) + focus (); + } + protected slots: /** Slot to steer changing visibility from outside. */ @@ -69,13 +94,14 @@ /** Slot when floating property changes */ virtual void top_level_changed (bool floating) { - if(floating) + if (floating) { - setWindowFlags(Qt::Window); // make a window from the widget when floating - show(); // make it visible again since setWindowFlags hides it + // Make a window from the widget when floating and make it + // visible again since setWindowFlags hides it. + setWindowFlags (Qt::Window); + show(); } } - }; -#endif // OCTAVEDOCKWIDGET_H +#endif diff -r 4d4e7c6f839d -r 094bd3627ead libgui/src/terminal-dock-widget.cc --- a/libgui/src/terminal-dock-widget.cc Sun Apr 07 12:07:10 2013 -0400 +++ b/libgui/src/terminal-dock-widget.cc Sun Apr 07 12:36:07 2013 -0400 @@ -47,11 +47,6 @@ connect (parent (), SIGNAL (relay_command_signal (const QString&)), this, SLOT (relay_command (const QString&))); - // topLevelChanged is emitted when floating property changes (floating - // = true) - connect (this, SIGNAL (topLevelChanged (bool)), - this, SLOT (top_level_changed (bool))); - // Forward signals to QTerminal widget. connect (this, SIGNAL (notice_settings_signal (const QSettings *)), @@ -68,37 +63,6 @@ } void -terminal_dock_widget::connect_visibility_changed (void) -{ - connect (this, SIGNAL (visibilityChanged (bool)), - this, SLOT (handle_visibility_changed (bool))); -} - -void -terminal_dock_widget::focus (void) -{ - if (! isVisible ()) - setVisible (true); - - setFocus (); - activateWindow (); - raise (); - - widget ()->setFocus (); - widget ()->activateWindow (); - widget ()->raise (); -} - -void -terminal_dock_widget::handle_visibility (bool visible) -{ - // if widget is changed to visible and is not floating - - if (visible && ! isFloating ()) - focus (); -} - -void terminal_dock_widget::notice_settings (const QSettings *settings) { emit notice_settings_signal (settings); @@ -121,3 +85,15 @@ { emit pasteClipboard_signal (); } + +void +terminal_dock_widget::focus (void) +{ + octave_dock_widget::focus (); + + QWidget *w = widget (); + + w->setFocus (); + w->activateWindow (); + w->raise (); +} diff -r 4d4e7c6f839d -r 094bd3627ead libgui/src/terminal-dock-widget.h --- a/libgui/src/terminal-dock-widget.h Sun Apr 07 12:07:10 2013 -0400 +++ b/libgui/src/terminal-dock-widget.h Sun Apr 07 12:36:07 2013 -0400 @@ -37,16 +37,10 @@ terminal_dock_widget (QWidget *parent = 0); - void connect_visibility_changed (void); - signals: public slots: - void focus (void); - - void handle_visibility (bool visible); - void notice_settings (const QSettings *settings); void relay_command (const QString& command); @@ -55,6 +49,8 @@ void pasteClipboard (void); + void focus (void); + signals: void notice_settings_signal (const QSettings *settings);