X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xaw%2Fxoptions.c;h=5cdb2e0bf9699e5428701ce7595805aceb291fe9;hb=1c03d229073e56dda9e5856db5adaae51576a3bb;hp=21281d2d3376129622d187ec6c32567d6ad45b53;hpb=50a32a757cb007d962a7179ff29bbc27e22a8388;p=xboard.git diff --git a/xaw/xoptions.c b/xaw/xoptions.c index 21281d2..5cdb2e0 100644 --- a/xaw/xoptions.c +++ b/xaw/xoptions.c @@ -1,7 +1,7 @@ /* * xoptions.c -- Move list window, part of X front end for XBoard * - * Copyright 2000, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + * Copyright 2000, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. * ------------------------------------------------------------------------ * * GNU XBoard is free software: you can redistribute it and/or modify @@ -197,7 +197,7 @@ SetDialogTitle (DialogClass dlg, char *title) } void -LoadListBox (Option *opt, char *emptyText) +LoadListBox (Option *opt, char *emptyText, int n1, int n2) { static char *dummyList[2]; dummyList[0] = emptyText; // empty listboxes tend to crash X, so display user-supplied warning string instead @@ -267,6 +267,10 @@ SelectedListBoxItem (Option *opt) void HighlightText (Option *opt, int start, int end, Boolean on) { + if(on) + XawTextSetSelection( opt->handle, start, end ); // for lack of a better method, use selection for highighting + else + XawTextSetSelection( opt->handle, 0, 0 ); } void @@ -381,7 +385,7 @@ CreateComboPopup (Widget parent, Option *opt, int n, int fromList, int def) if(list[0] == NULL) return NULL; // avoid empty menus, as they cause crash menu = XtCreatePopupShell(opt->name, simpleMenuWidgetClass, parent, NULL, 0); - for (i=0; 1; i++) + for (i=0; 1; i++) { char *msg = fromList ? list[i] : mb[i].string; if(!msg) break; @@ -409,7 +413,7 @@ char *translationTable[] = { // beware: order is essential! }; void -AddHandler (Option *opt, int nr) +AddHandler (Option *opt, DialogClass dlg, int nr) { XtOverrideTranslations(opt->handle, XtParseTranslationTable(translationTable[nr])); } @@ -453,7 +457,7 @@ RaiseWindow (DialogClass dlg) SubstructureRedirectMask | SubstructureNotifyMask, &xev); - XFlush(xDisplay); + XFlush(xDisplay); XSync(xDisplay, False); } @@ -634,7 +638,7 @@ GenericCallback (Widget w, XtPointer client_data, XtPointer call_data) currentOption = dialogOptions[dlg=data>>16]; data &= 0xFFFF; oldSh = shells[dlg]; shells[dlg] = sh; // bow to reality if (data == 30000) { // cancel - PopDown(dlg); + PopDown(dlg); } else if (data == 30001) { // save buttons imply OK if(GenericReadout(currentOption, -1)) PopDown(dlg); // calls OK-proc after full readout, but no popdown if it returns false @@ -791,7 +795,6 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent if(engineDlg) { // Settings popup for engine: format through heuristic int n = currentCps->nrOptions; - if(!n) { DisplayNote(_("Engine has no options")); currentCps = NULL; return 0; } if(n > 50) width = 4; else if(n>24) width = 2; else width = 1; height = n / width + 1; if(n && (currentOption[n-1].type == Button || currentOption[n-1].type == SaveButton)) currentOption[n].min = SAME_ROW; // OK on same line @@ -870,7 +873,7 @@ GenericPopUp (Option *option, char *title, DialogClass dlgNr, DialogClass parent XtSetArg(args[j], XtNdisplayCaret, False); j++; XtSetArg(args[j], XtNresizable, True); j++; XtSetArg(args[j], XtNinsertPosition, 9999); j++; - XtSetArg(args[j], XtNstring, option[i].type==Spin || option[i].type==Fractional ? def : + XtSetArg(args[j], XtNstring, option[i].type==Spin || option[i].type==Fractional ? def : engineDlg ? option[i].textValue : *(char**)option[i].target); j++; edit = last; option[i].handle = (void*) @@ -1231,4 +1234,3 @@ FileNamePopUpGTK(char *label, char *def, char *filter, FileProc proc, Boolean pa { Browse(BoardWindow, label, (def[0] ? def : NULL), filter, False, openMode, openName, openFP); } -