From 76b9347a5fa3a0970527c6ee1b97ef1c714f636b Mon Sep 17 00:00:00 2001 From: Fazlul Shahriar Date: Tue, 13 Nov 2018 23:11:31 -0500 Subject: acme: avoid division by zero when resizing col (#189) To reproduce, create a column with at least two windows and resize acme to have almost zero height. --- src/cmd/acme/cols.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/cmd/acme') diff --git a/src/cmd/acme/cols.c b/src/cmd/acme/cols.c index 10e014ee..b1fe23ba 100644 --- a/src/cmd/acme/cols.c +++ b/src/cmd/acme/cols.c @@ -250,8 +250,12 @@ colresize(Column *c, Rectangle r) w->maxlines = 0; if(i == c->nw-1) r1.max.y = r.max.y; - else - r1.max.y = r1.min.y+(Dy(w->r)+Border)*Dy(r)/Dy(c->r); + else{ + r1.max.y = r1.min.y; + if(Dy(c->r) != 0){ + r1.max.y += (Dy(w->r)+Border)*Dy(r)/Dy(c->r); + } + } r1.max.y = max(r1.max.y, r1.min.y + Border+font->height); r2 = r1; r2.max.y = r2.min.y+Border; -- cgit v1.2.3 From 43b0d532bd3c1e4fbd4385c6470db12dbf7a5ad8 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 15 Nov 2018 20:52:18 -0500 Subject: acme: add 32x32 boxcursor The only difference from the upscaled 16x16 is a one-pixel adjustment in the offset position, but this at least exercises setcursor2. --- src/cmd/acme/acme.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/cmd/acme/cols.c | 2 +- src/cmd/acme/dat.h | 1 + src/cmd/acme/rows.c | 2 +- 4 files changed, 71 insertions(+), 2 deletions(-) (limited to 'src/cmd/acme') diff --git a/src/cmd/acme/acme.c b/src/cmd/acme/acme.c index 742aabdf..12701f23 100644 --- a/src/cmd/acme/acme.c +++ b/src/cmd/acme/acme.c @@ -966,6 +966,74 @@ Cursor boxcursor = { 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x00, 0x00} }; +Cursor2 boxcursor2 = { + {-15, -15}, + {0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xC0, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF}, + {0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0x00, 0x00, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xFC, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00} +}; + void iconinit(void) { diff --git a/src/cmd/acme/cols.c b/src/cmd/acme/cols.c index b1fe23ba..6215e044 100644 --- a/src/cmd/acme/cols.c +++ b/src/cmd/acme/cols.c @@ -477,7 +477,7 @@ coldragwin(Column *c, Window *w, int but) Column *nc; clearmouse(); - setcursor(mousectl, &boxcursor); + setcursor2(mousectl, &boxcursor, &boxcursor2); b = mouse->buttons; op = mouse->xy; while(mouse->buttons == b) diff --git a/src/cmd/acme/dat.h b/src/cmd/acme/dat.h index 8c4b14ee..8a81c97d 100644 --- a/src/cmd/acme/dat.h +++ b/src/cmd/acme/dat.h @@ -525,6 +525,7 @@ Image *button; Image *but2col; Image *but3col; Cursor boxcursor; +Cursor2 boxcursor2; Row row; int timerpid; Disk *disk; diff --git a/src/cmd/acme/rows.c b/src/cmd/acme/rows.c index 8cff0855..83c64594 100644 --- a/src/cmd/acme/rows.c +++ b/src/cmd/acme/rows.c @@ -148,7 +148,7 @@ rowdragcol(Row *row, Column *c, int _0) USED(_0); clearmouse(); - setcursor(mousectl, &boxcursor); + setcursor2(mousectl, &boxcursor, &boxcursor2); b = mouse->buttons; op = mouse->xy; while(mouse->buttons == b) -- cgit v1.2.3