38 lines
801 B
C
38 lines
801 B
C
#include "dat.h"
|
|
#include "fn.h"
|
|
|
|
int
|
|
pagemarker(char *buf, int nbuf, int first, int shown, int total)
|
|
{
|
|
if(nbuf <= 0)
|
|
return 0;
|
|
buf[0] = 0;
|
|
if(total <= Maxdisp || shown <= 0)
|
|
return 0;
|
|
return snprint(buf, nbuf, "%d-%d/%d", first + 1,
|
|
first + shown, total);
|
|
}
|
|
|
|
void
|
|
popupposition(Caret *caret, int pointerx, int pointery, int screenw,
|
|
int screenh, int w, int h, int *x, int *y)
|
|
{
|
|
vlong below, px, py, xmax, ymax;
|
|
|
|
if(caret->valid){
|
|
px = caret->x;
|
|
below = (vlong)caret->y + max(caret->h, 0);
|
|
if(below >= 0 && below + h <= screenh)
|
|
py = below;
|
|
else
|
|
py = (vlong)caret->y - h;
|
|
}else{
|
|
px = (vlong)pointerx + 10;
|
|
py = (vlong)pointery + 10;
|
|
}
|
|
xmax = max((vlong)screenw - w, 0);
|
|
ymax = max((vlong)screenh - h, 0);
|
|
*x = max(0, min(px, xmax));
|
|
*y = max(0, min(py, ymax));
|
|
}
|