Thumbnail

rani/cscroll.git

Clone URL: https://git.buni.party/rani/cscroll.git

commit 12352e5943ba9ae1b54d16bc275202f12927a4a0 Author: Raniconduh <clagv.randomgames@gmail.com> Date: Mon Jan 17 13:37:57 2022 +0000 added support for terminal resizing diff --git a/include/main.h b/include/main.h index 0be26b8..567c3d3 100644 --- a/include/main.h +++ b/include/main.h @@ -55 +56 @@      void help(void); +void handle_winch(int);    #endif /* MAIN_H */ diff --git a/src/main.c b/src/main.c index 067c9fe..fc46f02 100644 --- a/src/main.c +++ b/src/main.c @@ -56 +57 @@  #include <string.h>  #include <unistd.h>  #include <stddef.h> +#include <signal.h>    #include "commands.h"  #include "main.h" @@ -136 +148 @@  #include "io.h"     +static size_t first_f, last_f, cursor; +  int main(int argc, char ** argv) {   if (argc > 1) {   for (int i = 1; i < argc; i++) { @@ -4113 +4414 @@ int main(int argc, char ** argv) {   strcpy(cwd, p);   }   + signal(SIGWINCH, handle_winch); +   curses_init();     list_dir(cwd);   - size_t cursor = 1; + cursor = 1;   - size_t first_f, last_f;   first_f = cursor - 1;   last_f = LAST_F;   @@ -3873 +39114 @@ void help(void) {   );   exit(0);  } + + +void handle_winch(int signo) { + if (signo == SIGWINCH) { + endwin(); + refresh(); + + last_f = first_f + LINES - 6; + if (cursor > last_f) cursor = last_f; + } +}