X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xhistory.c;h=fda729060980eebe0cf2cb798d73fd0544305ee5;hb=4626ea070c35a9c59ae231280f96e215dfc9205f;hp=cd572db03cad1d97eba6f4a0cbcb359805845884;hpb=a84055fab56abd3cb232692e6d7f24d122f74497;p=xboard.git diff --git a/xhistory.c b/xhistory.c index cd572db..fda7290 100644 --- a/xhistory.c +++ b/xhistory.c @@ -61,6 +61,7 @@ extern char *getenv(); extern GtkWidget *GUI_History; extern GtkListStore *LIST_MoveHistory; +extern GtkTreeView *TREE_History; String dots=" ... "; Position gameHistoryX, gameHistoryY; @@ -77,20 +78,52 @@ HistoryPopDown(object, user_data) return; } -void HistoryMoveProc(Widget w, XtPointer closure, XtPointer call_data) +void +HistoryMoveProc(window, event, data) + GtkWindow *window; + GdkEvent *event; + gpointer data; { - int to; - /* - XawListReturnStruct *R = (XawListReturnStruct *) call_data; - if (w == hist->mvn || w == hist->mvw) { - to=2*R->list_index-1; - ToNrEvent(to); - } - else if (w == hist->mvb) { - to=2*R->list_index; - ToNrEvent(to); + int to; /* the move we want to go to */ + + /* check if the mouse was clicked */ + if(event->type == GDK_BUTTON_PRESS) + { + GtkTreeViewColumn *column; + GtkTreePath *path; + GList *cols; + gint *indices; + gint row,col; + + /* can we convert this into an element of the history list? */ + if(gtk_tree_view_get_path_at_pos(TREE_History, + (gint)event->button.x, (gint)event->button.y, + &path,&column,NULL,NULL)) + { + /* find out which row and column the user clicked on */ + indices = gtk_tree_path_get_indices(path); + row = indices[0]; + cols = gtk_tree_view_get_columns(GTK_TREE_VIEW(column->tree_view)); + col = g_list_index(cols,(gpointer)column); + g_list_free(cols); + gtk_tree_path_free(path); + + printf("DEBUG: row %d col %d\n",row,col); + + + if(col) + { + /* user didn't click on the move number */ + + to = 2*row + col; + printf("DEBUG: going to %d\n",to);fflush(stdout); + + /* set board to that move */ + ToNrEvent(to); + } + } } - */ + return; } @@ -103,6 +136,8 @@ void HistorySet(char movelist[][2*MOVE_LEN],int first,int last,int current) /* TODO need to add highlights for current move */ /* TODO need to add navigation by keyboard or mouse (double click on move) */ + strcpy(movewhite,""); + strcpy(moveblack,""); /* first clear everything, do we need this? */ gtk_list_store_clear(LIST_MoveHistory);