commit 12352e5943ba9ae1b54d16bc275202f12927a4a0
Author: Raniconduh <clagv.randomgames@gmail.com>
Date: Mon Jan 17 13:37:57 2022 +0000
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;
+ }
+}