Mercurial > octave
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 |
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 } |