hovered line now fully highlighted
This commit is contained in:
26
backend.c
26
backend.c
@ -45,9 +45,9 @@ void get_dir_content(char *path, unsigned long *dir_file_count, file *dir_conten
|
||||
for (i = 0; i < *dir_file_count; i++ ) {
|
||||
if (entry[i]->d_name[0] == '.' && !(file_modifiers & FILE_MODIFIERS_HIDDEN_FILES)) {
|
||||
} else {
|
||||
dir_content[i].file_name_width = sizeof(entry[i]->d_name) / sizeof(char);;
|
||||
dir_content[i].file_name = malloc(dir_content[i].file_name_width * sizeof(char));
|
||||
memcpy(dir_content[i].file_name, entry[i]->d_name, dir_content[i].file_name_width);
|
||||
dir_content[i].file_name_width = strlen(entry[i]->d_name);
|
||||
dir_content[i].file_name = malloc(dir_content[i].file_name_width);
|
||||
strcpy(dir_content[i].file_name, entry[i]->d_name);
|
||||
|
||||
struct stat *file;
|
||||
file = malloc(sizeof(struct stat));
|
||||
@ -124,24 +124,34 @@ void get_dir_content(char *path, unsigned long *dir_file_count, file *dir_conten
|
||||
|
||||
}
|
||||
|
||||
void print_dir(WINDOW *win, unsigned long *dir_file_count, file *dir_content){
|
||||
void print_dir(WINDOW *win, unsigned long *line_width, unsigned long *dir_file_count, file *dir_content){
|
||||
|
||||
|
||||
char *hover_bg = malloc(*line_width);
|
||||
memset(hover_bg, ' ', *line_width);
|
||||
hover_bg[*line_width] = '\0';
|
||||
unsigned long i = 0;
|
||||
unsigned int offset = 2;
|
||||
unsigned long offset_front = 2;
|
||||
if (*dir_file_count > 9) {
|
||||
offset = (snprintf(NULL, 0, "%ld", *dir_file_count)) + 1;
|
||||
offset_front = (snprintf(NULL, 0, "%ld", *dir_file_count)) + 1;
|
||||
}
|
||||
for (i = 0; i < *dir_file_count; i++) {
|
||||
unsigned long offset_back = *line_width - (snprintf(NULL,0,"%ld",dir_content[i].file_size_bytes) + 1);
|
||||
wattron(win, COLOR_PAIR(dir_content[i].color_pair));
|
||||
if (dir_content[i].status & FILE_STATUS_HOVER) {
|
||||
wattron(win, A_REVERSE);
|
||||
mvwprintw(win, i, 0, "%s", hover_bg);
|
||||
mvwprintw(win, i, 0, "%ld", i);
|
||||
mvwprintw(win, i, offset, "%s", dir_content[i].file_name);
|
||||
mvwprintw(win, i, offset_front, "%s", dir_content[i].file_name);
|
||||
mvwprintw(win, i, offset_back, "%ld", dir_content[i].file_size_bytes);
|
||||
wattroff(win, A_REVERSE);
|
||||
} else {
|
||||
mvwprintw(win, i, 0, "%ld", i);
|
||||
mvwprintw(win, i, offset, "%s", dir_content[i].file_name);
|
||||
mvwprintw(win, i, offset_front, "%s", dir_content[i].file_name);
|
||||
mvwprintw(win, i, offset_back, "%ld", dir_content[i].file_size_bytes);
|
||||
}
|
||||
wattroff(win, COLOR_PAIR(dir_content[i].color_pair));
|
||||
}
|
||||
free(hover_bg);
|
||||
}
|
||||
|
||||
|
@ -4,4 +4,4 @@
|
||||
|
||||
unsigned long get_dir_size(char *path);
|
||||
void get_dir_content(char *path, unsigned long *dir_file_count, file *dir_content);
|
||||
void print_dir(WINDOW *win, unsigned long *dir_file_count, file *dir_content);
|
||||
void print_dir(WINDOW *win, unsigned long *line_width, unsigned long *dir_file_count, file *dir_content);
|
||||
|
6
window.c
6
window.c
@ -63,7 +63,7 @@ void window_lft(WINDOW *win){
|
||||
pthread_mutex_unlock(&mutex_rgt);
|
||||
|
||||
} else {
|
||||
print_dir(win, &lft_file_count, lft_content);
|
||||
print_dir(win, &local_width, &lft_file_count, lft_content);
|
||||
pthread_mutex_unlock(&mutex_lft);
|
||||
}
|
||||
}
|
||||
@ -80,7 +80,7 @@ void window_mid(WINDOW *win){
|
||||
pthread_mutex_unlock(&mutex_rgt);
|
||||
|
||||
} else {
|
||||
print_dir(win, &mid_file_count, mid_content);
|
||||
print_dir(win, &local_width, &mid_file_count, mid_content);
|
||||
pthread_mutex_unlock(&mutex_mid);
|
||||
}
|
||||
}
|
||||
@ -100,7 +100,7 @@ void window_rgt(WINDOW *win){
|
||||
if (rgt_content[0].file_type == FILE_TYPE_OPEN_FILE) {
|
||||
mvwprintw(win, 0, 0, "%s", rgt_buffer);
|
||||
} else {
|
||||
print_dir(win, &rgt_file_count, rgt_content);
|
||||
print_dir(win, &local_width, &rgt_file_count, rgt_content);
|
||||
}
|
||||
pthread_mutex_unlock(&mutex_rgt);
|
||||
}
|
||||
|
Reference in New Issue
Block a user