String name, val;
Arg args[16];
char buf[MSG_SIZ], *p;
- int j;
+ int j = 0; // Initialiasation is necessary because the text value may be non-numeric causing the scanf conversion to fail
int data = (intptr_t) client_data;
XtSetArg(args[0], XtNlabel, &name);
case Fractional:
XtSetArg(args[0], XtNstring, &val);
XtGetValues(currentOption[i].handle, args, 1);
+ x = 0.0; // Initialise because sscanf() will fail if non-numeric text is entered
sscanf(val, "%f", &x);
if(x > currentOption[i].max) x = currentOption[i].max;
if(x < currentOption[i].min) x = currentOption[i].min;
unsigned int mask;
char def[MSG_SIZ], *msg;
static char pane[6] = "paneX";
- Widget texts[100], forelast = NULL, anchor, widest, lastrow = NULL;
+ Widget texts[100], forelast = NULL, anchor, widest, lastrow = NULL, browse = NULL;
+ Dimension bWidth = 50;
if(shellUp[dlgNr]) return 0; // already up
if(dlgNr && shells[dlgNr]) {
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
if(option[i].type == FileName || option[i].type == PathName) {
- msg = _("browse");
+ msg = _("browse"); w = 0;
/* automatically scale to width of text */
XtSetArg(args[j], XtNwidth, (XtArgVal) NULL ); j++;
} else {
}
edit = XtCreateManagedWidget(msg, commandWidgetClass, form, args, j);
XtAddCallback(edit, XtNcallback, SpinCallback, (XtPointer)(intptr_t) i);
+ if(w == 0) browse = edit;
if(option[i].type != Spin) break;
// make an attempt to align all spins and textbox controls
maxWidth = maxTextWidth = 0;
+ if(browse != NULL) {
+ j=0;
+ XtSetArg(args[j], XtNwidth, &bWidth); j++;
+ XtGetValues(browse, args, j);
+ }
for(h=0; h<height; h++) {
i = h + c*height;
if(option[i].type == EndMark) break;
if(option[i].type == TextBox || option[i].type == ComboBox || option[i].type == PathName || option[i].type == FileName) {
XtSetArg(args[j], XtNwidth, maxTextWidth); j++;
XtSetValues(texts[h], args, j);
+ if(bWidth != 50 && (option[i].type == FileName || option[i].type == PathName)) {
+ int tWidth = (option[i].max ? option[i].max : 205) - 5 - bWidth;
+ j = 0;
+ XtSetArg(args[j], XtNwidth, tWidth); j++;
+ XtSetValues(option[i].handle, args, j);
+ }
}
}
}
{
char buf[10], keys[32];
KeySym sym;
- KeyCode metaL, metaR, ctrlL, ctrlR;
+ KeyCode metaL, metaR; //, ctrlL, ctrlR;
int n = XLookupString(&(event->xkey), buf, 10, &sym, NULL);
XQueryKeymap(xDisplay,keys);
metaL = XKeysymToKeycode(xDisplay, XK_Meta_L);
metaR = XKeysymToKeycode(xDisplay, XK_Meta_R);
- ctrlL = XKeysymToKeycode(xDisplay, XK_Control_L);
- ctrlR = XKeysymToKeycode(xDisplay, XK_Control_R);
+// ctrlL = XKeysymToKeycode(xDisplay, XK_Control_L);
+// ctrlR = XKeysymToKeycode(xDisplay, XK_Control_R);
if ( n == 1 && *buf >= 32 // printable
&& !(keys[metaL>>3]&1<<(metaL&7)) && !(keys[metaR>>3]&1<<(metaR&7)) // no alt key pressed
- && !(keys[ctrlL>>3]&1<<(ctrlL&7)) && !(keys[ctrlR>>3]&1<<(ctrlR&7)) // no ctrl key pressed
+// && !(keys[ctrlL>>3]&1<<(ctrlL&7)) && !(keys[ctrlR>>3]&1<<(ctrlR&7)) // no ctrl key pressed
)
{
if(appData.icsActive) { // text typed to board in ICS mode: divert to ICS input box