diff --git a/src/chat.c b/src/chat.c index cec4caf..e3703b0 100644 --- a/src/chat.c +++ b/src/chat.c @@ -99,7 +99,7 @@ static void chat_onAction(ToxWindow *self, Tox *m, int num, uint8_t *action, uin alert_window(self, WINDOW_ALERT_1, true); } -static void chat_onNickChange(ToxWindow *self, int num, uint8_t *nick, uint16_t len) +static void chat_onNickChange(ToxWindow *self, Tox *m, int num, uint8_t *nick, uint16_t len) { if (self->num != num) return; diff --git a/src/friendlist.c b/src/friendlist.c index c862819..50e1fd7 100644 --- a/src/friendlist.c +++ b/src/friendlist.c @@ -20,7 +20,6 @@ extern char *DATA_FILE; extern ToxWindow *prompt; static int max_friends_index = 0; /* marks the index of the last friend in friends array */ -static int num_friends = 0; static int num_selected = 0; ToxicFriend friends[MAX_FRIENDS_NUM]; @@ -40,7 +39,7 @@ static int index_name_cmp(const void *n1, const void *n2) } /* sorts friendlist_index first by connection status then alphabetically */ -void sort_friendlist_index(void) +void sort_friendlist_index(Tox *m) { int i; int n = 0; @@ -50,7 +49,7 @@ void sort_friendlist_index(void) friendlist_index[n++] = friends[i].num; } - qsort(friendlist_index, num_friends, sizeof(int), index_name_cmp); + qsort(friendlist_index, tox_count_friendlist(m), sizeof(int), index_name_cmp); } static void friendlist_onMessage(ToxWindow *self, Tox *m, int num, uint8_t *str, uint16_t len) @@ -83,10 +82,10 @@ static void friendlist_onConnectionChange(ToxWindow *self, Tox *m, int num, uint return; friends[num].online = status == 1 ? true : false; - sort_friendlist_index(); + sort_friendlist_index(m); } -static void friendlist_onNickChange(ToxWindow *self, int num, uint8_t *str, uint16_t len) +static void friendlist_onNickChange(ToxWindow *self, Tox *m, int num, uint8_t *str, uint16_t len) { if (len > TOX_MAX_NAME_LENGTH || num >= max_friends_index) return; @@ -95,7 +94,7 @@ static void friendlist_onNickChange(ToxWindow *self, int num, uint8_t *str, uint len = strlen(str) + 1; memcpy(friends[num].name, str, len); friends[num].namelength = len; - sort_friendlist_index(); + sort_friendlist_index(m); } static void friendlist_onStatusChange(ToxWindow *self, Tox *m, int num, TOX_USERSTATUS status) @@ -139,13 +138,11 @@ static void friendlist_onFriendAdded(ToxWindow *self, Tox *m, int num, bool sort friends[i].namelength = strlen(friends[i].name) + 1; } - ++num_friends; - if (i == max_friends_index) ++max_friends_index; if (sort) - sort_friendlist_index(); + sort_friendlist_index(m); return; } @@ -203,6 +200,8 @@ static void friendlist_onGroupInvite(ToxWindow *self, Tox *m, int num, uint8_t * static void select_friend(ToxWindow *self, Tox *m, wint_t key) { + int num_friends = tox_count_friendlist(m); + if (key == KEY_UP) { if (--num_selected < 0) num_selected = num_friends - 1; @@ -224,19 +223,20 @@ static void delete_friend(Tox *m, ToxWindow *self, int f_num, wint_t key) } max_friends_index = i; - --num_friends; /* make sure num_selected stays within num_friends range */ + int num_friends = tox_count_friendlist(m); + if (num_friends && num_selected == num_friends) --num_selected; - sort_friendlist_index(); + sort_friendlist_index(m); store_data(m, DATA_FILE); } static void friendlist_onKey(ToxWindow *self, Tox *m, wint_t key) { - if (num_friends == 0) + if (tox_count_friendlist(m) == 0) return; int f = friendlist_index[num_selected]; @@ -273,6 +273,7 @@ static void friendlist_onDraw(ToxWindow *self, Tox *m) getmaxyx(self->window, y2, x2); bool fix_statuses = x2 != self->x; /* true if window x axis has changed */ + int num_friends = tox_count_friendlist(m); wattron(self->window, COLOR_PAIR(CYAN)); wprintw(self->window, " Open a chat window with the"); diff --git a/src/friendlist.h b/src/friendlist.h index 568ae7d..3abc781 100644 --- a/src/friendlist.h +++ b/src/friendlist.h @@ -22,6 +22,6 @@ void disable_chatwin(int f_num); int get_friendnum(uint8_t *name); /* sorts friendlist_index first by connection status then alphabetically */ -void sort_friendlist_index(void); +void sort_friendlist_index(Tox *m); #endif /* end of include guard: FRIENDLIST_H_53I41IM */ diff --git a/src/main.c b/src/main.c index 06e82cb..a4b5e93 100644 --- a/src/main.c +++ b/src/main.c @@ -547,7 +547,7 @@ int main(int argc, char *argv[]) } prompt_init_statusbar(prompt, m); - sort_friendlist_index(); + sort_friendlist_index(m); while (true) { do_tox(m, prompt); diff --git a/src/toxic_windows.h b/src/toxic_windows.h index 4f8b025..3a3d62e 100644 --- a/src/toxic_windows.h +++ b/src/toxic_windows.h @@ -72,7 +72,7 @@ struct ToxWindow { void(*onFriendAdded)(ToxWindow *, Tox *, int, bool); void(*onConnectionChange)(ToxWindow *, Tox *, int, uint8_t); void(*onMessage)(ToxWindow *, Tox *, int, uint8_t *, uint16_t); - void(*onNickChange)(ToxWindow *, int, uint8_t *, uint16_t); + void(*onNickChange)(ToxWindow *, Tox *, int, uint8_t *, uint16_t); void(*onStatusChange)(ToxWindow *, Tox *, int, TOX_USERSTATUS); void(*onStatusMessageChange)(ToxWindow *, int, uint8_t *, uint16_t); void(*onAction)(ToxWindow *, Tox *, int, uint8_t *, uint16_t); diff --git a/src/windows.c b/src/windows.c index a6fb7a3..8e068f5 100644 --- a/src/windows.c +++ b/src/windows.c @@ -66,7 +66,7 @@ void on_nickchange(Tox *m, int friendnumber, uint8_t *string, uint16_t length, v for (i = 0; i < MAX_WINDOWS_NUM; ++i) { if (windows[i].onNickChange != NULL) - windows[i].onNickChange(&windows[i], friendnumber, string, length); + windows[i].onNickChange(&windows[i], m, friendnumber, string, length); } if (store_data(m, DATA_FILE))