annotate liboctave/util/action-container.cc @ 27339:64289bf338da

use separate variable for interrupting command editor event loop (bug #56738) * cmd-edit.h, cmd-edit.cc (command_editor::interrupt_event_loop): New static function. (command_editor::event_loop_interrupted): Rename from input_interrupted. Change all uses. (command_editor::do_event_loop_interrupted): Rename from do_input_interrupted. Change all uses. (command_editor::do_interrupt_event_loop): New function. (command_editor::m_interrupt_event_loop): New member variable. (gnu_readline::do_input_interrupted): Delete * main-window.cc (main_window::execute_command_in_terminal, main_window::run_file_in_terminal): Call command_editor::interrupt_event_loop in callback function. * action-container.cc (action_container::run): Reset command_editor interrupt_event_loop state before breaking out of loop. * oct-rl-edit.h, oct-rl-edit.c (octave_rl_input_interrupted): Delete. - static bool input_interrupted (void); + static void interrupt_event_loop (bool flag = true); + + static bool event_loop_interrupted (void); static int current_command_number (void); @@ -360,9 +362,14 @@ namespace octave virtual void do_interrupt (bool) { } - virtual bool do_input_interrupted (void) { return false; } + virtual void do_handle_interrupt_signal (void) { } + + void do_interrupt_event_loop (bool arg) { m_interrupt_event_loop = arg; } - virtual void do_handle_interrupt_signal (void) { } + bool do_event_loop_interrupted (void) const + { + return m_interrupt_event_loop; + } int do_insert_initial_input (void); @@ -380,6 +387,8 @@ namespace octave bool interrupted; + bool m_interrupt_event_loop; + std::string initial_input; }; }
author John W. Eaton <jwe@octave.org>
date Wed, 14 Aug 2019 00:19:34 -0400
parents 829d9efb7730
children b442ec6dda5c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27338
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1 /*
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
3 Copyright (C) 1993-2019 John W. Eaton
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
4 Copyright (C) 2009-2010 VZLU Prague
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
5
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
6 This file is part of Octave.
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
7
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
8 Octave is free software: you can redistribute it and/or modify it
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
9 under the terms of the GNU General Public License as published by
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
11 (at your option) any later version.
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
12
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
13 Octave is distributed in the hope that it will be useful, but
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
14 WITHOUT ANY WARRANTY; without even the implied warranty of
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
16 GNU General Public License for more details.
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
17
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
19 along with Octave; see the file COPYING. If not, see
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
20 <https://www.gnu.org/licenses/>.
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
21
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
22 */
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
23
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
24 #include "action-container.h"
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
25 #include "cmd-edit.h"
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
26
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
27 namespace octave
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
28 {
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
29 void action_container::run (size_t num)
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
30 {
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
31 if (num > size ())
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
32 num = size ();
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
33
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
34 for (size_t i = 0; i < num; i++)
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
35 {
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
36 run_first ();
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37
27339
64289bf338da use separate variable for interrupting command editor event loop (bug #56738)
John W. Eaton <jwe@octave.org>
parents: 27338
diff changeset
38 // If event_loop_interrupted is TRUE, a user callback event has
27338
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
39 // requested that we break out of the readline event handler to
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
40 // process a command or other action.
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
41
27339
64289bf338da use separate variable for interrupting command editor event loop (bug #56738)
John W. Eaton <jwe@octave.org>
parents: 27338
diff changeset
42 if (command_editor::event_loop_interrupted ())
64289bf338da use separate variable for interrupting command editor event loop (bug #56738)
John W. Eaton <jwe@octave.org>
parents: 27338
diff changeset
43 {
64289bf338da use separate variable for interrupting command editor event loop (bug #56738)
John W. Eaton <jwe@octave.org>
parents: 27338
diff changeset
44 command_editor::interrupt_event_loop (false);
64289bf338da use separate variable for interrupting command editor event loop (bug #56738)
John W. Eaton <jwe@octave.org>
parents: 27338
diff changeset
45 break;
64289bf338da use separate variable for interrupting command editor event loop (bug #56738)
John W. Eaton <jwe@octave.org>
parents: 27338
diff changeset
46 }
27338
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
47 }
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
48 }
829d9efb7730 allow gui events to interrupt readline event processing (bug #56738)
John W. Eaton <jwe@octave.org>
parents:
diff changeset
49 }