With Scid v4.6.4, using Tcl Version: 8.6.5+dfsg-2, Tk Version: 8.6.5-1
    on a Debian Linux dist, the piece tracker is broken when tracking
    multiple pieces.

The break came in this commit by Fulvio:
92878f068c57c99c22b63d3cbde927124741e27d

Author: Fulvio <f...@libero.it>  2015-03-07 09:35:24
Committer: Fulvio <f...@libero.it>  2015-03-08 14:22:29
Parent: e5e4d8d31a01696b3b6d116524da3c03983e1a47 (Framework for tcl/tk
isolation)
Child:  068e63b148b34be97c12119ad6030f75503bd32b (Fix keyboardShortcuts for
text widgets)
Branches: master, remotes/origin/master
Follows: v4.5.2
Precedes: v4.6.1

========

The following <git diff> will point you to the problem (and a solution).

The eval command's internal concat assembles a single-layered
list-constructed command string.  Without it, the ::ptrack::select
list is not fully expanded,  and only the FIRST element of the list
is passed to sc_base_piecetrack() as part of argv.

Whether there might be a better way to solve the problem
is beyond my grasp of the Tcl language.

(The diff is taken on the v4.6.4 tagged commit vs. my working dir)

========

diff --git a/tcl/tools/ptracker.tcl b/tcl/tools/ptracker.tcl
index e9fda99..56d8065 100644
--- a/tcl/tools/ptracker.tcl
+++ b/tcl/tools/ptracker.tcl
@@ -329,7 +329,7 @@ proc ::ptrack::refresh {{type "all"}} {
   if {$::ptrack::mode == "-time"} { set timeMode 1 }

   progressBarSet $w.progress 401 21
-  set err [catch { sc_base piecetrack $::ptrack::mode \
+  set err [catch { eval sc_base piecetrack $::ptrack::mode \
               $::ptrack::moves(start) $::ptrack::moves(end) \
               $::ptrack::select} ::ptrack::data]

========
------------------------------------------------------------------------------
_______________________________________________
Scid-users mailing list
Scid-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/scid-users

Reply via email to