diff --git a/src/chat_commands.c b/src/chat_commands.c index 7926831..8ce9fa8 100644 --- a/src/chat_commands.c +++ b/src/chat_commands.c @@ -67,7 +67,7 @@ void cmd_groupinvite(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*a void cmd_join_group(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]) { if (num_groupchats >= MAX_GROUPCHAT_NUM) { - wprintw(window, "\nMaximum number of group chats has been reached.\n"); + wprintw(window, "Maximum number of group chats has been reached.\n"); return; } diff --git a/src/friendlist.c b/src/friendlist.c index 274e95e..3c8c260 100644 --- a/src/friendlist.c +++ b/src/friendlist.c @@ -153,7 +153,7 @@ static void friendlist_onGroupInvite(ToxWindow *self, Tox *m, int num, uint8_t * friends[num].chatwin = add_window(m, new_chat(m, friends[num].num)); } -static void select_friend(Tox *m, wint_t key) +static void select_friend(ToxWindow *self, Tox *m, wint_t key) { if (key == KEY_UP) { if (--num_selected < 0) @@ -204,7 +204,7 @@ static void friendlist_onKey(ToxWindow *self, Tox *m, wint_t key) } else if (key == 0x107 || key == 0x8 || key == 0x7f) { delete_friend(m, self, f, key); } else { - select_friend(m, key); + select_friend(self, m, key); } } @@ -228,7 +228,7 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m) int i; - for (i = 0; i < num_friends; ++i) { + for (i = 0; i < num_friends && i < y-3; ++i) { int f = friendlist_index[i]; bool f_selected = false; diff --git a/src/global_commands.c b/src/global_commands.c index c5bdbe2..91f2374 100644 --- a/src/global_commands.c +++ b/src/global_commands.c @@ -178,7 +178,7 @@ void cmd_connect(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv) void cmd_groupchat(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]) { if (num_groupchats >= MAX_GROUPCHAT_NUM) { - wprintw(window, "\nMaximum number of group chats has been reached.\n"); + wprintw(window, "Maximum number of group chats has been reached.\n"); return; } diff --git a/src/groupchat.c b/src/groupchat.c index c840894..cf2bb75 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -33,8 +33,8 @@ int init_groupchat_win(ToxWindow *prompt, Tox *m, int groupnum) groupchats[i].chatwin = add_window(m, new_group_chat(m, groupnum)); groupchats[i].active = true; groupchats[i].num_peers = 0; - groupchats[i].peer_names = malloc(sizeof(uint8_t *) * TOX_MAX_NAME_LENGTH); - groupchats[i].oldpeer_names = malloc(sizeof(uint8_t *) * TOX_MAX_NAME_LENGTH); + groupchats[i].peer_names = malloc(sizeof(uint8_t) * TOX_MAX_NAME_LENGTH); + groupchats[i].oldpeer_names = malloc(sizeof(uint8_t) * TOX_MAX_NAME_LENGTH); memset(groupchats[i].peer_names, 0, sizeof(groupchats[i].peer_names)); memset(groupchats[i].oldpeer_names, 0, sizeof(groupchats[i].oldpeer_names)); @@ -131,8 +131,8 @@ static void copy_peernames(int gnum, int npeers, uint8_t tmp_peerlist[][TOX_MAX_ int N = TOX_MAX_NAME_LENGTH; - groupchats[gnum].peer_names = malloc(sizeof(uint8_t *) * npeers * N); - groupchats[gnum].oldpeer_names = malloc(sizeof(uint8_t *) * npeers * N); + groupchats[gnum].peer_names = malloc(sizeof(uint8_t) * npeers * N); + groupchats[gnum].oldpeer_names = malloc(sizeof(uint8_t) * npeers * N); if (groupchats[gnum].peer_names == NULL || groupchats[gnum].oldpeer_names == NULL) { endwin(); @@ -307,9 +307,10 @@ static void groupchat_onDraw(ToxWindow *self, Tox *m) int num_peers = groupchats[self->num].num_peers; int N = TOX_MAX_NAME_LENGTH; + int maxlines = y - CHATBOX_HEIGHT; int i; - for (i = 0; i < num_peers; ++i) { + for (i = 0; i < num_peers && i < maxlines; ++i) { wmove(ctx->sidebar, i, 1); groupchats[self->num].peer_names[i * N + SIDEBAR_WIDTH - 2] = '\0'; uint8_t *nick = !string_is_empty(&groupchats[self->num].peer_names[i*N])\