X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=callback.c;h=cd831535fdcb208b02fb39d4f822f207bf6842c1;hb=14ae6044530978bb1bf5ff45cc14376b3832c457;hp=2aec8519e9632880bcb3a14223984c54e5ada560;hpb=405062eb813f7ef717309d9d340ea3da1beeaf10;p=xboard.git diff --git a/callback.c b/callback.c index 2aec851..cd83153 100644 --- a/callback.c +++ b/callback.c @@ -1,5 +1,6 @@ #include #include "common.h" +#include "xboard.h" #include #include "backend.h" @@ -11,9 +12,13 @@ # define N_(s) s #endif - extern GtkWidget *about; extern GtkWidget *GUI_Window; +extern GtkWidget *GUI_Aspect; +extern GtkWidget *GUI_Menubar; +extern GtkWidget *GUI_Timer; +extern GtkWidget *GUI_Buttonbar; +extern GtkWidget *GUI_Board; extern char *programVersion; extern int errorExitStatus; @@ -22,8 +27,59 @@ extern int fromX; extern int fromY; extern int toX; extern int toY; +extern int squareSize,lineGap; -void +extern int LoadGamePopUp P((FILE *f, int gameNumber, char *title)); +extern int LoadPosition P((FILE *f, int gameNumber, char *title)); +extern int SaveGame P((FILE *f, int gameNumber, char *title)); +extern int SavePosition P((FILE *f, int gameNumber, char *title)); + +gboolean +ExposeProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + /* do resizing to a fixed aspect ratio */ + GtkRequisition w; + int totalh=0,nw,nh; + float ratio; + int boardWidth,boardHeight,old,new; + + nw=GTK_WIDGET(object)->allocation.width; + nh=GTK_WIDGET(object)->allocation.height; + + old=squareSize; + squareSize = nw/(BOARD_WIDTH*1.05+0.05); + + if(old!=squareSize) + { + lineGap = squareSize*0.05; + + boardWidth = lineGap + BOARD_WIDTH * (squareSize + lineGap); + boardHeight = lineGap + BOARD_HEIGHT * (squareSize + lineGap); + + /* get the height of the menus, etc. and calculate the aspect ratio */ + gtk_widget_size_request(GTK_WIDGET(GUI_Menubar), &w); + totalh += w.height; + gtk_widget_size_request(GTK_WIDGET(GUI_Timer), &w); + totalh += w.height; + gtk_widget_size_request(GTK_WIDGET(GUI_Buttonbar), &w); + totalh += w.height; + + ratio = ((float)totalh+boardHeight)/((float)boardWidth) ; + + gtk_widget_set_size_request(GTK_WIDGET(GUI_Board), + boardWidth,boardHeight); + + gtk_aspect_frame_set (GTK_ASPECT_FRAME(GUI_Aspect),0,0,ratio,TRUE); + + /* recreate pieces with new size... TODO: keep svg in memory and just recreate pixmap instead of reloading files */ + CreatePieces(); + } + return FALSE; /* return false, so that other expose events are called too */ +} + +void QuitProc (object, user_data) GtkObject *object; gpointer user_data; @@ -32,6 +88,44 @@ QuitProc (object, user_data) ExitEvent(0); } +/* Help Menu */ +void InfoProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + char buf[MSG_SIZ]; + snprintf(buf, sizeof(buf), "xterm -e info --directory %s --directory . -f %s &", + INFODIR, INFOFILE); + system(buf); + return; +} + +void ManProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + char buf[MSG_SIZ]; + snprintf(buf, sizeof(buf), "xterm -e man xboard &"); + system(buf); + return; +} + +void HintProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + HintEvent(); + return; +} + +void BookProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + BookEvent(); + return; +} + void AboutProc (object, user_data) GtkObject *object; gpointer user_data; @@ -49,7 +143,7 @@ void AboutProc (object, user_data) "H.G. Muller ", "Eric Mullins ", "Arun Persaud "}; - + /* set up about window */ about = GTK_WIDGET(gtk_about_dialog_new()); @@ -61,10 +155,10 @@ void AboutProc (object, user_data) char *zippy = ""; #endif sprintf(buf, "%s%s", programVersion, zippy); - + gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about),buf); - gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about), + gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about), "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2009 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti"); @@ -73,13 +167,156 @@ void AboutProc (object, user_data) gtk_about_dialog_set_translator_credits(GTK_ABOUT_DIALOG(about), " A. Alper (turkish)\n" " A. Persaud (german)\n"); - + /* end set up about window */ gtk_dialog_run(GTK_DIALOG (about)); gtk_widget_destroy(about); } -void LoadNextGameProc(object, user_data) +/* End Help Menu */ + +/* Mode Menu */ + +void MachineWhiteProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + MachineWhiteEvent(); + return; +} + +void MachineBlackProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + MachineBlackEvent(); + return; +} + +void TwoMachinesProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + TwoMachinesEvent(); + return; +} + +void IcsClientProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + IcsClientEvent(); + return; +} + +void +AnalyzeFileProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + if (!first.analysisSupport) + { + char buf[MSG_SIZ]; + snprintf(buf, sizeof(buf), _("%s does not support analysis"), first.tidy); + DisplayError(buf, 0); + return; + }; + Reset(FALSE, TRUE); + + if (!appData.showThinking) + ShowThinkingProc(NULL,NULL); + + AnalyzeFileEvent(); + FileNamePopUp(_("File to analyze"), "", LoadGamePopUp, "rb"); + AnalysisPeriodicEvent(1); + return; +} + +void +AnalyzeModeProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + char buf[MSG_SIZ]; + + if (!first.analysisSupport) + { + snprintf(buf, sizeof(buf), _("%s does not support analysis"), first.tidy); + DisplayError(buf, 0); + return; + } + /* [DM] icsEngineAnalyze [HGM] This is horrible code; reverse the gameMode and isEngineAnalyze tests! */ + if (appData.icsActive) + { + if (gameMode != IcsObserving) + { + sprintf(buf,_("You are not observing a game")); + DisplayError(buf, 0); + /* secure check */ + if (appData.icsEngineAnalyze) + { + if (appData.debugMode) + fprintf(debugFP, _("Found unexpected active ICS engine analyze \n")); + ExitAnalyzeMode(); + ModeHighlight(); + } + return; + } + /* if enable, use want disable icsEngineAnalyze */ + if (appData.icsEngineAnalyze) + { + ExitAnalyzeMode(); + ModeHighlight(); + return; + } + appData.icsEngineAnalyze = TRUE; + if (appData.debugMode) + fprintf(debugFP, _("ICS engine analyze starting... \n")); + } + if (!appData.showThinking) + ShowThinkingProc(NULL,NULL); + + AnalyzeModeEvent(); + return; +} + +void +EditGameProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + EditGameEvent(); + return; +} + +void +EditPositionProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + EditPositionEvent(); + return; +} + +void +TrainingProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + TrainingEvent(); + return; +} + + + +/* End Mode Menu */ + +/* + * File menu + */ + +void +LoadNextGameProc(object, user_data) GtkObject *object; gpointer user_data; { @@ -87,7 +324,8 @@ void LoadNextGameProc(object, user_data) return; } -void LoadPrevGameProc(object, user_data) +void +LoadPrevGameProc(object, user_data) GtkObject *object; gpointer user_data; { @@ -95,7 +333,8 @@ void LoadPrevGameProc(object, user_data) return; } -void ReloadGameProc(object, user_data) +void +ReloadGameProc(object, user_data) GtkObject *object; gpointer user_data; { @@ -103,6 +342,511 @@ void ReloadGameProc(object, user_data) return; } +void +LoadNextPositionProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + ReloadPosition(1); + return; +} + +void +LoadPrevPositionProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + ReloadPosition(-1); + return; +} + +void +ReloadPositionProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + ReloadPosition(0); + return; +} + +void +LoadPositionProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) + { + Reset(FALSE, TRUE); + }; + + FileNamePopUp(_("Load position file name?"), "", LoadPosition, "rb"); + return; +} + +void +SaveGameProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + FileNamePopUp(_("Save game file name?"), + DefaultFileName(appData.oldSaveStyle ? "game" : "pgn"), + SaveGame, "a"); + return; +} + +void +SavePositionProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + FileNamePopUp(_("Save position file name?"), + DefaultFileName(appData.oldSaveStyle ? "pos" : "fen"), + SavePosition, "a"); + return; +} + + +/* End File Menu */ + +void AcceptProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + AcceptEvent(); + return; +} + +void DeclineProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + DeclineEvent(); + return; +} + +void RematchProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + RematchEvent(); + return; +} + +void CallFlagProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + CallFlagEvent(); + return; +} + +void DrawProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + DrawEvent(); + return; +} + +void AbortProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + AbortEvent(); + return; +} + +void AdjournProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + AdjournEvent(); + return; +} + +void ResignProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + ResignEvent(); + return; +} + +void StopObservingProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + StopObservingEvent(); + return; +} + +void StopExaminingProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + StopExaminingEvent(); + return; +} + +void AdjuWhiteProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + UserAdjudicationEvent(+1); + return; +} + +void AdjuBlackProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + UserAdjudicationEvent(-1); + return; +} + +void AdjuDrawProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + UserAdjudicationEvent(0); + return; +} + +void BackwardProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + BackwardEvent(); + return; +} + +void ForwardProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + ForwardEvent(); + return; +} + +void ToStartProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + ToStartEvent(); + return; +} + +void ToEndProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + ToEndEvent(); + return; +} + +void RevertProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + RevertEvent(); + return; +} + +void TruncateGameProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + TruncateGameEvent(); + return; +} + +void MoveNowProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + MoveNowEvent(); + return; +} + +void RetractMoveProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + RetractMoveEvent(); + return; +} + +/* Option Menu */ +void +AutocommProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.autoComment = !appData.autoComment; + return; +} + +void +AutoflagProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.autoCallFlag = !appData.autoCallFlag; + return; +} + +void +AutoflipProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.autoFlipView = !appData.autoFlipView; + return; +} + +void +ShowThinkingProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.showThinking = !appData.showThinking; + ShowThinkingEvent(); + + return; +} + +void +HideThinkingProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.hideThinkingFromHuman = !appData.hideThinkingFromHuman; + ShowThinkingEvent(); + + return; +} + +void +FlipViewProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + flipView = !flipView; + DrawPosition(True, NULL); + return; +} + +void +AlwaysQueenProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.alwaysPromoteToQueen = !appData.alwaysPromoteToQueen; + return; +} + +void +AnimateDraggingProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.animateDragging = !appData.animateDragging; + + if (appData.animateDragging) + { + // TODO convert to gtk + // CreateAnimVars(); + }; + + return; +} + +void +AnimateMovingProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.animate = !appData.animate; + + if (appData.animate) + { + // TODO convert to gtk + // CreateAnimVars(); + }; + + return; +} + +void +AutobsProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.autoObserve = !appData.autoObserve; + return; +} + +void +AutoraiseProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.autoRaiseBoard = !appData.autoRaiseBoard; + return; +} + +void +AutosaveProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.autoSaveGames = !appData.autoSaveGames; + return; +} + +void +BlindfoldProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.blindfold = !appData.blindfold; + DrawPosition(True, NULL); + return; +} + +void +TestLegalityProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.testLegality = !appData.testLegality; + return; +} + +void +FlashMovesProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + if (appData.flashCount == 0) + { + appData.flashCount = 3; + } + else + { + appData.flashCount = -appData.flashCount; + }; + + // TODO: check if this is working correct*/ + return; +} + +#if HIGHDRAG +void +HighlightDraggingProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + /* TODO: connect to option menu */ + appData.highlightDragging = !appData.highlightDragging; + return; +} +#endif + +void +HighlightLastMoveProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.highlightLastMove = !appData.highlightLastMove; + return; +} + +void +IcsAlarmProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.icsAlarm = !appData.icsAlarm; + return; +} + +void +MoveSoundProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.ringBellAfterMoves = !appData.ringBellAfterMoves; + return; +} + +void +OldSaveStyleProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.oldSaveStyle = !appData.oldSaveStyle; + return; +} + +void +PeriodicUpdatesProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + PeriodicUpdatesEvent(!appData.periodicUpdates); + return; +} + +void +PremoveProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.premove = !appData.premove; + return; +} + +void +QuietPlayProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.quietPlay = !appData.quietPlay; + return; +} + + +void +PonderNextMoveProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + PonderNextMoveEvent(!appData.ponderNextMove); + return; +} + +void +PopupExitMessageProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.popupExitMessage = !appData.popupExitMessage; + return; +} + +void +PopupMoveErrorsProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.popupMoveErrors = !appData.popupMoveErrors; + return; +} + + + +/* end option menu */ gboolean CloseWindowProc(GtkWidget *button) { @@ -110,13 +854,13 @@ gboolean CloseWindowProc(GtkWidget *button) return TRUE; } -void +void ResetProc (object, user_data) GtkObject *object; gpointer user_data; { - ResetGameEvent(); - AnalysisPopDown(); + ResetGameEvent(); + return; } void WhiteClockProc(object, user_data) @@ -165,8 +909,6 @@ void PauseProc(object, user_data) { // todo this toggling of the pause button doesn't seem to work? // e.g. select pause from buttonbar doesn't activate menumode.pause - // fprintf(stderr,"DEBUG: in pause\n"); - // fflush(stderr); PauseEvent(); } @@ -175,32 +917,8 @@ void LoadGameProc(object, user_data) GtkObject *object; gpointer user_data; { - GtkWidget *dialog; - dialog = gtk_file_chooser_dialog_new (_("Load game file name?"), - GTK_WINDOW(GUI_Window), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) - { - char *filename; - FILE *f; - - filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); - - //see loadgamepopup - f = fopen(filename, "rb"); - if (f == NULL) { - DisplayError(_("Failed to open file"), errno); - } else { - /* TODO add indec */ - (void) LoadGamePopUp(f, 0, filename); - } - g_free (filename); - } - gtk_widget_destroy (dialog); - ModeHighlight(); + FileNamePopUp(_("Load game file name?"),"",LoadGamePopUp,"rb"); + return; } @@ -213,11 +931,11 @@ void EventProc(window, event, data) GdkEvent *event; gpointer data; { - /* todo do we still need this? + /* todo do we still need this? if (!XtIsRealized(widget)) return; */ - + switch (event->type) { case GDK_EXPOSE: if (event->expose.count > 0) return; /* no clipping is done */ @@ -237,153 +955,42 @@ void UserMoveProc(window, event, data) GdkEvent *event; gpointer data; { - int x, y; - Boolean saveAnimate; - static int second = 0; - if (errorExitStatus != -1) return; - if (event->type == GDK_BUTTON_PRESS) ErrorPopDown(); - - if (promotionUp) { - if (event->type == GDK_BUTTON_PRESS) { - /* todo add promotionshellwidget - XtPopdown(promotionShell); - XtDestroyWidget(promotionShell); */ + if (promotionUp) + { + if (event->type == GDK_BUTTON_PRESS) + { promotionUp = False; ClearHighlights(); fromX = fromY = -1; - } else { + } + else + { return; - } - } - - x = EventToSquare((int)event->button.x, BOARD_WIDTH); - y = EventToSquare((int)event->button.y, BOARD_HEIGHT); - if (!flipView && y >= 0) { - y = BOARD_HEIGHT - 1 - y; - } - if (flipView && x >= 0) { - x = BOARD_WIDTH - 1 - x; - } - printf("DEBUG::UserMoveProc: x %d y %d\n",x,y); + } + } - if (fromX == -1) { - if (event->type == ButtonPress) { - /* First square */ - if (OKToStartUserMove(x, y)) { - fromX = x; - fromY = y; - second = 0; - printf("DEBUG::UserMoveProc: a\n"); - DragPieceBegin(event->button.x, event->button.y); - if (appData.highlightDragging) { - SetHighlights(x, y, -1, -1); - } - } - } - return; - } + // [HGM] mouse: the rest of the mouse handler is moved to the backend, and called here + if(event->type == GDK_BUTTON_PRESS) LeftClick(Press, (int)event->button.x, (int)event->button.y); + if(event->type == GDK_BUTTON_RELEASE) LeftClick(Release, (int)event->button.x, (int)event->button.y); - /* fromX != -1 */ - if (event->type == GDK_BUTTON_PRESS && gameMode != EditPosition && - x >= 0 && y >= 0) { - ChessSquare fromP; - ChessSquare toP; - /* Check if clicking again on the same color piece */ - fromP = boards[currentMove][fromY][fromX]; - toP = boards[currentMove][y][x]; - printf("DEBUG::UserMoveProc: b\n"); - if ((WhitePawn <= fromP && fromP <= WhiteKing && - WhitePawn <= toP && toP <= WhiteKing) || - (BlackPawn <= fromP && fromP <= BlackKing && - BlackPawn <= toP && toP <= BlackKing)) { - /* Clicked again on same color piece -- changed his mind */ - second = (x == fromX && y == fromY); - if (appData.highlightDragging) { - SetHighlights(x, y, -1, -1); - } else { - ClearHighlights(); - } - if (OKToStartUserMove(x, y)) { - fromX = x; - fromY = y; - DragPieceBegin(event->button.x, event->button.y); - } - return; - } - } + return; +} - if (event->type == GDK_BUTTON_RELEASE && x == fromX && y == fromY) { - printf("DEBUG::UserMoveProc: c\n"); - DragPieceEnd(event->button.x, event->button.y); - if (appData.animateDragging) { - /* Undo animation damage if any */ - DrawPosition(FALSE, NULL); - } - if (second) { - /* Second up/down in same square; just abort move */ - second = 0; - fromX = fromY = -1; - ClearHighlights(); - gotPremove = 0; - ClearPremoveHighlights(); - } else { - /* First upclick in same square; start click-click mode */ - SetHighlights(x, y, -1, -1); - } - return; - } +void GetMoveListProc(object, user_data) + GtkObject *object; + gpointer user_data; +{ + appData.getMoveList = !appData.getMoveList; - /* Completed move */ - toX = x; - toY = y; - saveAnimate = appData.animate; - printf("DEBUG::UserMoveProc: d\n"); - if (event->type == GDK_BUTTON_PRESS) { - printf("DEBUG::UserMoveProc: e\n"); - /* Finish clickclick move */ - if (appData.animate || appData.highlightLastMove) { - SetHighlights(fromX, fromY, toX, toY); - } else { - ClearHighlights(); - } - } else { - /* Finish drag move */ - if (appData.highlightLastMove) { - SetHighlights(fromX, fromY, toX, toY); - } else { - ClearHighlights(); - } - DragPieceEnd(event->button.x, event->button.y); - /* Don't animate move and drag both */ - appData.animate = FALSE; - } - printf("DEBUG::UserMoveProc: f\n"); - if (IsPromotion(fromX, fromY, toX, toY)) { - printf("DEBUG::UserMoveProc: f1\n"); - if (appData.alwaysPromoteToQueen) { - UserMoveEvent(fromX, fromY, toX, toY, 'q'); - if (!appData.highlightLastMove || gotPremove) ClearHighlights(); - if (gotPremove) SetPremoveHighlights(fromX, fromY, toX, toY); - fromX = fromY = -1; - } else { - SetHighlights(fromX, fromY, toX, toY); - PromotionPopUp(); - } - } else { - printf("DEBUG::UserMoveProc: f2\n"); - - UserMoveEvent(fromX, fromY, toX, toY, NULLCHAR); - printf("DEBUG::UserMoveProc: f3\n"); - if (!appData.highlightLastMove || gotPremove) ClearHighlights(); - if (gotPremove) SetPremoveHighlights(fromX, fromY, toX, toY); - fromX = fromY = -1; - } - appData.animate = saveAnimate; - printf("DEBUG::UserMoveProc: g\n"); - if (appData.animate || appData.animateDragging) { - /* Undo animation damage if needed */ - DrawPosition(FALSE, NULL); + if (appData.getMoveList) + { + GetMoveListEvent(); } + + // gets set automatically? if we set it with set_active we end up in an endless loop switching between 0 and 1 + // gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (object),(gboolean) appData.getMoveList ); + + return; }