| [dwm][patch][columnredraw] Added patch - sites - public wiki contents of suckle… | |
| git clone git://git.suckless.org/sites | |
| Log | |
| Files | |
| Refs | |
| --- | |
| commit 952f890b21bc81cd5e564109a2a640efacd466ef | |
| parent 888ace78bc191e8d2fd9e3253bf791642a3fbccf | |
| Author: elbachir-one <[email protected]> | |
| Date: Tue, 19 Nov 2024 15:51:15 +0100 | |
| [dwm][patch][columnredraw] Added patch | |
| Diffstat: | |
| A st.suckless.org/patches/columnredr… | 24 ++++++++++++++++++++++++ | |
| A st.suckless.org/patches/columnredr… | 79 +++++++++++++++++++++++++++… | |
| 2 files changed, 103 insertions(+), 0 deletions(-) | |
| --- | |
| diff --git a/st.suckless.org/patches/columnredraw/index.md b/st.suckless.org/pa… | |
| @@ -0,0 +1,24 @@ | |
| +columnredraw | |
| +============ | |
| + | |
| +Description | |
| +----------- | |
| + | |
| +The "Columnredraw" patch introduces a new field maxcol to manage terminal | |
| +column resizing more effectively in the `st`. | |
| +It ensures a consistent redraw behavior when resizing columns. | |
| + | |
| +Download | |
| +-------- | |
| + | |
| +* [st-columnredraw-20241119-fb8569b.diff](st-columnredraw-20241119-fb8569b.dif… | |
| + | |
| +Notes | |
| +----- | |
| + | |
| +Here is the link to the GitHub [issue](https://github.com/bakkeby/st-flexipatc… | |
| + | |
| +Authors | |
| +------- | |
| + | |
| +* El Bachir - <[email protected]> | |
| diff --git a/st.suckless.org/patches/columnredraw/st-columnredraw-20241119-fb85… | |
| @@ -0,0 +1,79 @@ | |
| +From fb8569b193cc063ad53388e8e2009fb6682092d2 Mon Sep 17 00:00:00 2001 | |
| +From: elbachir-one <[email protected]> | |
| +Date: Tue, 19 Nov 2024 15:39:16 +0100 | |
| +Subject: [PATCH] Added columnredraw | |
| + | |
| +--- | |
| + st.c | 25 +++++++++++++++++-------- | |
| + 1 file changed, 17 insertions(+), 8 deletions(-) | |
| + | |
| +diff --git a/st.c b/st.c | |
| +index 57c6e96..7371554 100644 | |
| +--- a/st.c | |
| ++++ b/st.c | |
| +@@ -113,6 +113,7 @@ typedef struct { | |
| + typedef struct { | |
| + int row; /* nb row */ | |
| + int col; /* nb col */ | |
| ++ int maxcol; /* Maximum number of columns */ | |
| + Line *line; /* screen */ | |
| + Line *alt; /* alternate screen */ | |
| + int *dirty; /* dirtyness of lines */ | |
| +@@ -1231,8 +1232,8 @@ tclearregion(int x1, int y1, int x2, int y2) | |
| + if (y1 > y2) | |
| + temp = y1, y1 = y2, y2 = temp; | |
| + | |
| +- LIMIT(x1, 0, term.col-1); | |
| +- LIMIT(x2, 0, term.col-1); | |
| ++ LIMIT(x1, 0, term.maxcol-1); | |
| ++ LIMIT(x2, 0, term.maxcol-1); | |
| + LIMIT(y1, 0, term.row-1); | |
| + LIMIT(y2, 0, term.row-1); | |
| + | |
| +@@ -2546,11 +2547,18 @@ void | |
| + tresize(int col, int row) | |
| + { | |
| + int i; | |
| +- int minrow = MIN(row, term.row); | |
| +- int mincol = MIN(col, term.col); | |
| ++ int tmp; | |
| ++ int minrow, mincol; | |
| + int *bp; | |
| + TCursor c; | |
| + | |
| ++ tmp = col; | |
| ++ if (!term.maxcol) | |
| ++ term.maxcol = term.col; | |
| ++ col = MAX(col, term.maxcol); | |
| ++ minrow = MIN(row, term.row); | |
| ++ mincol = MIN(col, term.maxcol); | |
| ++ | |
| + if (col < 1 || row < 1) { | |
| + fprintf(stderr, | |
| + "tresize: error resizing to %dx%d\n", col, row); | |
| +@@ -2593,17 +2601,18 @@ tresize(int col, int row) | |
| + term.line[i] = xmalloc(col * sizeof(Glyph)); | |
| + term.alt[i] = xmalloc(col * sizeof(Glyph)); | |
| + } | |
| +- if (col > term.col) { | |
| +- bp = term.tabs + term.col; | |
| ++ if (col > term.maxcol) { | |
| ++ bp = term.tabs + term.maxcol; | |
| + | |
| +- memset(bp, 0, sizeof(*term.tabs) * (col - term.col)); | |
| ++ memset(bp, 0, sizeof(*term.tabs) * (col - term.maxcol)); | |
| + while (--bp > term.tabs && !*bp) | |
| + /* nothing */ ; | |
| + for (bp += tabspaces; bp < term.tabs + col; bp += tabspaces) | |
| + *bp = 1; | |
| + } | |
| + /* update terminal size */ | |
| +- term.col = col; | |
| ++ term.col = tmp; | |
| ++ term.maxcol = col; | |
| + term.row = row; | |
| + /* reset scrolling region */ | |
| + tsetscroll(0, row-1); | |
| +-- | |
| +2.46.2 | |
| + |