I have marked bug 37672 (https://savannah.gnu.org/bugs/?37672) as a
blocker for the release. I have some ideas about why this is not
working and what we can do to fix it.
In the CLI version of Octave, the terminal driver sends a SIGINT
signal to the Octave process when the user types Ctrl-C at the
command prompt. Then the SIGINT signal is caught and we end up in the
function user_abort.
In the GUI, typing Ctrl-C in the terminal window doesn't generate a
SIGINT signal directly as it does when Octave is running in a
terminal. Instead, it eventually calls the function
TerminalView::copyClipboard (in the Unix version of the libqterminal
code) or QWinTerminalImpl::copyClipboard (in the Windows version of
the libqterminal code). Then, if there is no selection, we call
::raise (SIGINT) to generate an interrupt signal for the process.
From there, we end up in user_abort.
Ignoring things like "debug_on_interrupt", the function user_abort
may do one of two things to handle the signal.
The first is to set the global variable octave_interrupt_state and
return. Then Octave periodically checks this variable (typically
using the OCTAVE_QUIT macro) and if it is set, throws an exception and
returns to the command prompt.