int SFstatus = SEL_FILE_NULL;
char
- SFstartDir[MAXPATHLEN],
- SFcurrentPath[MAXPATHLEN],
- SFlastPath[MAXPATHLEN],
- SFcurrentDir[MAXPATHLEN];
+ SFstartDir[MAXPATHLEN+1],
+ SFcurrentPath[MAXPATHLEN+1],
+ SFlastPath[MAXPATHLEN+1],
+ SFcurrentDir[MAXPATHLEN+1];
Widget
selFile,
int SFpathScrollWidth, SFvScrollHeight, SFhScrollWidth;
-char SFtextBuffer[MAXPATHLEN];
+char SFtextBuffer[MAXPATHLEN+1];
-char SFfilterBuffer[MAXPATHLEN];
+char SFfilterBuffer[MAXPATHLEN+1];
XtIntervalId SFdirModTimerId;
XtSetArg(arglist[i], XtNeditType, XawtextEdit); i++;
XtSetArg(arglist[i], XtNwrap, XawtextWrapWord); i++;
XtSetArg(arglist[i], XtNresize, XawtextResizeHeight); i++;
- XtSetArg(arglist[i], XtNuseStringInPlace, True); i++;
selFileField = XtCreateManagedWidget("selFileField",
asciiTextWidgetClass, selFileForm, arglist, i);
}
void
+SFupdateTextBuffer()
+{
+ Arg arglist[2];
+ int i;
+ char *v;
+
+ i = 0;
+ XtSetArg(arglist[i], XtNstring, &v); i++;
+ XtGetValues(selFileField, arglist, i);
+ strncpy(SFtextBuffer, v, MAXPATHLEN);
+}
+
+void
+SFsetText(path)
+ char *path;
+{
+ Arg arglist[2];
+ int i;
+
+ i = 0;
+ XtSetArg(arglist[i], XtNstring, path); i++;
+ XtSetValues(selFileField, arglist, i);
+ XawTextSetInsertionPoint(selFileField, strlen(path));
+}
+
+void
SFtextChanged()
{
+ SFupdateTextBuffer();
if ((SFtextBuffer[0] == '/') || (SFtextBuffer[0] == '~')) {
(void) strncpy(SFcurrentPath, SFtextBuffer, MAXPATHLEN);
XtSetValues(filterField, arglist, i);
strncpy(SFfilterBuffer, filter, MAXPATHLEN-1);
+ SFupdateTextBuffer();
strncpy(SFlastPath, SFtextBuffer, MAXPATHLEN-1); // remember for cancel
SFpositionWidget(selFile);
break;
}
}
+
}