Back to index

tetex-bin  3.0
Classes | Defines | Typedefs | Functions | Variables
sfDraw.c File Reference
#include "xdvi-config.h"
#include "kpathsea/c-auto.h"
#include "kpathsea/config.h"
#include "kpathsea/c-stat.h"
#include "xdvi.h"
#include "sfDraw.h"
#include "sfDir.h"
#include "sfPath.h"

Go to the source code of this file.

Classes

struct  TextData

Defines

#define SF_DEFAULT_FONT   "9x15"

Typedefs

typedef struct TextDatatextPtr

Functions

void SFinitFont (void)
void SFcreateGC (void)
void SFclearList (int n, int doScroll)
static void SFdeleteEntry (SFDir *dir, SFEntry *entry)
static void SFwriteStatChar (char *name, int last, struct stat *statBuf)
static int SFstatAndCheck (SFDir *dir, SFEntry *entry)
static void SFdrawStrings (Window w, SFDir *dir, int from, int to)
void SFdrawList (int n, int doScroll)
void SFdrawLists (int doScroll)
static void SFinvertEntry (int n)
static unsigned long SFscrollTimerInterval (void)
static void SFscrollTimer (XtPointer p, XtIntervalId *id)
static int SFnewInvertEntry (int n, XMotionEvent *event)
void SFenterList (Widget w, int n, XEnterWindowEvent *event)
void SFleaveList (Widget w, int n, XEvent *event)
void SFmotionList (Widget w, int n, XMotionEvent *event)
void SFvFloatSliderMovedCallback (Widget w, int n, float *fnew)
void SFvSliderMovedCallback (Widget w, int n, int new)
void SFvAreaSelectedCallback (Widget w, int n, int pnew)
void SFhSliderMovedCallback (Widget w, int n, float *new)
void SFhAreaSelectedCallback (Widget w, int n, int pnew)
void SFpathSliderMovedCallback (Widget w, XtPointer client_data, float *new)
void SFpathAreaSelectedCallback (Widget w, XtPointer client_data, int pnew)
Boolean SFworkProc (void)

Variables

int SFcharWidth
int SFcharAscent
int SFcharHeight
int SFcurrentInvert [3] = { -1, -1, -1 }
static GC SFlineGC
static GC SFscrollGC
static GC SFinvertGC
static GC SFtextGC
static XtResource textResources []
static XFontStruct * SFfont
static int SFcurrentListY
static XtIntervalId SFscrollTimerId

Class Documentation

struct TextData

Definition at line 42 of file sfDraw.c.

Class Members
char * font

Define Documentation

#define SF_DEFAULT_FONT   "9x15"

Definition at line 40 of file sfDraw.c.


Typedef Documentation

typedef struct TextData * textPtr

Function Documentation

void SFclearList ( int  n,
int  doScroll 
)

Definition at line 146 of file sfDraw.c.

{
    SFDir *dir;

    SFcurrentInvert[n] = -1;

    XClearWindow(SFdisplay, XtWindow(selFileLists[n]));

    XDrawSegments(SFdisplay, XtWindow(selFileLists[n]), SFlineGC, SFsegs, 2);

    if (doScroll) {
       dir = &(SFdirs[SFdirPtr + n]);

       if ((SFdirPtr + n < SFdirEnd) && dir->nEntries && dir->nChars) {
           XawScrollbarSetThumb(selFileVScrolls[n],
                             (double)dir->vOrigin / dir->nEntries,
                             (double)(dir->nEntries < SFlistSize
                                     ? dir->nEntries
                                     : SFlistSize)
                             / dir->nEntries);

           XawScrollbarSetThumb(selFileHScrolls[n],
                             (double)(dir->hOrigin) / dir->nChars,
                             (double)(dir->nChars < SFcharsPerEntry
                                     ? dir-> nChars : SFcharsPerEntry)
                             / dir->nChars);
       }
       else {
           XawScrollbarSetThumb(selFileVScrolls[n], 0.0, 1.0);
           XawScrollbarSetThumb(selFileHScrolls[n], 0.0, 1.0);
       }
    }
}

Here is the caller graph for this function:

Definition at line 106 of file sfDraw.c.

{
    XGCValues gcValues;
    XRectangle rectangles[1];

/*     XtVaGetValues(selFileLists[0], */
/*              XtNforeground, &(gcValues.foreground), */
/*              XtNbackground, &(gcValues.background), */
/*              NULL); */
    gcValues.foreground = SFfore;

    SFlineGC = XtGetGC(selFileLists[0], (XtGCMask)
                     GCForeground | 0, &gcValues);

    SFscrollGC = XtGetGC(selFileLists[0], (XtGCMask)
                      0, &gcValues);

    gcValues.function = GXinvert;
/*     gcValues.plane_mask = (gcValues.foreground ^ gcValues.background); */
    gcValues.plane_mask = (SFfore ^ SFback);

    SFinvertGC = XtGetGC(selFileLists[0], (XtGCMask)
                      GCFunction | GCPlaneMask | 0, &gcValues);

    gcValues.foreground = SFfore;
    gcValues.background = SFback;
    gcValues.font = SFfont->fid;

    SFtextGC = XCreateGC(SFdisplay, XtWindow(selFileLists[0]), (unsigned long)
                      GCForeground | GCBackground | GCFont | 0, &gcValues);

    rectangles[0].x = SFlineToTextH + SFbesideText;
    rectangles[0].y = 0;
    rectangles[0].width = SFcharsPerEntry * SFcharWidth;
    rectangles[0].height = SFupperY + 1;

    XSetClipRectangles(SFdisplay, SFtextGC, 0, 0, rectangles, 1, Unsorted);
}

Here is the caller graph for this function:

static void SFdeleteEntry ( SFDir dir,
SFEntry entry 
) [static]

Definition at line 181 of file sfDraw.c.

{
    SFEntry *e;
    SFEntry *end;
    int n;
    int idx;

    idx = entry - dir->entries;

    if (idx < dir->beginSelection) {
       dir->beginSelection--;
    }
    if (idx <= dir->endSelection) {
       dir->endSelection--;
    }
    if (dir->beginSelection > dir->endSelection) {
       dir->beginSelection = dir->endSelection = -1;
    }

    if (idx < dir->vOrigin) {
       dir->vOrigin--;
    }

    XtFree(entry->real);

    end = &(dir->entries[dir->nEntries - 1]);

    for (e = entry; e < end; e++) {
       *e = *(e + 1);
    }

    if (!(--dir->nEntries)) {
       return;
    }

    n = dir - &(SFdirs[SFdirPtr]);
    if ((n < 0) || (n > 2)) {
       return;
    }

    XawScrollbarSetThumb(selFileVScrolls[n],
                      (double)(dir->vOrigin) / dir->nEntries,
                      (double)(dir->nEntries < SFlistSize
                              ? dir->nEntries : SFlistSize)
                      / dir->nEntries);
}

Here is the caller graph for this function:

void SFdrawList ( int  n,
int  doScroll 
)

Definition at line 351 of file sfDraw.c.

{
    SFDir *dir;
    Window w;

    SFclearList(n, doScroll);

    if (SFdirPtr + n < SFdirEnd) {
       dir = &(SFdirs[SFdirPtr + n]);
       w = XtWindow(selFileLists[n]);
       XDrawImageString(SFdisplay,
                      w,
                      SFtextGC,
                      SFtextX - dir->hOrigin * SFcharWidth,
                      SFlineToTextV + SFaboveAndBelowText + SFcharAscent,
                      dir->dir, strlen(dir->dir)
           );
       SFdrawStrings(w, dir, 0, SFlistSize - 1);
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SFdrawLists ( int  doScroll)

Definition at line 373 of file sfDraw.c.

{
    int i;

    for (i = 0; i < 3; i++) {
       SFdrawList(i, doScroll);
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void SFdrawStrings ( Window  w,
SFDir dir,
int  from,
int  to 
) [static]

Definition at line 292 of file sfDraw.c.

{
    int i;
    SFEntry *entry;
    int x;

    x = SFtextX - dir->hOrigin * SFcharWidth;

    if (dir->vOrigin + to >= dir->nEntries) {
       to = dir->nEntries - dir->vOrigin - 1;
    }
    for (i = from; i <= to; i++) {
       entry = &(dir->entries[dir->vOrigin + i]);
       if (!(entry->statDone)) {
           if (SFstatAndCheck(dir, entry)) {
              if (dir->vOrigin + to >= dir->nEntries) {
                  to = dir->nEntries - dir->vOrigin - 1;
              }
              i--;
              continue;
           }
       }
       XDrawImageString(SFdisplay,
                      w,
                      SFtextGC,
                      x,
                      SFtextYoffset + i * SFentryHeight,
                      entry->shown, strlen(entry->shown));
       if (dir->vOrigin + i == dir->beginSelection) {
           XDrawLine(SFdisplay,
                    w,
                    SFlineGC,
                    SFlineToTextH + 1,
                    SFlowerY + i * SFentryHeight,
                    SFlineToTextH + SFentryWidth - 2,
                    SFlowerY + i * SFentryHeight);
       }
       if (
           (dir->vOrigin + i >= dir->beginSelection) &&
           (dir->vOrigin + i <= dir->endSelection)) {
           SFcompletionSegs[0].y1 = SFcompletionSegs[1].y1 =
              SFlowerY + i * SFentryHeight;
           SFcompletionSegs[0].y2 = SFcompletionSegs[1].y2 =
              SFlowerY + (i + 1) * SFentryHeight - 1;
           XDrawSegments(SFdisplay, w, SFlineGC, SFcompletionSegs, 2);
       }
       if (dir->vOrigin + i == dir->endSelection) {
           XDrawLine(SFdisplay,
                    w,
                    SFlineGC,
                    SFlineToTextH + 1,
                    SFlowerY + (i + 1) * SFentryHeight - 1,
                    SFlineToTextH + SFentryWidth - 2,
                    SFlowerY + (i + 1) * SFentryHeight - 1);
       }
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SFenterList ( Widget  w,
int  n,
XEnterWindowEvent *  event 
)

Definition at line 513 of file sfDraw.c.

{
    int new;

    UNUSED(w);
    
    /* sanity */
    if (SFcurrentInvert[n] != -1) {
       SFinvertEntry(n);
       SFcurrentInvert[n] = -1;
    }

    new = SFnewInvertEntry(n, (XMotionEvent *) event);
    if (new != -1) {
       SFcurrentInvert[n] = new;
       SFinvertEntry(n);
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SFhAreaSelectedCallback ( Widget  w,
int  n,
int  pnew 
)

Definition at line 696 of file sfDraw.c.

{
    SFDir *dir;
    int new;

    dir = &(SFdirs[SFdirPtr + n]);

    new = dir->hOrigin + (((double)pnew) / SFhScrollWidth) * dir->nChars;

    if (new > dir->nChars - SFcharsPerEntry) {
       new = dir->nChars - SFcharsPerEntry;
    }

    if (new < 0) {
       new = 0;
    }

    if (dir->nChars) {
       float f;

       f = (double)new / dir->nChars;

       XawScrollbarSetThumb(w, f,
                          (double)(dir->nChars < SFcharsPerEntry
                                  ? dir->nChars
                                  : SFcharsPerEntry)
                          / dir->nChars);

       SFhSliderMovedCallback(w, n, &f);
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SFhSliderMovedCallback ( Widget  w,
int  n,
float *  new 
)

Definition at line 678 of file sfDraw.c.

{
    SFDir *dir;
    int save;

    UNUSED(w);
    
    dir = &(SFdirs[SFdirPtr + n]);
    save = dir->hOrigin;
    dir->hOrigin = (*new) * dir->nChars;
    if (dir->hOrigin == save) {
       return;
    }

    SFdrawList(n, SF_DO_NOT_SCROLL);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 64 of file sfDraw.c.

{
    TextData *data;

    data = XtNew(TextData);

    XtGetApplicationResources(selFileForm, (XtPointer) data, textResources,
                           XtNumber(textResources), (Arg *) NULL, ZERO);

    SFfont = XLoadQueryFont(SFdisplay, data->font);
    if (!SFfont) {
       SFfont = XLoadQueryFont(SFdisplay, SF_DEFAULT_FONT);
       if (!SFfont) {
           char sbuf[256];

           (void)sprintf(sbuf, "XsraSelFile: can't get font %s",
                       SF_DEFAULT_FONT);

           XtAppError(SFapp, sbuf);
       }
    }

    TRACE_GUI((stderr, "FONT: width %d, %d\n", SFfont->max_bounds.width, SFfont->min_bounds.width));
    SFcharWidth = (SFfont->max_bounds.width + SFfont->min_bounds.width) / 2;
    SFcharAscent = SFfont->max_bounds.ascent;
    SFcharHeight = SFcharAscent + SFfont->max_bounds.descent;
    if (SFcharWidth == 0) {
       /* if min_bounds.width = -max_bounds.width, we probably
          have a scalable TT font; try to determine its actual
          width by measuring the letter `x':
       */
       SFcharWidth = XTextWidth(SFfont, "x", 1);
    }
    if (SFcharWidth == 0) { /* last resort */
       SFcharWidth = SFfont->max_bounds.width / 2;
    }
    TRACE_GUI((stderr,
              "Using font measures: charwidth %d, ascent %d, height %d",
              SFcharWidth, SFcharAscent, SFcharHeight));
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void SFinvertEntry ( int  n) [static]

Definition at line 383 of file sfDraw.c.

Here is the caller graph for this function:

void SFleaveList ( Widget  w,
int  n,
XEvent *  event 
)

Definition at line 533 of file sfDraw.c.

{
    UNUSED(w);
    UNUSED(event);
    
    if (SFcurrentInvert[n] != -1) {
       SFinvertEntry(n);
       SFcurrentInvert[n] = -1;
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SFmotionList ( Widget  w,
int  n,
XMotionEvent *  event 
)

Definition at line 545 of file sfDraw.c.

{
    int new;

    UNUSED(w);
    
    new = SFnewInvertEntry(n, event);

    if (new != SFcurrentInvert[n]) {
       if (SFcurrentInvert[n] != -1) {
           SFinvertEntry(n);
       }
       SFcurrentInvert[n] = new;
       if (new != -1) {
           SFinvertEntry(n);
       }
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

static int SFnewInvertEntry ( int  n,
XMotionEvent *  event 
) [static]

Definition at line 470 of file sfDraw.c.

{
    int x, y;
    int new;
    static int SFscrollTimerAdded = 0;

    x = event->x;
    y = event->y;

    if (SFdirPtr + n >= SFdirEnd) {
       return -1;
    }
    else if ((x >= 0) && (x <= SFupperX) && (y >= SFlowerY) && (y <= SFupperY)
       ) {
       SFDir *dir = &(SFdirs[SFdirPtr + n]);

       if (SFscrollTimerAdded) {
           SFscrollTimerAdded = 0;
           XtRemoveTimeOut(SFscrollTimerId);
       }

       new = (y - SFlowerY) / SFentryHeight;
       if (dir->vOrigin + new >= dir->nEntries) {
           return -1;
       }
       return new;
    }
    else {
       if (SFbuttonPressed) {
           SFcurrentListY = y;
           if (!SFscrollTimerAdded) {
              SFscrollTimerAdded = 1;
              SFscrollTimerId = XtAppAddTimeOut(SFapp,
                                            SFscrollTimerInterval(),
                                            SFscrollTimer, (XtPointer) n);
           }
       }

       return -1;
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SFpathAreaSelectedCallback ( Widget  w,
XtPointer  client_data,
int  pnew 
)

Definition at line 767 of file sfDraw.c.

{
    int new;
    float f;

    UNUSED(client_data);
    
    new = SFdirPtr + (((double)pnew) / SFpathScrollWidth) * SFdirEnd;

    if (new > SFdirEnd - 3) {
       new = SFdirEnd - 3;
    }

    if (new < 0) {
       new = 0;
    }

    f = ((double)new) / SFdirEnd;

    XawScrollbarSetThumb(w, f,
                      (double)(SFdirEnd < 3 ? SFdirEnd : 3) / SFdirEnd);

    SFpathSliderMovedCallback(w, (XtPointer) NULL, &f);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SFpathSliderMovedCallback ( Widget  w,
XtPointer  client_data,
float *  new 
)

Definition at line 729 of file sfDraw.c.

{
    SFDir *dir;
    int n;
    XawTextPosition pos;
    int SFdirPtrSave;

    UNUSED(w);
    UNUSED(client_data);
    
    SFdirPtrSave = SFdirPtr;
    SFdirPtr = (*new) * SFdirEnd;
    if (SFdirPtr == SFdirPtrSave) {
       return;
    }

    SFdrawLists(SF_DO_SCROLL);

    n = 2;
    while (SFdirPtr + n >= SFdirEnd) {
       n--;
    }

    dir = &(SFdirs[SFdirPtr + n]);

    pos = dir->path - SFcurrentPath;

    if (!strncmp(SFcurrentPath, SFstartDir, strlen(SFstartDir))) {
       pos -= strlen(SFstartDir);
       if (pos < 0) {
           pos = 0;
       }
    }

    XawTextSetInsertionPoint(selFileField, pos);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void SFscrollTimer ( XtPointer  p,
XtIntervalId *  id 
) [static]

Definition at line 426 of file sfDraw.c.

{
    SFDir *dir;
    int save;
    int n;

    UNUSED(id);
    
    n = (int)p;

    fprintf(stderr, "SFscrollTimer called!\n");
    
    dir = &(SFdirs[SFdirPtr + n]);
    save = dir->vOrigin;

    if (SFcurrentListY < SFlowerY) {
       if (dir->vOrigin > 0) {
           SFvSliderMovedCallback(selFileVScrolls[n], n, dir->vOrigin - 1);
       }
    }
    else if (SFcurrentListY > SFupperY) {
       if (dir->vOrigin < dir->nEntries - SFlistSize) {
           SFvSliderMovedCallback(selFileVScrolls[n], n, dir->vOrigin + 1);
       }
    }

    if (dir->vOrigin != save) {
       if (dir->nEntries) {
           XawScrollbarSetThumb(selFileVScrolls[n],
                             (double)(dir->vOrigin) / dir->nEntries,
                             (double)(dir->nEntries < SFlistSize
                                     ? dir-> nEntries : SFlistSize)
                             / dir->nEntries);
       }
    }

    if (SFbuttonPressed) {
       SFscrollTimerId = XtAppAddTimeOut(SFapp,
                                     SFscrollTimerInterval(),
                                     SFscrollTimer, (XtPointer) n);
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

static unsigned long SFscrollTimerInterval ( void  ) [static]

Definition at line 394 of file sfDraw.c.

{
    static int maxVal = 200;
    static int varyDist = 50;
    static int minDist = 50;
    int t;
    int dist;

    if (SFcurrentListY < SFlowerY) {
       dist = SFlowerY - SFcurrentListY;
    }
    else if (SFcurrentListY > SFupperY) {
       dist = SFcurrentListY - SFupperY;
    }
    else {
       return (unsigned long)1;
    }

    t = maxVal - ((maxVal / varyDist) * (dist - minDist));

    if (t < 1) {
       t = 1;
    }

    if (t > maxVal) {
       t = maxVal;
    }

    return (unsigned long)t;
}

Here is the caller graph for this function:

static int SFstatAndCheck ( SFDir dir,
SFEntry entry 
) [static]

Definition at line 235 of file sfDraw.c.

{
    struct stat statBuf;
    char save;
    int last;
    extern int SFchdir();

    /*
     * must be restored before returning
     */
    save = *(dir->path);
    *(dir->path) = 0;

    if (!SFchdir(SFcurrentPath)) {
       last = strlen(entry->real) - 1;
       entry->real[last] = 0;
       entry->statDone = 1;
       if ((!stat(entry->real, &statBuf))
#ifdef S_IFLNK
           || (!lstat(entry->real, &statBuf))
#endif /* ndef S_IFLNK */
           ) {
           if (SFfunc) {
              char *shown;

              shown = NULL;
              if (SFfunc(entry->real, &shown, &statBuf)) {
                  if (shown) {
                     int len;

                     len = strlen(shown);
                     entry->shown = XtMalloc((unsigned)(len + 2)
                         );
                     (void)strcpy(entry->shown, shown);
                     SFwriteStatChar(entry->shown, len, &statBuf);
                     entry->shown[len + 1] = 0;
                  }
              }
              else {
                  SFdeleteEntry(dir, entry);

                  *(dir->path) = save;
                  return 1;
              }
           }
           SFwriteStatChar(entry->real, last, &statBuf);
       }
       else {
           entry->real[last] = ' ';
       }
    }

    *(dir->path) = save;
    return 0;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SFvAreaSelectedCallback ( Widget  w,
int  n,
int  pnew 
)

Definition at line 645 of file sfDraw.c.

{
    SFDir *dir;
    int new;

    dir = &(SFdirs[SFdirPtr + n]);

    new = dir->vOrigin + ((double)pnew / SFvScrollHeight) * dir->nEntries;

    if (new > dir->nEntries - SFlistSize) {
       new = dir->nEntries - SFlistSize;
    }

    if (new < 0) {
       new = 0;
    }

    if (dir->nEntries) {
       float f;

       f = ((double)new) / dir->nEntries;

       XawScrollbarSetThumb(w, f,
                          (double)(dir->nEntries < SFlistSize
                                  ? dir->nEntries
                                  : SFlistSize)
                          / dir->nEntries);
    }

    SFvSliderMovedCallback(w, n, new);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SFvFloatSliderMovedCallback ( Widget  w,
int  n,
float *  fnew 
)

Definition at line 565 of file sfDraw.c.

{
    int new;

    new = (*fnew) * SFdirs[SFdirPtr + n].nEntries;

    SFvSliderMovedCallback(w, n, new);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void SFvSliderMovedCallback ( Widget  w,
int  n,
int  new 
)

Definition at line 575 of file sfDraw.c.

{
    int old;
    Window win;
    SFDir *dir;

    UNUSED(w);
    
    dir = &(SFdirs[SFdirPtr + n]);

    old = dir->vOrigin;
    dir->vOrigin = new;

    if (old == new) {
       return;
    }

    win = XtWindow(selFileLists[n]);

    if (ABS(new - old) < SFlistSize) {
       if (new > old) {
           XCopyArea(SFdisplay,
                    win,
                    win,
                    SFscrollGC,
                    SFlineToTextH,
                    SFlowerY + (new - old) * SFentryHeight,
                    SFentryWidth + SFlineToTextH,
                    (SFlistSize - (new - old)) * SFentryHeight,
                    SFlineToTextH, SFlowerY);
           XClearArea(SFdisplay,
                     win,
                     SFlineToTextH,
                     SFlowerY + (SFlistSize - (new - old)) *
                     SFentryHeight,
                     SFentryWidth + SFlineToTextH,
                     (new - old) * SFentryHeight, False);
           SFdrawStrings(win, dir, SFlistSize - (new - old), SFlistSize - 1);
       }
       else {
           XCopyArea(SFdisplay,
                    win,
                    win,
                    SFscrollGC,
                    SFlineToTextH,
                    SFlowerY,
                    SFentryWidth + SFlineToTextH,
                    (SFlistSize - (old - new)) * SFentryHeight,
                    SFlineToTextH, SFlowerY + (old - new) * SFentryHeight);
           XClearArea(SFdisplay,
                     win,
                     SFlineToTextH,
                     SFlowerY,
                     SFentryWidth + SFlineToTextH,
                     (old - new) * SFentryHeight, False);
           SFdrawStrings(win, dir, 0, old - new);
       }
    }
    else {
       XClearArea(SFdisplay,
                 win,
                 SFlineToTextH,
                 SFlowerY,
                 SFentryWidth + SFlineToTextH,
                 SFlistSize * SFentryHeight, False);
       SFdrawStrings(win, dir, 0, SFlistSize - 1);
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 793 of file sfDraw.c.

{
    SFDir *dir;
    SFEntry *entry;

    for (dir = &(SFdirs[SFdirEnd - 1]); dir >= SFdirs; dir--) {
       if (!(dir->nEntries)) {
           continue;
       }
       for (entry = &(dir->entries[dir->nEntries - 1]);
            entry >= dir->entries; entry--) {
           if (!(entry->statDone)) {
              (void)SFstatAndCheck(dir, entry);
              return False;
           }
       }
    }

    SFworkProcAdded = 0;

    return True;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void SFwriteStatChar ( char *  name,
int  last,
struct stat statBuf 
) [static]

Definition at line 229 of file sfDraw.c.

{
    name[last] = SFstatChar(statBuf);
}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

Definition at line 46 of file sfDraw.c.

Definition at line 46 of file sfDraw.c.

Definition at line 46 of file sfDraw.c.

int SFcurrentInvert[3] = { -1, -1, -1 }

Definition at line 48 of file sfDraw.c.

int SFcurrentListY [static]

Definition at line 59 of file sfDraw.c.

XFontStruct* SFfont [static]

Definition at line 57 of file sfDraw.c.

GC SFinvertGC [static]

Definition at line 50 of file sfDraw.c.

GC SFlineGC [static]

Definition at line 50 of file sfDraw.c.

GC SFscrollGC [static]

Definition at line 50 of file sfDraw.c.

XtIntervalId SFscrollTimerId [static]

Definition at line 61 of file sfDraw.c.

GC SFtextGC [static]

Definition at line 50 of file sfDraw.c.

XtResource textResources[] [static]
Initial value:
 {
    {XtNfont, XtCFont, XtRString, sizeof(char *),
     XtOffset(textPtr, font), XtRString, SF_DEFAULT_FONT},
}

Definition at line 52 of file sfDraw.c.