about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/command/command.c2
-rw-r--r--src/command/commands.c14
-rw-r--r--src/ui/core.c13
-rw-r--r--src/ui/window.c33
-rw-r--r--src/ui/window.h3
5 files changed, 19 insertions, 46 deletions
diff --git a/src/command/command.c b/src/command/command.c
index d00b1896..07a2d009 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -1794,7 +1794,7 @@ cmd_execute_default(const char * inp)
                 ProfWin *current = wins_get_current();
                 ProfChatWin *chatwin = (ProfChatWin*)current;
                 GString *send_recipient = g_string_new(chatwin->barejid);
-                if (current && win_has_chat_resource(current)) {
+                if (current && chatwin->resource) {
                     g_string_append(send_recipient, "/");
                     g_string_append(send_recipient, chatwin->resource);
                 }
diff --git a/src/command/commands.c b/src/command/commands.c
index 31a117fa..c4ad5458 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -37,6 +37,7 @@
 #include <string.h>
 #include <stdlib.h>
 #include <errno.h>
+#include <assert.h>
 #include <glib.h>
 #ifdef HAVE_LIBOTR
 #include <libotr/proto.h>
@@ -1151,10 +1152,15 @@ cmd_msg(gchar **args, struct cmd_help_t help)
         }
         GString *send_jid = g_string_new(usr_jid);
         ProfWin *current = wins_get_current();
-        if (current->type == WIN_CHAT && win_has_chat_resource(current)) {
-            ProfChatWin *chatwin = (ProfChatWin *)current;
-            g_string_append(send_jid, "/");
-            g_string_append(send_jid, chatwin->resource);
+
+        // if msg to current recipient, attach resource if set
+        if (current->type == WIN_CHAT) {
+            ProfChatWin *chatwin = (ProfChatWin*)current;
+            assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK);
+            if ((g_strcmp0(chatwin->barejid, usr_jid) == 0) && (chatwin->resource)) {
+                g_string_append(send_jid, "/");
+                g_string_append(send_jid, chatwin->resource);
+            }
         }
 
         if (msg != NULL) {
diff --git a/src/ui/core.c b/src/ui/core.c
index f72ec732..dc9cb73b 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -829,11 +829,13 @@ _ui_win_has_unsaved_form(int num)
 {
     ProfWin *window = wins_get_by_num(num);
 
-    if (window->type != WIN_MUC_CONFIG) {
+    if (window->type == WIN_MUC_CONFIG) {
+        ProfMucConfWin *confwin = (ProfMucConfWin*)window;
+        assert(confwin->memcheck == PROFCONFWIN_MEMCHECK);
+        return confwin->form->modified;
+    } else {
         return FALSE;
     }
-
-    return win_has_modified_form(window);
 }
 
 static gboolean
@@ -3017,7 +3019,9 @@ _win_show_history(int win_index, const char * const contact)
 {
     ProfWin *window = wins_get_by_num(win_index);
     if (window->type == WIN_CHAT) {
-        if (win_chat_history_shown(window)) {
+        ProfChatWin *chatwin = (ProfChatWin*) window;
+        assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK);
+        if (!chatwin->history_shown) {
             Jid *jid = jid_create(jabber_get_fulljid());
             GSList *history = chat_log_get_previous(jid->barejid, contact);
             jid_destroy(jid);
@@ -3040,7 +3044,6 @@ _win_show_history(int win_index, const char * const contact)
                 }
                 curr = g_slist_next(curr);
             }
-            ProfChatWin *chatwin = (ProfChatWin*)window;
             chatwin->history_shown = TRUE;
 
             g_slist_free_full(history, free);
diff --git a/src/ui/window.c b/src/ui/window.c
index 607dddc1..dd459ece 100644
--- a/src/ui/window.c
+++ b/src/ui/window.c
@@ -921,39 +921,6 @@ win_has_active_subwin(ProfWin *window)
     }
 }
 
-gboolean
-win_chat_history_shown(ProfWin *window)
-{
-    if (window->type == WIN_CHAT) {
-        ProfChatWin *chatwin = (ProfChatWin*)window;
-        return chatwin->history_shown;
-    } else {
-        return FALSE;
-    }
-}
-
-gboolean
-win_has_chat_resource(ProfWin *window)
-{
-    if (window->type == WIN_CHAT) {
-        ProfChatWin *chatwin = (ProfChatWin*)window;
-        return (chatwin->resource != NULL);
-    } else {
-        return FALSE;
-    }
-}
-
-gboolean
-win_has_modified_form(ProfWin *window)
-{
-    if (window->type == WIN_MUC_CONFIG) {
-        ProfMucConfWin *confwin = (ProfMucConfWin*)window;
-        return confwin->form->modified;
-    } else {
-        return FALSE;
-    }
-}
-
 int
 win_unread(ProfWin *window)
 {
diff --git a/src/ui/window.h b/src/ui/window.h
index ce74c973..0f04faae 100644
--- a/src/ui/window.h
+++ b/src/ui/window.h
@@ -177,8 +177,5 @@ void win_printline_nowrap(WINDOW *win, char *msg);
 
 int win_unread(ProfWin *window);
 gboolean win_has_active_subwin(ProfWin *window);
-gboolean win_has_modified_form(ProfWin *window);
-gboolean win_chat_history_shown(ProfWin *window);
-gboolean win_has_chat_resource(ProfWin *window);
 
 #endif