From 785d5885cd9cc3feec1a1978ed30b83bdaacfb50 Mon Sep 17 00:00:00 2001 From: H.G. Muller Date: Wed, 21 Dec 2011 17:48:33 +0100 Subject: [PATCH] Fix alignment of generic browse button XBoard The width ofthe browse button is now read back after creating it, and subtracted from the preceding text edit. --- xoptions.c | 17 +++++++++++++++-- 1 files changed, 15 insertions(+), 2 deletions(-) diff --git a/xoptions.c b/xoptions.c index 926f905..e823a39 100644 --- a/xoptions.c +++ b/xoptions.c @@ -936,7 +936,8 @@ GenericPopUp(Option *option, char *title, int dlgNr) 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]) { @@ -1045,7 +1046,7 @@ GenericPopUp(Option *option, char *title, int 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 { @@ -1055,6 +1056,7 @@ GenericPopUp(Option *option, char *title, int dlgNr) } 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; @@ -1162,6 +1164,11 @@ GenericPopUp(Option *option, char *title, int dlgNr) // 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