Connect CommentClick handler
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 17 Oct 2012 18:01:37 +0000 (20:01 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 6 Nov 2012 13:13:55 +0000 (14:13 +0100)
This can make use of generic memo callback, so it could be entirely
backend. Therefore it was moved to dialogs.h. As it shared a global with
some other back-end popup routines to remember the current move, these
could now be moved out of xboard.c too. (Well, not so for the X11 front-end,
so it has now been put in a header. :-( )

dialogs.c
xaw/xboard.c
xaw/xboard.h
xboard.c

index 42d3f98..18310cb 100644 (file)
--- a/dialogs.c
+++ b/dialogs.c
@@ -921,6 +921,9 @@ static char *commentText;
 static int commentIndex;
 static void ClearComment P((int n));
 static void SaveChanges P((int n));
+int savedIndex;  /* gross that this is global (and even across files...) */
+
+static int CommentClick P((Option *opt, int n, int x, int y, char *val, int index));
 
 static int
 NewComCallback (int n)
@@ -930,12 +933,22 @@ NewComCallback (int n)
 }
 
 Option commentOptions[] = {
-{ 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 250, NULL, (void*) &commentText, "", NULL, TextBox, "" },
+{ 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 250, NULL, (void*) &commentText, "", (MemoCallback *) &CommentClick, TextBox, "" },
 { 0,     0,     50, NULL, (void*) &ClearComment, NULL, NULL, Button, N_("clear") },
 { 0, SAME_ROW, 100, NULL, (void*) &SaveChanges, NULL, NULL, Button, N_("save changes") },
 { 0, SAME_ROW,  0,  NULL, (void*) &NewComCallback, "", NULL, EndMark , "" }
 };
 
+static int
+CommentClick (Option *opt, int n, int x, int y, char *val, int index)
+{
+       if(n != 3) return FALSE; // only button-3 press is of interest
+       ReplaceComment(savedIndex, val);
+       if(savedIndex != currentMove) ToNrEvent(savedIndex);
+       LoadVariation( index, val ); // [HGM] also does the actual moving to it, now
+       return TRUE;
+}
+
 static void
 SaveChanges (int n)
 {
@@ -964,6 +977,28 @@ NewCommentPopup (char *title, char *text, int index)
 }
 
 void
+EditCommentPopUp (int index, char *title, char *text)
+{
+    savedIndex = index;
+    if (text == NULL) text = "";
+    NewCommentPopup(title, text, index);
+}
+
+void
+CommentPopUp (char *title, char *text)
+{
+    savedIndex = currentMove; // [HGM] vari
+    NewCommentPopup(title, text, currentMove);
+}
+
+void
+CommentPopDown ()
+{
+    PopDown(CommentDlg);
+}
+
+
+void
 EditCommentProc ()
 {
     if (PopDown(CommentDlg)) { // popdown succesful
index 71416d4..5bf3b0c 100644 (file)
@@ -1781,7 +1781,7 @@ HandlePV (Widget w, XEvent * event, String * params, Cardinal * nParams)
     MovePV(event->xmotion.x, event->xmotion.y, lineGap + BOARD_HEIGHT * (squareSize + lineGap));
 }
 
-static int savedIndex;  /* gross that this is global */
+extern int savedIndex;  /* gross that this is global */
 
 void
 CommentClick (Widget w, XEvent * event, String * params, Cardinal * nParams)
@@ -1798,27 +1798,6 @@ CommentClick (Widget w, XEvent * event, String * params, Cardinal * nParams)
        LoadVariation( index, val ); // [HGM] also does the actual moving to it, now
 }
 
-void
-EditCommentPopUp (int index, char *title, char *text)
-{
-    savedIndex = index;
-    if (text == NULL) text = "";
-    NewCommentPopup(title, text, index);
-}
-
-void
-CommentPopUp (char *title, char *text)
-{
-    savedIndex = currentMove; // [HGM] vari
-    NewCommentPopup(title, text, currentMove);
-}
-
-void
-CommentPopDown ()
-{
-    PopDown(CommentDlg);
-}
-
 
 /* Disable all user input other than deleting the window */
 static int frozen = 0;
index 5a6587e..3345c33 100644 (file)
@@ -170,6 +170,7 @@ extern char ICSInputTranslations[];
 extern char *selected_fen_position;
 extern GC coordGC;
 extern Dimension textHeight; // of message widget in board window
+extern int savedIndex;
 
 
 #define TOPLEVEL 1 /* preference item; 1 = make popup windows toplevel */
index a86877f..4a4cdad 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -1848,46 +1848,6 @@ DrawPositionProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
 #endif
 
 
-static int savedIndex;  /* gross that this is global */
-
-#ifdef TODO_GTK
-void
-CommentClick (Widget w, XEvent * event, String * params, Cardinal * nParams)
-{
-       String val;
-       XawTextPosition index, dummy;
-       Arg arg;
-
-       XawTextGetSelectionPos(w, &index, &dummy);
-       XtSetArg(arg, XtNstring, &val);
-       XtGetValues(w, &arg, 1);
-       ReplaceComment(savedIndex, val);
-       if(savedIndex != currentMove) ToNrEvent(savedIndex);
-       LoadVariation( index, val ); // [HGM] also does the actual moving to it, now
-}
-#endif
-
-void
-EditCommentPopUp (int index, char *title, char *text)
-{
-    savedIndex = index;
-    if (text == NULL) text = "";
-    NewCommentPopup(title, text, index);
-}
-
-void
-CommentPopUp (char *title, char *text)
-{
-    savedIndex = currentMove; // [HGM] vari
-    NewCommentPopup(title, text, currentMove);
-}
-
-void
-CommentPopDown ()
-{
-    PopDown(CommentDlg);
-}
-
 
 /* Disable all user input other than deleting the window */
 static int frozen = 0;