I wrote some code that improves (i hope) the behavior of mousewhell 
scroll over the board:
1) Scrolling back automatically leaves a variation
2) Scrolling forward shows arrows indicating moves for multiple variations

Would you give it a try?


Index: src/tkscid.cpp
===================================================================
RCS file: /cvsroot/scid/scid/src/tkscid.cpp,v
retrieving revision 1.38
diff -u -r1.38 tkscid.cpp
--- src/tkscid.cpp    31 Aug 2009 10:14:44 -0000    1.38
+++ src/tkscid.cpp    5 Oct 2009 13:15:10 -0000
@@ -15929,11 +15929,13 @@
 int
 sc_var_list (ClientData cd, Tcl_Interp * ti, int argc, const char ** argv)
 {
+    bool uci = (argc > 2) && ! strCompare("UCI", argv[2]);
     uint varCount = db->game->GetNumVariations();
     char s[100];
     for (uint varNumber = 0; varNumber < varCount; varNumber++) {
         db->game->MoveIntoVariation (varNumber);
-        db->game->GetSAN (s);
+        if (uci) db->game->GetNextMoveUCI (s);
+        else db->game->GetSAN (s);
         // if (s[0] == 0) { strCopy (s, "(empty)"); }
         Tcl_AppendElement (ti, s);
         db->game->MoveExitVariation ();



Index: tcl/end.tcl
===================================================================
RCS file: /cvsroot/scid/scid/tcl/end.tcl,v
retrieving revision 1.60
diff -u -r1.60 end.tcl
--- tcl/end.tcl    25 Jul 2009 07:56:56 -0000    1.60
+++ tcl/end.tcl    5 Oct 2009 13:10:38 -0000
@@ -1359,8 +1359,40 @@
 
 # MouseWheel in main window:
 bind .main <MouseWheel> {
-  if {[expr -%D] < 0} { ::move::Back }
-  if {[expr -%D] > 0} { ::move::Forward }
+  if {[expr -%D] < 0} {
+     if {[sc_pos isAt vstart]} { .main.fbutton.button.exitVar invoke
+    } else { ::move::Back }
+  }
+  if {[expr -%D] > 0} {
+    set bMoveForward 1
+    set varList [sc_var list UCI]     
+    if {$varList != ""} {
+        set bMoveForward 1
+        set color "darkBlue"
+        set move [sc_game info nextMoveUCI]
+        if {$move != ""} {
+            set varList [linsert $varList 0 $move]
+            set color "blue"
+        }
+       
+        foreach { move } $varList {
+            set bDrawArrow 1
+            set sq_start [ ::board::sq [ string range $move 0 1 ] ]
+            set sq_end [ ::board::sq [ string range $move 2 3 ] ]
+            foreach mark $::board::_mark(.main.board) {
+                if { [lindex $mark 0] == "arrow" } {
+                    if {[lindex $mark 1] == $sq_start && [lindex $mark 
2] == $sq_end && [lindex $mark 3] == $color} { set bDrawArrow 0}
+                }
+            }
+            if {$bDrawArrow} {
+                set bMoveForward 0
+                ::board::mark::add ".main.board" "arrow" $sq_start 
$sq_end $color
+            }
+            set color "darkBlue"
+        }
+    }
+    if { $bMoveForward }  {::move::Forward }
+  }
 }


------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
Scid-users mailing list
Scid-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/scid-users

Reply via email to