diff options
-rw-r--r-- | src/ui/core.c | 64 | ||||
-rw-r--r-- | src/ui/windows.c | 51 | ||||
-rw-r--r-- | src/ui/windows.h | 5 |
3 files changed, 42 insertions, 78 deletions
diff --git a/src/ui/core.c b/src/ui/core.c index dc9cb73b..21589e27 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -245,23 +245,29 @@ _ui_win_exists(int index) static gboolean _ui_xmlconsole_exists(void) { - return wins_xmlconsole_exists(); + ProfXMLWin *xmlwin = wins_get_xmlconsole(); + if (xmlwin) { + return TRUE; + } else { + return FALSE; + } } static void _ui_handle_stanza(const char * const msg) { if (ui_xmlconsole_exists()) { - ProfWin *xmlconsole = wins_get_xmlconsole(); + ProfXMLWin *xmlconsole = wins_get_xmlconsole(); + ProfWin *window = (ProfWin*) xmlconsole; if (g_str_has_prefix(msg, "SENT:")) { - win_save_print(xmlconsole, '-', NULL, 0, 0, "", "SENT:"); - win_save_print(xmlconsole, '-', NULL, 0, THEME_ONLINE, "", &msg[6]); - win_save_print(xmlconsole, '-', NULL, 0, THEME_ONLINE, "", ""); + win_save_print(window, '-', NULL, 0, 0, "", "SENT:"); + win_save_print(window, '-', NULL, 0, THEME_ONLINE, "", &msg[6]); + win_save_print(window, '-', NULL, 0, THEME_ONLINE, "", ""); } else if (g_str_has_prefix(msg, "RECV:")) { - win_save_print(xmlconsole, '-', NULL, 0, 0, "", "RECV:"); - win_save_print(xmlconsole, '-', NULL, 0, THEME_AWAY, "", &msg[6]); - win_save_print(xmlconsole, '-', NULL, 0, THEME_AWAY, "", ""); + win_save_print(window, '-', NULL, 0, 0, "", "RECV:"); + win_save_print(window, '-', NULL, 0, THEME_AWAY, "", &msg[6]); + win_save_print(window, '-', NULL, 0, THEME_AWAY, "", ""); } } } @@ -685,23 +691,27 @@ _ui_handle_special_keys(const wint_t * const ch, const int result) static void _ui_close_connected_win(int index) { - win_type_t win_type = ui_win_type(index); - if (win_type == WIN_MUC) { - ProfMucWin *mucwin = wins_get_muc_by_num(index); - presence_leave_chat_room(mucwin->roomjid); - } else if (win_type == WIN_CHAT) { + ProfWin *window = wins_get_by_num(index); + if (window) { + if (window->type == WIN_MUC) { + ProfMucWin *mucwin = (ProfMucWin*) window; + assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK); + presence_leave_chat_room(mucwin->roomjid); + } else if (window->type == WIN_CHAT) { + ProfChatWin *chatwin = (ProfChatWin*) window; + assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); #ifdef HAVE_LIBOTR - ProfChatWin *chatwin = wins_get_chat_by_num(index); - if (chatwin->is_otr) { - otr_end_session(chatwin->barejid); - } + if (chatwin->is_otr) { + otr_end_session(chatwin->barejid); + } #endif - if (prefs_get_boolean(PREF_STATES)) { - // send <gone/> chat state before closing - if (chat_session_get_recipient_supports(chatwin->barejid)) { - chat_session_set_gone(chatwin->barejid); - message_send_gone(chatwin->barejid); - chat_session_end(chatwin->barejid); + if (prefs_get_boolean(PREF_STATES)) { + // send <gone/> chat state before closing + if (chat_session_get_recipient_supports(chatwin->barejid)) { + chat_session_set_gone(chatwin->barejid); + message_send_gone(chatwin->barejid); + chat_session_end(chatwin->barejid); + } } } } @@ -1389,9 +1399,9 @@ _ui_create_xmlconsole_win(void) static void _ui_open_xmlconsole_win(void) { - ProfWin *window = wins_get_xmlconsole(); - if (window != NULL) { - int num = wins_get_num(window); + ProfXMLWin *xmlwin = wins_get_xmlconsole(); + if (xmlwin != NULL) { + int num = wins_get_num((ProfWin*)xmlwin); ui_switch_win(num); } } @@ -2626,7 +2636,7 @@ _ui_handle_room_configuration(const char * const roomjid, DataForm *form) { ProfWin *window = wins_new_muc_config(roomjid, form); ProfMucConfWin *confwin = (ProfMucConfWin*)window; - assert(confwin->memcheck = PROFCONFWIN_MEMCHECK); + assert(confwin->memcheck == PROFCONFWIN_MEMCHECK); int num = wins_get_num(window); ui_switch_win(num); diff --git a/src/ui/windows.c b/src/ui/windows.c index d7913d4c..5ecada12 100644 --- a/src/ui/windows.c +++ b/src/ui/windows.c @@ -274,32 +274,6 @@ wins_get_by_num(int i) return g_hash_table_lookup(windows, GINT_TO_POINTER(i)); } -ProfChatWin * -wins_get_chat_by_num(int i) -{ - ProfWin *window = g_hash_table_lookup(windows, GINT_TO_POINTER(i)); - if (window) { - ProfChatWin *chatwin = (ProfChatWin*)window; - assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); - return chatwin; - } else { - return NULL; - } -} - -ProfMucWin * -wins_get_muc_by_num(int i) -{ - ProfWin *window = g_hash_table_lookup(windows, GINT_TO_POINTER(i)); - if (window) { - ProfMucWin *mucwin = (ProfMucWin*)window; - assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK); - return mucwin; - } else { - return NULL; - } -} - ProfWin * wins_get_next(void) { @@ -575,26 +549,7 @@ wins_show_subwin(ProfWin *window) } } -gboolean -wins_xmlconsole_exists(void) -{ - GList *values = g_hash_table_get_values(windows); - GList *curr = values; - - while (curr != NULL) { - ProfWin *window = curr->data; - if (window->type == WIN_XML) { - g_list_free(values); - return TRUE; - } - curr = g_list_next(curr); - } - - g_list_free(values); - return FALSE; -} - -ProfWin * +ProfXMLWin * wins_get_xmlconsole(void) { GList *values = g_hash_table_get_values(windows); @@ -603,8 +558,10 @@ wins_get_xmlconsole(void) while (curr != NULL) { ProfWin *window = curr->data; if (window->type == WIN_XML) { + ProfXMLWin *xmlwin = (ProfXMLWin*)window; + assert(xmlwin->memcheck == PROFXMLWIN_MEMCHECK); g_list_free(values); - return window; + return xmlwin; } curr = g_list_next(curr); } diff --git a/src/ui/windows.h b/src/ui/windows.h index 678e7298..c144a5a2 100644 --- a/src/ui/windows.h +++ b/src/ui/windows.h @@ -48,6 +48,7 @@ ProfChatWin *wins_get_chat(const char * const barejid); ProfMucWin * wins_get_muc(const char * const roomjid); ProfMucConfWin * wins_get_muc_conf(const char * const roomjid); ProfPrivateWin *wins_get_private(const char * const fulljid); +ProfXMLWin * wins_get_xmlconsole(void); ProfWin * wins_get_current(void); ProfChatWin * wins_get_current_chat(void); @@ -58,8 +59,6 @@ ProfMucConfWin * wins_get_current_muc_conf(void); void wins_set_current_by_num(int i); ProfWin * wins_get_by_num(int i); -ProfChatWin * wins_get_chat_by_num(int i); -ProfMucWin * wins_get_muc_by_num(int i); ProfWin * wins_get_next(void); ProfWin * wins_get_previous(void); @@ -78,8 +77,6 @@ gboolean wins_tidy(void); GSList * wins_create_summary(void); void wins_destroy(void); GList * wins_get_nums(void); -gboolean wins_xmlconsole_exists(void); -ProfWin * wins_get_xmlconsole(void); gboolean wins_swap(int source_win, int target_win); void wins_hide_subwin(ProfWin *window); void wins_show_subwin(ProfWin *window); |