flashing drastically descreased
This commit is contained in:
parent
df061c1f36
commit
43db0ce7df
@ -1,3 +1,2 @@
|
|||||||
+ scroll flashes
|
|
||||||
+ technical dept in tui.cpp -
|
|
||||||
+ resizing
|
+ resizing
|
||||||
|
+ unicode support in the tui
|
||||||
|
@ -86,8 +86,8 @@ signed main(const int argc, const char * const * const argv) {
|
|||||||
pthread_t query_thread;
|
pthread_t query_thread;
|
||||||
pthread_create(&query_thread, NULL, async_input, NULL);
|
pthread_create(&query_thread, NULL, async_input, NULL);
|
||||||
while (do_run) {
|
while (do_run) {
|
||||||
loop_start:
|
|
||||||
entry_t entry;
|
entry_t entry;
|
||||||
|
loop_start:
|
||||||
if (do_redisplay) {
|
if (do_redisplay) {
|
||||||
do_redisplay = false;
|
do_redisplay = false;
|
||||||
if (is_input_changed) {
|
if (is_input_changed) {
|
||||||
@ -97,7 +97,7 @@ signed main(const int argc, const char * const * const argv) {
|
|||||||
requery();
|
requery();
|
||||||
}
|
}
|
||||||
while (entry = get_entry(), entry.command != NULL) {
|
while (entry = get_entry(), entry.command != NULL) {
|
||||||
if (is_input_changed) { goto loop_start; }
|
if (is_input_changed) { tui_rearm(); goto loop_start; }
|
||||||
tui_append_back(entry);
|
tui_append_back(entry);
|
||||||
}
|
}
|
||||||
tui_refresh();
|
tui_refresh();
|
||||||
|
34
source/tui.c
34
source/tui.c
@ -39,7 +39,7 @@ static int input_available = false;
|
|||||||
static int input;
|
static int input;
|
||||||
|
|
||||||
//
|
//
|
||||||
static void refresh_input(void);
|
static inline void update_input(void);
|
||||||
static void full_redraw(void);
|
static void full_redraw(void);
|
||||||
|
|
||||||
static bool do_fullredraw = true;
|
static bool do_fullredraw = true;
|
||||||
@ -73,7 +73,13 @@ int init_tui(void) {
|
|||||||
int return_input_available(void) { return input_available; }
|
int return_input_available(void) { return input_available; }
|
||||||
rl_getc_function = getc_function;
|
rl_getc_function = getc_function;
|
||||||
rl_input_available_hook = return_input_available;
|
rl_input_available_hook = return_input_available;
|
||||||
rl_redisplay_function = refresh_input;
|
/* Due to this bug: https://mail.gnu.org/archive/html/bug-readline/2013-09/msg00021.html ;
|
||||||
|
* we cannot null this function.
|
||||||
|
* Im seriously questioning why readline is still the """default""" library in the wild
|
||||||
|
* and whether i should participate.
|
||||||
|
*/
|
||||||
|
int redisplay_nop(void) { return; }
|
||||||
|
rl_redisplay_function = redisplay_nop;
|
||||||
/* We must specify an input handler or readline chimps out,
|
/* We must specify an input handler or readline chimps out,
|
||||||
* but we dont want the line to be actually submittable,
|
* but we dont want the line to be actually submittable,
|
||||||
* (search is continous and that would delete what the user
|
* (search is continous and that would delete what the user
|
||||||
@ -131,19 +137,25 @@ void full_redraw(void) {
|
|||||||
box(main_window, 0, 0);
|
box(main_window, 0, 0);
|
||||||
|
|
||||||
waddstr(version_window, version_string);
|
waddstr(version_window, version_string);
|
||||||
wrefresh(version_window);
|
|
||||||
|
|
||||||
refresh_input();
|
update_input();
|
||||||
|
|
||||||
|
wnoutrefresh(version_window);
|
||||||
|
doupdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
void tui_rearm() {
|
||||||
void refresh_input(void) {
|
entry_line_index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline
|
||||||
|
void update_input() {
|
||||||
wmove(input_window, 0, 0);
|
wmove(input_window, 0, 0);
|
||||||
wclrtoeol(input_window);
|
wclrtoeol(input_window);
|
||||||
waddstr(input_window, "$ ");
|
waddstr(input_window, "$ ");
|
||||||
waddstr(input_window, rl_line_buffer);
|
waddstr(input_window, rl_line_buffer);
|
||||||
waddch(input_window, ACS_BLOCK);
|
waddch(input_window, ACS_BLOCK);
|
||||||
wrefresh(input_window);
|
wnoutrefresh(input_window);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tui_refresh(void) {
|
void tui_refresh(void) {
|
||||||
@ -160,11 +172,11 @@ void tui_refresh(void) {
|
|||||||
}
|
}
|
||||||
entry_line_index = 0;
|
entry_line_index = 0;
|
||||||
|
|
||||||
refresh_input();
|
update_input();
|
||||||
|
|
||||||
wrefresh(entry_window);
|
wnoutrefresh(entry_window);
|
||||||
wmove(entry_window, 0, 0);
|
wnoutrefresh(main_window);
|
||||||
wrefresh(main_window);
|
doupdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ extern int deinit_tui(void);
|
|||||||
extern void tui_append_back(const entry_t entry);
|
extern void tui_append_back(const entry_t entry);
|
||||||
|
|
||||||
extern void tui_refresh(void);
|
extern void tui_refresh(void);
|
||||||
|
extern void tui_rearm(void);
|
||||||
|
|
||||||
extern void tui_take_input(void);
|
extern void tui_take_input(void);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user