*/
#include <stdio.h>
-#include "selfile.h"
#include "xstat.h"
+#include "selfile.h"
+#include "config.h"
#include <X11/StringDefs.h>
#include <X11/Xaw/Scrollbar.h>
#include <X11/Xaw/Cardinals.h>
XtOffset(textPtr, fontname), XtRString, SF_DEFAULT_FONT},
};
+#if ENABLE_NLS
+extern XFontSet fontSet; //XXX should really be in a .h file
+#else
static XFontStruct *SFfont;
+#endif
static int SFcurrentListY;
static XtIntervalId SFscrollTimerId;
+void
SFinitFont()
{
+#if ENABLE_NLS
+ XFontSetExtents *fse = XExtentsOfFontSet(fontSet);
+ SFcharWidth = fse->max_logical_extent.width;
+ SFcharAscent = -fse->max_logical_extent.y;
+ SFcharHeight = fse->max_logical_extent.height;
+#else
TextData *data;
data = XtNew(TextData);
SFcharWidth = (SFfont->max_bounds.width + SFfont->min_bounds.width) / 2;
SFcharAscent = SFfont->max_bounds.ascent;
SFcharHeight = SFcharAscent + SFfont->max_bounds.descent;
+#endif
+ return;
}
+void
SFcreateGC()
{
XGCValues gcValues;
gcValues.foreground = SFfore;
gcValues.background = SFback;
+#if !ENABLE_NLS
gcValues.font = SFfont->fid;
+#endif
SFtextGC = XCreateGC(
SFdisplay,
(unsigned long)
GCForeground |
GCBackground |
+#if !ENABLE_NLS
GCFont |
+#endif
0,
&gcValues
);
1,
Unsorted
);
+ return;
}
+void
SFclearList(n, doScroll)
int n;
int doScroll;
(float) 1.0);
}
}
+ return;
}
-static
+static void
SFdeleteEntry(dir, entry)
SFDir *dir;
SFEntry *entry;
(float) (((double) ((dir->nEntries < SFlistSize) ?
dir->nEntries : SFlistSize)) / dir->nEntries)
);
+ return;
}
-static
+static void
SFwriteStatChar(name, last, statBuf)
char *name;
int last;
struct stat *statBuf;
{
name[last] = SFstatChar(statBuf);
+ return;
}
static int
return 0;
}
-static
+static void
SFdrawStrings(w, dir, from, to)
register Window w;
register SFDir *dir;
continue;
}
}
+#if ENABLE_NLS
+ XmbDrawImageString(
+ SFdisplay,
+ w,
+ fontSet,
+ SFtextGC,
+ x,
+ SFtextYoffset + i * SFentryHeight,
+ entry->shown,
+ strlen(entry->shown)
+ );
+#else
XDrawImageString(
SFdisplay,
w,
entry->shown,
strlen(entry->shown)
);
+#endif
if (dir->vOrigin + i == dir->beginSelection) {
XDrawLine(
SFdisplay,
);
}
}
+ return;
}
+void
SFdrawList(n, doScroll)
int n;
int doScroll;
if (SFdirPtr + (3-NR) + n < SFdirEnd) {
dir = &(SFdirs[SFdirPtr + n + (3-NR)]);
w = XtWindow(selFileLists[n]);
+#if ENABLE_NLS
+ XmbDrawImageString(
+ SFdisplay,
+ w,
+ fontSet,
+ SFtextGC,
+ SFtextX - dir->hOrigin * SFcharWidth,
+ SFlineToTextV + SFaboveAndBelowText + SFcharAscent,
+ dir->dir,
+ strlen(dir->dir)
+ );
+#else
XDrawImageString(
SFdisplay,
w,
dir->dir,
strlen(dir->dir)
);
+#endif
SFdrawStrings(w, dir, 0, SFlistSize - 1);
}
+ return;
}
+void
SFdrawLists(doScroll)
int doScroll;
{
for (i = 0; i < NR; i++) {
SFdrawList(i, doScroll);
}
+ return;
}
-static
+static void
SFinvertEntry(n)
register int n;
{
SFentryWidth,
SFentryHeight
);
+ return;
}
static unsigned long
int save;
int n;
- n = (int) p;
+ n = (int)(intptr_t) p;
dir = &(SFdirs[SFdirPtr + n]);
save = dir->vOrigin;
if (SFbuttonPressed) {
SFscrollTimerId = XtAppAddTimeOut(SFapp,
- SFscrollTimerInterval(), SFscrollTimer, (XtPointer) n);
+ SFscrollTimerInterval(), SFscrollTimer, (XtPointer)(intptr_t) n);
}
}
SFscrollTimerAdded = 1;
SFscrollTimerId = XtAppAddTimeOut(SFapp,
SFscrollTimerInterval(), SFscrollTimer,
- (XtPointer) n);
+ (XtPointer)(intptr_t) n);
}
}
SFinvertEntry(n);
}
}
-}
-
-/* ARGSUSED */
-void
-SFvFloatSliderMovedCallback(w, n, fnew)
- Widget w;
- int n;
- float *fnew;
-{
- int new;
-
- new = (*fnew) * SFdirs[SFdirPtr + n].nEntries;
-
- SFvSliderMovedCallback(w, n, new);
+ return;
}
/* ARGSUSED */
dir = &(SFdirs[SFdirPtr + n]);
+
old = dir->vOrigin;
+ if(new == -1) new = old + 1; else if(new == -2) new = old - 1; // [HGM] indicates scroll direction on mousewheel event
+ if(new < 0 || new > dir->nEntries - SFlistSize) return;
dir->vOrigin = new;
if (old == new) {
/* ARGSUSED */
void
+SFvFloatSliderMovedCallback(w, n, fnew)
+ Widget w;
+ int n;
+ float *fnew;
+{
+ int new;
+
+ new = (*fnew) * SFdirs[SFdirPtr + n].nEntries;
+
+ SFvSliderMovedCallback(w, n, new);
+}
+
+
+/* ARGSUSED */
+void
SFvAreaSelectedCallback(w, n, pnew)
Widget w;
int n;