# HG changeset patch # User John W. Eaton # Date 1384289219 18000 # Node ID 5c3f22dd0bbbd9a72ab9995d5505dfb74e045970 # Parent b6d07dd90f3d1b545b6ed06f9c50d6cfd501b7b7 raise SIGINT in octave_interpreter instead of in QTerminal * QTerminal.h (QTerminal::interrupt_signal): New signal. (QTerminal::terminal_interrupt): New slot. * QUnixTerminalImpl.cpp (QUnixTerminalImpl::initialize): Connect m_terminalView::interrupt_signal to QTerminal::terminal_interrupt. * TerminalView.h (TerminalView::interrupt_signal): New signal. * TerminalView.cpp (TerminalView::copyClipboard): Emit interrupt_signal instead of calling raising SIGINT signal. * terminal-dock-widget.h, terminal-dock-widget.cc (terminal_dock_widget::interrupt_signal): New signal. (terminal_dock_widget::terminal_interrupt): New slot. (terminal_dock_widget::terminal_dock_widget): Connect terminal::interrupt_signal to terminal_dock_widget::terminal_interrupt slot. (terminal_dock_widget::terminal_interrupt): New function. Emit terminal_dock_widget::interrupt_signal. * QWinTerminalImpl.cpp (QWinTerminalImpl::copyClipboard): Call terminal_interrupt instead of raising SIGINT signal. main-window.cc (main_window::construct_octave_qt_link): Connect command_window::interrupt_signal to _octave_qt_link::terminal_interrupt slot. * octave-qt-link.h, octave-qt-link.cc (octave_qt_link::terminal_interrupt): New slot. * octave-interpreter.h, octave_interpreter.cc (octave_interpreter::interrupt): New slot. Raise SIGINT here. diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/qterminal/libqterminal/QTerminal.h --- a/libgui/qterminal/libqterminal/QTerminal.h Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/qterminal/libqterminal/QTerminal.h Tue Nov 12 15:46:59 2013 -0500 @@ -85,6 +85,8 @@ void report_status_message (const QString&); + void interrupt_signal (void); + public slots: virtual void copyClipboard (void) = 0; @@ -104,6 +106,8 @@ void notice_settings (const QSettings *settings); + void terminal_interrupt (void) { emit interrupt_signal (); } + protected: QTerminal (QWidget *xparent = 0) : QWidget (xparent) diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp --- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp Tue Nov 12 15:46:59 2013 -0500 @@ -46,6 +46,9 @@ connect(m_terminalView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(handleCustomContextMenuRequested(QPoint))); + connect (m_terminalView, SIGNAL (interrupt_signal (void)), + this, SLOT (terminal_interrupt ())); + #ifdef Q_OS_MAC QFont font = QFont("Monaco"); font.setStyleHint(QFont::TypeWriter); diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/qterminal/libqterminal/unix/TerminalView.cpp --- a/libgui/qterminal/libqterminal/unix/TerminalView.cpp Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/qterminal/libqterminal/unix/TerminalView.cpp Tue Nov 12 15:46:59 2013 -0500 @@ -2274,9 +2274,7 @@ QString text = _screenWindow->selectedText(_preserveLineBreaks); if (text.isEmpty ()) - { - ::raise (SIGINT); - } + emit interrupt_signal (); else QApplication::clipboard()->setText(text); } diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/qterminal/libqterminal/unix/TerminalView.h --- a/libgui/qterminal/libqterminal/unix/TerminalView.h Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/qterminal/libqterminal/unix/TerminalView.h Tue Nov 12 15:46:59 2013 -0500 @@ -447,6 +447,8 @@ signals: + void interrupt_signal (void); + /** * Emitted when the user presses a key whilst the terminal widget has focus. */ diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp --- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp Tue Nov 12 15:46:59 2013 -0500 @@ -1518,9 +1518,7 @@ QString selection = d->getSelection (); if (selection.isEmpty ()) - { - ::raise (SIGINT); - } + terminal_interrupt (); else { clipboard->setText (selection); diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/src/main-window.cc --- a/libgui/src/main-window.cc Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/src/main-window.cc Tue Nov 12 15:46:59 2013 -0500 @@ -1080,6 +1080,9 @@ SLOT (handle_rename_variable_request (const QString&, const QString&))); + connect (command_window, SIGNAL (interrupt_signal (void)), + _octave_qt_link, SLOT (terminal_interrupt (void))); + _octave_qt_link->execute_interpreter (); octave_link::connect_link (_octave_qt_link); diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/src/octave-interpreter.cc --- a/libgui/src/octave-interpreter.cc Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/src/octave-interpreter.cc Tue Nov 12 15:46:59 2013 -0500 @@ -27,6 +27,8 @@ #include +#include + #include "octave.h" #include "octave-interpreter.h" @@ -39,3 +41,9 @@ octave_execute_interpreter (); } + +void +octave_interpreter::interrupt (void) +{ + ::raise (SIGINT); +} diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/src/octave-interpreter.h --- a/libgui/src/octave-interpreter.h Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/src/octave-interpreter.h Tue Nov 12 15:46:59 2013 -0500 @@ -41,6 +41,8 @@ // Initialize and execute the octave interpreter. void execute (void); + + void interrupt (void); }; #endif diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/src/octave-qt-link.cc --- a/libgui/src/octave-qt-link.cc Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/src/octave-qt-link.cc Tue Nov 12 15:46:59 2013 -0500 @@ -548,4 +548,8 @@ emit show_doc_signal (QString::fromStdString (file)); } - +void +octave_qt_link::terminal_interrupt (void) +{ + command_interpreter->interrupt (); +} diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/src/octave-qt-link.h --- a/libgui/src/octave-qt-link.h Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/src/octave-qt-link.h Tue Nov 12 15:46:59 2013 -0500 @@ -184,6 +184,10 @@ void show_preferences_signal (void); void show_doc_signal (const QString &file); + +public slots: + + void terminal_interrupt (void); }; #endif diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/src/terminal-dock-widget.cc --- a/libgui/src/terminal-dock-widget.cc Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/src/terminal-dock-widget.cc Tue Nov 12 15:46:59 2013 -0500 @@ -38,6 +38,9 @@ set_title (tr ("Command Window")); setWidget (terminal); + + connect (terminal, SIGNAL (interrupt_signal (void)), + this, SLOT (terminal_interrupt ())); } bool @@ -59,3 +62,9 @@ w->activateWindow (); w->raise (); } + +void +terminal_dock_widget::terminal_interrupt (void) +{ + emit interrupt_signal (); +} diff -r b6d07dd90f3d -r 5c3f22dd0bbb libgui/src/terminal-dock-widget.h --- a/libgui/src/terminal-dock-widget.h Tue Nov 12 12:36:30 2013 -0500 +++ b/libgui/src/terminal-dock-widget.h Tue Nov 12 15:46:59 2013 -0500 @@ -41,6 +41,14 @@ void focus (void); +signals: + + void interrupt_signal (void); + +protected slots: + + void terminal_interrupt (void); + private: QTerminal *terminal;