mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-25 19:26:21 +00:00
Set correct window type on private messages
This commit is contained in:
@@ -516,6 +516,7 @@ _error_handler(xmpp_stanza_t * const stanza)
|
|||||||
static int
|
static int
|
||||||
_chat_message_handler(xmpp_stanza_t * const stanza)
|
_chat_message_handler(xmpp_stanza_t * const stanza)
|
||||||
{
|
{
|
||||||
|
gboolean priv = FALSE;
|
||||||
gchar *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
|
gchar *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
|
||||||
|
|
||||||
char from_cpy[strlen(from) + 1];
|
char from_cpy[strlen(from) + 1];
|
||||||
@@ -526,9 +527,11 @@ _chat_message_handler(xmpp_stanza_t * const stanza)
|
|||||||
// private message from chat room use full jid (room/nick)
|
// private message from chat room use full jid (room/nick)
|
||||||
if (room_is_active(short_from)) {
|
if (room_is_active(short_from)) {
|
||||||
jid = strdup(from);
|
jid = strdup(from);
|
||||||
|
priv = TRUE;
|
||||||
// standard chat message, use jid without resource
|
// standard chat message, use jid without resource
|
||||||
} else {
|
} else {
|
||||||
jid = strdup(short_from);
|
jid = strdup(short_from);
|
||||||
|
priv = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// determine chatstate support of recipient
|
// determine chatstate support of recipient
|
||||||
@@ -574,13 +577,13 @@ _chat_message_handler(xmpp_stanza_t * const stanza)
|
|||||||
|
|
||||||
if (g_time_val_from_iso8601(utc_stamp, &tv_stamp)) {
|
if (g_time_val_from_iso8601(utc_stamp, &tv_stamp)) {
|
||||||
if (message != NULL) {
|
if (message != NULL) {
|
||||||
prof_handle_delayed_message(jid, message, tv_stamp);
|
prof_handle_delayed_message(jid, message, tv_stamp, priv);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log_error("Couldn't parse datetime string of historic message: %s", utc_stamp);
|
log_error("Couldn't parse datetime string of historic message: %s", utc_stamp);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
prof_handle_incoming_message(jid, message);
|
prof_handle_incoming_message(jid, message, priv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -102,9 +102,9 @@ prof_handle_typing(char *from)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
prof_handle_incoming_message(char *from, char *message)
|
prof_handle_incoming_message(char *from, char *message, gboolean priv)
|
||||||
{
|
{
|
||||||
win_show_incomming_msg(from, message, NULL);
|
win_show_incomming_msg(from, message, NULL, priv);
|
||||||
win_page_off();
|
win_page_off();
|
||||||
|
|
||||||
if (prefs_get_chlog()) {
|
if (prefs_get_chlog()) {
|
||||||
@@ -118,9 +118,10 @@ prof_handle_incoming_message(char *from, char *message)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
prof_handle_delayed_message(char *from, char *message, GTimeVal tv_stamp)
|
prof_handle_delayed_message(char *from, char *message, GTimeVal tv_stamp,
|
||||||
|
gboolean priv)
|
||||||
{
|
{
|
||||||
win_show_incomming_msg(from, message, &tv_stamp);
|
win_show_incomming_msg(from, message, &tv_stamp, priv);
|
||||||
win_page_off();
|
win_page_off();
|
||||||
|
|
||||||
if (prefs_get_chlog()) {
|
if (prefs_get_chlog()) {
|
||||||
|
|||||||
@@ -33,8 +33,9 @@ void prof_handle_failed_login(void);
|
|||||||
void prof_handle_typing(char *from);
|
void prof_handle_typing(char *from);
|
||||||
void prof_handle_contact_online(char *contact, char *show, char *status);
|
void prof_handle_contact_online(char *contact, char *show, char *status);
|
||||||
void prof_handle_contact_offline(char *contact, char *show, char *status);
|
void prof_handle_contact_offline(char *contact, char *show, char *status);
|
||||||
void prof_handle_incoming_message(char *from, char *message);
|
void prof_handle_incoming_message(char *from, char *message, gboolean priv);
|
||||||
void prof_handle_delayed_message(char *from, char *message, GTimeVal tv_stamp);
|
void prof_handle_delayed_message(char *from, char *message, GTimeVal tv_stamp,
|
||||||
|
gboolean priv);
|
||||||
void prof_handle_error_message(const char *from, const char *err_msg);
|
void prof_handle_error_message(const char *from, const char *err_msg);
|
||||||
void prof_handle_subscription(const char *from, jabber_subscr_t type);
|
void prof_handle_subscription(const char *from, jabber_subscr_t type);
|
||||||
void prof_handle_roster(GSList *roster);
|
void prof_handle_roster(GSList *roster);
|
||||||
|
|||||||
2
src/ui.h
2
src/ui.h
@@ -98,7 +98,7 @@ char *win_get_recipient(void);
|
|||||||
void win_show_typing(const char * const from);
|
void win_show_typing(const char * const from);
|
||||||
void win_show_gone(const char * const from);
|
void win_show_gone(const char * const from);
|
||||||
void win_show_incomming_msg(const char * const from, const char * const message,
|
void win_show_incomming_msg(const char * const from, const char * const message,
|
||||||
GTimeVal *tv_stamp);
|
GTimeVal *tv_stamp, gboolean priv);
|
||||||
void win_show_error_msg(const char * const from, const char *err_msg);
|
void win_show_error_msg(const char * const from, const char *err_msg);
|
||||||
void win_show_system_msg(const char * const from, const char *message);
|
void win_show_system_msg(const char * const from, const char *message);
|
||||||
void win_show_outgoing_msg(const char * const from, const char * const to,
|
void win_show_outgoing_msg(const char * const from, const char * const to,
|
||||||
|
|||||||
@@ -298,11 +298,18 @@ win_no_activity(void)
|
|||||||
|
|
||||||
void
|
void
|
||||||
win_show_incomming_msg(const char * const from, const char * const message,
|
win_show_incomming_msg(const char * const from, const char * const message,
|
||||||
GTimeVal *tv_stamp)
|
GTimeVal *tv_stamp, gboolean priv)
|
||||||
{
|
{
|
||||||
|
win_type_t win_type;
|
||||||
|
if (priv) {
|
||||||
|
win_type = WIN_PRIVATE;
|
||||||
|
} else {
|
||||||
|
win_type = WIN_CHAT;
|
||||||
|
}
|
||||||
|
|
||||||
int win_index = _find_prof_win_index(from);
|
int win_index = _find_prof_win_index(from);
|
||||||
if (win_index == NUM_WINS)
|
if (win_index == NUM_WINS)
|
||||||
win_index = _new_prof_win(from, WIN_CHAT);
|
win_index = _new_prof_win(from, win_type);
|
||||||
|
|
||||||
WINDOW *win = _wins[win_index].win;
|
WINDOW *win = _wins[win_index].win;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user