diff --git a/src/deps.mk b/src/deps.mk index 3c35080..e69de29 100644 --- a/src/deps.mk +++ b/src/deps.mk @@ -1,29 +0,0 @@ -client.o: src/client.c src/file_processor.h src/main.h src/types.h \ - src/ui/widget/file_list.h src/ui/widget/../widget.h \ - src/ui/widget/../../main.h src/client.h -connection.o: src/connection.c src/main.h src/types.h src/ui/app.h \ - src/ui/../common.h src/ui/widget.h src/ui/../main.h \ - src/ui/widget/dialogue.h src/ui/widget/../widget.h \ - src/ui/widget/../../common.h src/ui/widget/button.h \ - src/ui/widget/../../main.h src/ui/widget/group.h -file_processor.o: src/file_processor.c src/client.h src/main.h \ - src/types.h src/file_processor.h src/ui/widget/file_list.h \ - src/ui/widget/../widget.h src/ui/widget/../../main.h src/query.h \ - src/ui/app.h src/ui/../common.h src/ui/widget.h src/ui/widget/dialogue.h \ - src/ui/widget/../../common.h src/ui/widget/button.h \ - src/ui/widget/../../main.h src/ui/widget/group.h \ - src/ui/widget/dialogue.h src/ui/widget/progress_bar.h -fs.o: src/fs.c -main.o: src/main.c src/connection.h src/main.h src/types.h src/ui/app.h \ - src/ui/../common.h src/ui/widget.h src/ui/../main.h \ - src/ui/widget/dialogue.h src/ui/widget/../widget.h \ - src/ui/widget/../../common.h src/ui/widget/button.h \ - src/ui/widget/../../main.h src/ui/widget/group.h src/query.h \ - src/ui/widget.h src/ui/widget/file_list.h -query.o: src/query.c src/client.h src/main.h src/types.h src/connection.h \ - src/ui/app.h src/ui/../common.h src/ui/widget.h src/ui/../main.h \ - src/ui/widget/dialogue.h src/ui/widget/../widget.h \ - src/ui/widget/../../common.h src/ui/widget/button.h \ - src/ui/widget/../../main.h src/ui/widget/group.h src/file_processor.h \ - src/ui/widget/file_list.h src/server.h src/ui/widget/dialogue.h -server.o: src/server.c src/main.h src/types.h diff --git a/src/main.c b/src/main.c index acfea8a..3b60225 100644 --- a/src/main.c +++ b/src/main.c @@ -76,8 +76,8 @@ int32_t process_user_input(app_t *app, callback_args_t *d_args) { break; } default: - d_args->data = (void *)&c; - app->active_callback(d_args); + d_args->data = (void *)&c; + app->active_callback(d_args); break; } return OK; diff --git a/src/query.c b/src/query.c index 9e9dd93..76da448 100644 --- a/src/query.c +++ b/src/query.c @@ -45,9 +45,6 @@ void query_loop(app_t *app) { for (;;) { /* update screen */ - if (query_args->state == S_WAIT_SERVER && app->modal.is_initiated) { - destroy_dialogue(&(app->modal), app); - } app_draw_modal(app); app_refresh(app); diff --git a/src/ui/app.c b/src/ui/app.c index 1441f16..993234c 100644 --- a/src/ui/app.c +++ b/src/ui/app.c @@ -73,6 +73,7 @@ void init_nc() { keypad(stdscr, TRUE); noecho(); curs_set(false); + set_escdelay(50); if (!has_colors()) { printf("Your terminal does not support color\n"); @@ -137,7 +138,8 @@ void app_refresh(app_t *app) { } void app_draw_modal(app_t *app) { - if (app->modal.needs_destroy) { + if (app->modal.needs_destroy || + (app->query_args->state == S_WAIT_SERVER && app->modal.is_initiated)) { destroy_dialogue(&(app->modal), app); } if (!app->modal.is_initiated) { diff --git a/src/ui/modals/ask_server_addr.c b/src/ui/modals/ask_server_addr.c index 7600700..75347da 100644 --- a/src/ui/modals/ask_server_addr.c +++ b/src/ui/modals/ask_server_addr.c @@ -30,7 +30,7 @@ void asa_modal_dialogue_callback(callback_args_t *args) { case 0: get_ip_port(app->params, in_ip->value, in_port->value); connect_to_server(app); - destroy_dialogue(d, app); + d->needs_destroy = true; app->query_args->state = S_WAIT_SERVER; break; case 1: diff --git a/src/ui/modals/login_credentials.c b/src/ui/modals/login_credentials.c index 3e421ff..4104591 100644 --- a/src/ui/modals/login_credentials.c +++ b/src/ui/modals/login_credentials.c @@ -37,7 +37,7 @@ void init_login_credentials_modal_cb(callback_args_t *args) { app->params->pass[in_pass->value_len] = 0; write(app->params->sd, app->params->uname, in_name->value_len); app->query_args->state = S_WAIT_SERVER; - destroy_dialogue(d, app); + d->needs_destroy = true; print_bars(app); break; case 1: diff --git a/src/ui/modals/login_option.c b/src/ui/modals/login_option.c index 6c56e52..fab7cef 100644 --- a/src/ui/modals/login_option.c +++ b/src/ui/modals/login_option.c @@ -26,7 +26,7 @@ void login_modal_option_cb(callback_args_t *args) { case 0: break; case 1: - destroy_dialogue(d, app); + d->needs_destroy = true; app->query_args->state = S_ASK_LOGIN_USER; break; } diff --git a/src/ui/modals/notification.c b/src/ui/modals/notification.c index bf98ab6..151a9ee 100644 --- a/src/ui/modals/notification.c +++ b/src/ui/modals/notification.c @@ -24,7 +24,7 @@ void init_notification_modal_cb(callback_args_t *args) { dialogue_default_callback(&d_args); app->query_args->state = WAIT_CLIENT; - destroy_dialogue(d, app); + d->needs_destroy = true; } dialogue_t *init_notification_modal(app_t *app) { diff --git a/src/ui/modals/server_message.c b/src/ui/modals/server_message.c index 9b0e6f2..c9bcea8 100644 --- a/src/ui/modals/server_message.c +++ b/src/ui/modals/server_message.c @@ -25,7 +25,7 @@ void server_message_modal_cb(callback_args_t *args) { if (response > -1) { switch (response) { case 0: - destroy_dialogue(d, app); + d->needs_destroy = true; /* TODO: macros */ free(app->query_args->server_message.text); app->query_args->server_message.text = NULL; diff --git a/src/ui/modals/upload_dialogue.c b/src/ui/modals/upload_dialogue.c index e7db56b..3f4e0e8 100644 --- a/src/ui/modals/upload_dialogue.c +++ b/src/ui/modals/upload_dialogue.c @@ -1,8 +1,8 @@ +#include "../../file_processor.h" #include "../app.h" #include "../widget/dialogue.h" #include "../widget/fs_file_list.h" #include "../widget/group.h" -#include "../../file_processor.h" #include #include #include @@ -19,18 +19,19 @@ void upload_dialogue_modal_cb(callback_args_t *args) { dialogue_default_callback(&d_args); ui_fs_file_list_t *fui = (ui_fs_file_list_t *)d->g_content->elements[0].element; - if (response > -1) { - switch (response) { - case 0: - app->query_args->state = S_WAIT_SERVER; - destroy_dialogue(d, app); - break; - case 1: - file_upload_open(fui->d_path, fui->current->name, app->query_args); - destroy_dialogue(d, app); - app->query_args->state = S_UPLOAD_PARAMS; - break; - } + switch (response) { + case 0: + app->query_args->state = S_WAIT_SERVER; + d->needs_destroy = true; + break; + case 1: + file_upload_open(fui->d_path, fui->current->name, app->query_args); + d->needs_destroy = true; + app->query_args->state = S_UPLOAD_PARAMS; + break; + case -2: + d->needs_destroy = true; + app->query_args->state = WAIT_CLIENT; } } diff --git a/src/ui/modals/upload_props_dialogue.c b/src/ui/modals/upload_props_dialogue.c index ff1f0dd..1251193 100644 --- a/src/ui/modals/upload_props_dialogue.c +++ b/src/ui/modals/upload_props_dialogue.c @@ -31,7 +31,7 @@ void upload_props_dialogue_modal_cb(callback_args_t *args) { app->query_args->file->description = malloc(desc_input->value_len + 9); /* reserve space for \n:END:\n */ strcpy(app->query_args->file->description, desc_input->value); - destroy_dialogue(d, app); + d->needs_destroy = true; app->query_args->state = S_UPLOAD_REQUESTED; write(app->query_args->sd, query, query_len); break; diff --git a/src/ui/widget/dialogue.c b/src/ui/widget/dialogue.c index 08d4217..1f63d27 100644 --- a/src/ui/widget/dialogue.c +++ b/src/ui/widget/dialogue.c @@ -75,6 +75,9 @@ void dialogue_default_callback(callback_args_t *args) { } *resp_value = -1; break; + case '\33': /* Esc key */ + *resp_value = -2; + break; case KEY_RIGHT: if (d->active.type == g_content) { if (d->g_content->elements[d->active.id - d->g_content->first_id].type == @@ -188,7 +191,6 @@ void dialogue_init_active_id(dialogue_t *dialogue) { widget_t *w = (widget_t *)dialogue->g_content->elements[i].element; dialogue->active.id = w->id; return; - } } } @@ -201,7 +203,6 @@ void dialogue_init_active_id(dialogue_t *dialogue) { widget_t *w = (widget_t *)dialogue->g_action->elements[i].element; dialogue->active.id = w->id; return; - } } } @@ -350,6 +351,7 @@ void destroy_dialogue(dialogue_t *d, void *_app) { delwin(d->win); d->win = NULL; d->is_initiated = 0; + d->needs_destroy = false; app->active_win_type = aw_left; app->active_win = app->left_win; app->active_callback = file_list_cb;