From 89ca7bf7ee0c418d1a2cdf2830c9a34c78a715b0 Mon Sep 17 00:00:00 2001
From: H.G.Muller <hgm@hgm-xboard.(none)>
Date: Fri, 10 Oct 2014 17:01:51 +0200
Subject: [PATCH] Increase number of engine-defined-variants Buttons XB

An third column is added to the New Variant dialog when necessary.
---
 dialogs.c |   21 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/dialogs.c b/dialogs.c
index e02bc17..8e3936f 100644
--- a/dialogs.c
+++ b/dialogs.c
@@ -494,6 +494,18 @@ static Option variantDescriptors[] = {
 { VariantChu,    SAME_ROW, 135, NULL, (void*) &Pick, "#BFFFBF", NULL, Button, N_("chu shogi (12x12)")},
 //{ -1,                   0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Button, N_(" ")}, // dummy, to have good alignment
 // optional buttons for engine-defined variants
+{ 0, NO_OK, 0, NULL, NULL, "", NULL, EndMark , "" },
+{ 0, SAME_ROW, 0, NULL, NULL, NULL, NULL, Skip, ""},
+{ VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
+{ VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
 { VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
 { VariantUnknown, SAME_ROW,135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
 { VariantUnknown,       0, 135, NULL, (void*) &Pick, "#FFFFFF", NULL, Skip, NULL },
@@ -554,7 +566,10 @@ NewVariantProc ()
    ranksTmp = filesTmp = sizeTmp = -1; // prefer defaults over actual settings
    if(appData.noChessProgram) sprintf(warning, _("Only bughouse is not available in viewer mode.")); else
    sprintf(warning, _("All variants not supported by the first engine\n(currently %s) are disabled."), first.tidy);
-   if(!start) while(variantDescriptors[start].type != Skip) start++; // locate first spare
+   if(!start) {
+	while(variantDescriptors[start].type != EndMark) start++; // locate spares
+	start += 2; // conditional EndMark and Break
+   }
    last = -1;
    for(i=0; variantDescriptors[start+i].type != EndMark; i++) { // create buttons for engine-defined variants
      char *v = EngineDefinedVariant(&first, i);
@@ -569,6 +584,8 @@ NewVariantProc ()
 	variantDescriptors[start+last+1].type = Button;
 	variantDescriptors[start+last+1].value = Skip;
    }
+   variantDescriptors[start-2].type = (last < 0 ? EndMark : Skip);
+   variantDescriptors[start-1].type = (last < 6 ? Skip : Break);
    safeStrCpy(buf, engineVariant, MSG_SIZ); *engineVariant = NULLCHAR; // yeghh...
    GenericPopUp(variantDescriptors, _("New Variant"), TransientDlg, BoardWindow, MODAL, 0);
    safeStrCpy(engineVariant, buf, MSG_SIZ); // must temporarily clear to avoid enabling all variant buttons
@@ -2397,7 +2414,7 @@ DisplayLogos (Option *w1, Option *w2)
 {
 	void *whiteLogo = first.programLogo, *blackLogo = second.programLogo;
 	if(appData.autoLogo) {
-
+	  if(appData.noChessProgram) whiteLogo = blackLogo = NULL; else
 	  switch(gameMode) { // pick logos based on game mode
 	    case IcsObserving:
 		whiteLogo = second.programLogo; // ICS logo
-- 
1.7.0.4