Move clock-click code to back-end
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 19 Jan 2011 10:10:59 +0000 (11:10 +0100)
committerArun Persaud <arun@nubati.net>
Sat, 29 Jan 2011 02:15:59 +0000 (18:15 -0800)
Some duplicated (or should-be-duplicated) code for handling clicks on
the clocks from the XBoard and WinBoard front-ends was merged and
relocated to the back-end, so it can be shared. Noticeable was that
XBoard allowed turn change in ICS examine mode by clock clicking,
while WinBoard did not. WB, on the other hand, allowed clock adjustment.

backend.c
backend.h
winboard/winboard.c
xboard.c

index 89089f1..92873a9 100644 (file)
--- a/backend.c
+++ b/backend.c
@@ -12616,6 +12616,30 @@ CallFlagEvent()
 }
 
 void
+ClockClick(int which)
+{      // [HGM] code moved to back-end from winboard.c
+       if(which) { // black clock
+         if (gameMode == EditPosition || gameMode == IcsExamining) {
+           SetBlackToPlayEvent();
+         } else if (gameMode == EditGame || shiftKey) {
+           AdjustClock(which, -1);
+         } else if (gameMode == IcsPlayingWhite ||
+                    gameMode == MachinePlaysBlack) {
+           CallFlagEvent();
+         }
+       } else { // white clock
+         if (gameMode == EditPosition || gameMode == IcsExamining) {
+           SetWhiteToPlayEvent();
+         } else if (gameMode == EditGame || shiftKey) {
+           AdjustClock(which, -1);
+         } else if (gameMode == IcsPlayingBlack ||
+                  gameMode == MachinePlaysWhite) {
+           CallFlagEvent();
+         }
+       }
+}
+
+void
 DrawEvent()
 {
     /* Offer draw or accept pending draw offer from opponent */
index 7e5accd..bbce7ed 100644 (file)
--- a/backend.h
+++ b/backend.h
@@ -162,6 +162,7 @@ void MoveNowEvent P((void));
 void TruncateGameEvent P((void));
 void PauseEvent P((void));
 void CallFlagEvent P((void));
+void ClockClick P((int which));
 void AcceptEvent P((void));
 void DeclineEvent P((void));
 void RematchEvent P((void));
index a04d77f..5e2ee81 100644 (file)
@@ -4112,23 +4112,9 @@ MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
   switch (message) {\r
   case WM_LBUTTONDOWN:\r
       if (PtInRect((LPRECT) &whiteRect, pt)) {\r
-        if (gameMode == EditPosition) {\r
-         SetWhiteToPlayEvent();\r
-        } else if (gameMode == EditGame || GetKeyState(VK_SHIFT) < 0) {\r
-          AdjustClock(flipClock, -1);\r
-       } else if (gameMode == IcsPlayingBlack ||\r
-                  gameMode == MachinePlaysWhite) {\r
-         CallFlagEvent();\r
-        }\r
+        ClockClick(flipClock);\r
       } else if (PtInRect((LPRECT) &blackRect, pt)) {\r
-       if (gameMode == EditPosition) {\r
-         SetBlackToPlayEvent();\r
-        } else if (gameMode == EditGame || GetKeyState(VK_SHIFT) < 0) {\r
-          AdjustClock(!flipClock, -1);\r
-       } else if (gameMode == IcsPlayingWhite ||\r
-                  gameMode == MachinePlaysBlack) {\r
-         CallFlagEvent();\r
-       }\r
+       ClockClick(!flipClock);\r
       }\r
       dragInfo.start.x = dragInfo.start.y = -1;\r
       dragInfo.from = dragInfo.start;\r
index d618be4..76c3b77 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -3955,11 +3955,7 @@ void WhiteClock(w, event, prms, nprms)
      String *prms;
      Cardinal *nprms;
 {
-    if (gameMode == EditPosition || gameMode == IcsExamining) {
-       SetWhiteToPlayEvent();
-    } else if (gameMode == IcsPlayingBlack || gameMode == MachinePlaysWhite) {
-       CallFlagEvent();
-    }
+    ClockClick(0);
 }
 
 void BlackClock(w, event, prms, nprms)
@@ -3968,11 +3964,7 @@ void BlackClock(w, event, prms, nprms)
      String *prms;
      Cardinal *nprms;
 {
-    if (gameMode == EditPosition || gameMode == IcsExamining) {
-       SetBlackToPlayEvent();
-    } else if (gameMode == IcsPlayingWhite || gameMode == MachinePlaysBlack) {
-       CallFlagEvent();
-    }
+    ClockClick(1);
 }