Mercurial > hg > octave-lyh
changeset 16421:40d1ddca4db5
improve use of octave_link
* octave-link.h, octave-link.cc (octave_link::connect_link): Rename
from octave_link::connect. Change all uses. Allow link to be
disconnected. Don't add object to singleton_cleanup_list.
* main-window.h, main-window.cc (main_window::_octave_qt_link):
New data member.
(main_window::construct): Initialize it.
(main_window::~main_window): Disconnect octave_link and delete
_octave_qt_link.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 03 Apr 2013 23:35:33 -0400 |
parents | 81ec95768520 |
children | 436f6e0e4268 |
files | libgui/src/main-window.cc libgui/src/main-window.h libinterp/interpfcn/octave-link.cc libinterp/interpfcn/octave-link.h |
diffstat | 4 files changed, 15 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/main-window.cc +++ b/libgui/src/main-window.cc @@ -42,7 +42,6 @@ #include "file-editor.h" #endif #include "main-window.h" -#include "octave-qt-link.h" #include "settings-dialog.h" #include "builtins.h" @@ -71,6 +70,9 @@ if (_octave_qt_event_listener) delete _octave_qt_event_listener; + octave_link::connect_link (0); + delete _octave_qt_link; + #ifdef HAVE_QSCINTILLA if (_file_editor) delete _file_editor; @@ -1210,7 +1212,9 @@ // FIXME -- is it possible to eliminate the event_listenter? - octave_link::connect (new octave_qt_link ()); + _octave_qt_link = new octave_qt_link (); + + octave_link::connect_link (_octave_qt_link); octave_link::register_event_listener (_octave_qt_event_listener); }
--- a/libgui/src/main-window.h +++ b/libgui/src/main-window.h @@ -50,6 +50,7 @@ #include "terminal-dockwidget.h" #include "documentation-dockwidget.h" #include "octave-qt-event-listener.h" +#include "octave-qt-link.h" /** * \class MainWindow @@ -178,6 +179,8 @@ octave_qt_event_listener *_octave_qt_event_listener; + octave_qt_link *_octave_qt_link; + // Flag for closing whole application bool _closing; };
--- a/libinterp/interpfcn/octave-link.cc +++ b/libinterp/interpfcn/octave-link.cc @@ -64,18 +64,17 @@ octave_exit = octave_exit_hook; } -// OBJ should be a new object of a class that is derived from -// the base class octave_link. It will be cleaned up by octave_link. +// OBJ should be an object of a class that is derived from the base +// class octave_link, or 0 to disconnect the link. It is the +// responsibility of the caller to delete obj. void -octave_link::connect (octave_link* obj) +octave_link::connect_link (octave_link* obj) { - if (instance) + if (obj && instance) ::error ("octave_link is already linked!"); else instance = obj; - - singleton_cleanup_list::add (cleanup_instance); } void