~petersanchez/st

a8314643b1aeaa2187dad71dc5748aaac1760c1b — Devin J. Pohly 6 years ago a09138a
Move window-manipulating functions into x.c

xresize is now internal to x.c

Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
4 files changed, 45 insertions(+), 46 deletions(-)

M st.c
M st.h
M win.h
M x.c
M st.c => st.c +0 -36
@@ 165,7 165,6 @@ static void tnewline(int);
static void tputtab(int);
static void tputc(Rune);
static void treset(void);
static void tresize(int, int);
static void tscrollup(int, int);
static void tscrolldown(int, int);
static void tsetattr(int *, int);


@@ 420,24 419,6 @@ selinit(void)
}

int
x2col(int x)
{
	x -= borderpx;
	x /= win.cw;

	return LIMIT(x, 0, term.col-1);
}

int
y2row(int y)
{
	y -= borderpx;
	y /= win.ch;

	return LIMIT(y, 0, term.row-1);
}

int
tlinelen(int y)
{
	int i = term.col;


@@ 2620,20 2601,3 @@ kmap(KeySym k, uint state)

	return NULL;
}

void
cresize(int width, int height)
{
	int col, row;

	if (width != 0)
		win.w = width;
	if (height != 0)
		win.h = height;

	col = (win.w - 2 * borderpx) / win.cw;
	row = (win.h - 2 * borderpx) / win.ch;

	tresize(col, row);
	xresize(col, row);
}

M st.h => st.h +1 -8
@@ 80,11 80,6 @@ enum selection_snap {
	SNAP_LINE = 2
};

enum window_state {
	WIN_VISIBLE = 1,
	WIN_FOCUSED = 2
};

typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;


@@ 186,6 181,7 @@ void redraw(void);

int tattrset(int);
void tnew(int, int);
void tresize(int, int);
void tsetdirt(int, int);
void tsetdirtattr(int);
int match(uint, uint);


@@ 198,15 194,12 @@ void ttywrite(const char *, size_t);
void resettitle(void);

char *kmap(KeySym, uint);
void cresize(int, int);
void selclear(void);

void selinit(void);
void selnormalize(void);
int selected(int, int);
char *getsel(void);
int x2col(int);
int y2row(int);

size_t utf8decode(char *, Rune *, size_t);
size_t utf8encode(Rune, char *);

M win.h => win.h +0 -1
@@ 16,7 16,6 @@ void xloadcols(void);
int xsetcolorname(int, const char *);
void xsettitle(char *);
void xsetpointermotion(int);
void xresize(int, int);
void xselpaste(void);
void xsetsel(char *, Time);
void zoom(const Arg *);

M x.c => x.c +44 -1
@@ 88,12 88,16 @@ static void xclear(int, int, int, int);
static void xdrawcursor(void);
static int xgeommasktogravity(int);
static void xinit(void);
static void cresize(int, int);
static void xresize(int, int);
static int xloadfont(Font *, FcPattern *);
static void xloadfonts(char *, double);
static void xunloadfont(Font *);
static void xunloadfonts(void);
static void xsetenv(void);
static void xseturgency(int);
static int x2col(int);
static int y2row(int);

static void expose(XEvent *);
static void visibility(XEvent *);


@@ 109,7 113,6 @@ static void propnotify(XEvent *);
static void selnotify(XEvent *);
static void selclear_(XEvent *);
static void selrequest(XEvent *);

static void selcopy(Time);
static void getbuttoninfo(XEvent *);
static void mousereport(XEvent *);


@@ 148,6 151,11 @@ static DC dc;
static XWindow xw;
static XSelection xsel;

enum window_state {
	WIN_VISIBLE = 1,
	WIN_FOCUSED = 2
};

/* Font Ring Cache */
enum {
	FRC_NORMAL,


@@ 200,6 208,24 @@ zoomreset(const Arg *arg)
	}
}

int
x2col(int x)
{
	x -= borderpx;
	x /= win.cw;

	return LIMIT(x, 0, term.col-1);
}

int
y2row(int y)
{
	y -= borderpx;
	y /= win.ch;

	return LIMIT(y, 0, term.row-1);
}

void
getbuttoninfo(XEvent *e)
{


@@ 597,6 623,23 @@ bmotion(XEvent *e)
}

void
cresize(int width, int height)
{
	int col, row;

	if (width != 0)
		win.w = width;
	if (height != 0)
		win.h = height;

	col = (win.w - 2 * borderpx) / win.cw;
	row = (win.h - 2 * borderpx) / win.ch;

	tresize(col, row);
	xresize(col, row);
}

void
xresize(int col, int row)
{
	win.tw = MAX(1, col * win.cw);