Update of /cvsroot/q-lang/qcalc
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv13877
Modified Files:
qcalc.q
Log Message:
bugfixes
Index: qcalc.q
===================================================================
RCS file: /cvsroot/q-lang/qcalc/qcalc.q,v
retrieving revision 1.172
retrieving revision 1.173
diff -C2 -d -r1.172 -r1.173
*** qcalc.q 22 Nov 2007 03:12:41 -0000 1.172
--- qcalc.q 22 Nov 2007 09:28:49 -0000 1.173
***************
*** 645,653 ****
// = printf "qt_invoke: %s %s %s\n" (str OBJ,str SLOT,str ARGS) ||
// fail if neq SLOT timer;
! // Blacklist #1: these are always inhibited in recursive mode.
! // XXXFIXME: eval, gui_update must be kept (queued?) here if they originate
! // from a real GUI interaction, but how do we detect this if collect_results
! // always sets the recursive mode??
! = true if is_recursive and then any (eq SLOT) BL1;
// Blacklist #2: these are always inhibited in local mode.
= true if not is_global and then any (eq SLOT) BL2;
--- 645,652 ----
// = printf "qt_invoke: %s %s %s\n" (str OBJ,str SLOT,str ARGS) ||
// fail if neq SLOT timer;
! // Blacklist #1: these are always inhibited in recursive mode if we are not in
! // local mode.
! = true if is_global and then is_recursive and then
! any (eq SLOT) BL1;
// Blacklist #2: these are always inhibited in local mode.
= true if not is_global and then any (eq SLOT) BL2;
***************
*** 770,788 ****
qt EDIT "isRedoAvailable" ();
! digest_loop = digest_loop_at time;
! /* Make sure that we eventually return from the loop in local mode, so that
! qcalc doesn't get locked in a local loop, which might otherwise happen if
! there's a lot of asynchronous messages to process. */
! // XXXFIXME: need a fair scheduler here
! digest_loop_at T0
! = do_queued_updates || fail; // falls through
! = digest S || digest_loop_at T0
! where S = get MSGS
! if (#MSGS>0) and then (time-T0<=0.5);
! = digest X || digest_loop_at T0
! where X = get CBQ
! if is_global and then (#CBQ>0);
= () otherwise;
--- 769,780 ----
qt EDIT "isRedoAvailable" ();
! /* In local mode we only do the minimally necessary processing here. */
! digest_loop = digest_loop2 if is_global;
! = do_queued_updates otherwise;
! digest_loop2 = do_queued_updates || fail; // falls through
! = digest S || digest_loop2 where S = get MSGS if #MSGS>0;
! = digest X || digest_loop2 where X = get CBQ if #CBQ>0;
= () otherwise;
***************
*** 889,893 ****
where X:QtObject = gui_elem (I,J);
= if null S1 then delete_cells (I,J) ||
! cell_setval (I,J) S0 || S
where (S0,S1) = unquote S,
S = if isstr S0 then S else S1;
--- 881,886 ----
where X:QtObject = gui_elem (I,J);
= if null S1 then delete_cells (I,J) ||
! cell_setval (I,J) S0 ||
! clean_cell (I,J) || set_cell (I,J) S1 || S
where (S0,S1) = unquote S,
S = if isstr S0 then S else S1;
|