From 9924300c05ac923c02b353528f25d201efd0bb5e Mon Sep 17 00:00:00 2001 From: TingPing Date: Sat, 9 Mar 2013 17:09:38 -0500 Subject: [PATCH] Add irc_notice_pos setting --- src/common/cfgfiles.c | 2 +- src/common/hexchat.h | 2 +- src/common/inbound.c | 42 +++++++++++++++++++++++------------------- src/fe-gtk/setup.c | 12 ++++++++++-- 4 files changed, 35 insertions(+), 23 deletions(-) diff --git a/src/common/cfgfiles.c b/src/common/cfgfiles.c index 9aac5a4f..5ea6d42c 100644 --- a/src/common/cfgfiles.c +++ b/src/common/cfgfiles.c @@ -450,7 +450,6 @@ const struct prefs vars[] = {"gui_tab_icons", P_OFFINT (hex_gui_tab_icons), TYPE_BOOL}, {"gui_tab_layout", P_OFFINT (hex_gui_tab_layout), TYPE_INT}, {"gui_tab_newtofront", P_OFFINT (hex_gui_tab_newtofront), TYPE_INT}, - {"gui_tab_notices", P_OFFINT (hex_gui_tab_notices), TYPE_BOOL}, {"gui_tab_pos", P_OFFINT (hex_gui_tab_pos), TYPE_INT}, {"gui_tab_server", P_OFFINT (hex_gui_tab_server), TYPE_BOOL}, {"gui_tab_small", P_OFFINT (hex_gui_tab_small), TYPE_INT}, @@ -523,6 +522,7 @@ const struct prefs vars[] = {"irc_nick3", P_OFFSET (hex_irc_nick3), TYPE_STR}, {"irc_nick_hilight", P_OFFSET (hex_irc_nick_hilight), TYPE_STR}, {"irc_no_hilight", P_OFFSET (hex_irc_no_hilight), TYPE_STR}, + {"irc_notice_pos", P_OFFINT (hex_irc_notice_pos), TYPE_INT}, {"irc_part_reason", P_OFFSET (hex_irc_part_reason), TYPE_STR}, {"irc_quit_reason", P_OFFSET (hex_irc_quit_reason), TYPE_STR}, {"irc_raw_modes", P_OFFINT (hex_irc_raw_modes), TYPE_BOOL}, diff --git a/src/common/hexchat.h b/src/common/hexchat.h index dfd2fd5a..fcc77251 100644 --- a/src/common/hexchat.h +++ b/src/common/hexchat.h @@ -146,7 +146,6 @@ struct hexchatprefs unsigned int hex_gui_tab_dialogs; unsigned int hex_gui_tab_dots; unsigned int hex_gui_tab_icons; - unsigned int hex_gui_tab_notices; unsigned int hex_gui_tab_server; unsigned int hex_gui_tab_sort; unsigned int hex_gui_tab_utils; @@ -276,6 +275,7 @@ struct hexchatprefs int hex_input_balloon_time; int hex_irc_ban_type; int hex_irc_join_delay; + int hex_irc_notice_pos; int hex_net_ping_timeout; int hex_net_proxy_port; int hex_net_proxy_type; /* 0=disabled, 1=wingate 2=socks4, 3=socks5, 4=http */ diff --git a/src/common/inbound.c b/src/common/inbound.c index 54e5bff0..c04d0187 100644 --- a/src/common/inbound.c +++ b/src/common/inbound.c @@ -867,7 +867,27 @@ inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id) if (!sess) { ptr = 0; - if (prefs.hex_gui_tab_notices) + if (prefs.hex_irc_notice_pos == 0) + { + /* paranoia check */ + if (msg[0] == '[' && (!serv->have_idmsg || id)) + { + /* guess where chanserv meant to post this -sigh- */ + if (!g_ascii_strcasecmp (nick, "ChanServ") && !find_dialog (serv, nick)) + { + char *dest = strdup (msg + 1); + char *end = strchr (dest, ']'); + if (end) + { + *end = 0; + sess = find_channel (serv, dest); + } + free (dest); + } + } + if (!sess) + sess = find_session_from_nick (nick, serv); + } else if (prefs.hex_irc_notice_pos == 1) { int stype = server_notice ? SESS_SNOTICES : SESS_NOTICES; sess = find_session_from_type (stype, serv); @@ -888,25 +908,9 @@ inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id) msg += 14; } else { - /* paranoia check */ - if (msg[0] == '[' && (!serv->have_idmsg || id)) - { - /* guess where chanserv meant to post this -sigh- */ - if (!g_ascii_strcasecmp (nick, "ChanServ") && !find_dialog (serv, nick)) - { - char *dest = strdup (msg + 1); - char *end = strchr (dest, ']'); - if (end) - { - *end = 0; - sess = find_channel (serv, dest); - } - free (dest); - } - } - if (!sess) - sess = find_session_from_nick (nick, serv); + sess = serv->front_session; } + if (!sess) { if (server_notice) diff --git a/src/fe-gtk/setup.c b/src/fe-gtk/setup.c index f02bc3d7..c8d3a9c1 100644 --- a/src/fe-gtk/setup.c +++ b/src/fe-gtk/setup.c @@ -321,6 +321,14 @@ static const char *const focusnewtabsmenu[] = NULL }; +static const char *const noticeposmenu[] = +{ + N_("Automatic"), + N_("In an extra tab"), + N_("In the front tab"), + NULL +}; + static const char *const swtype[] = { N_("Tabs"), /* 0 tabs */ @@ -334,13 +342,13 @@ static const setting tabs_settings[] = /*{ST_HEADER, N_("Channel Switcher"),0,0,0},*/ {ST_RADIO, N_("Switcher type:"),P_OFFINTNL(hex_gui_tab_layout), 0, swtype, 0}, {ST_TOGGLE, N_("Open an extra tab for server messages"), P_OFFINTNL(hex_gui_tab_server), 0, 0, 0}, - {ST_TOGGLE, N_("Open an extra tab for server notices"), P_OFFINTNL(hex_gui_tab_notices), 0, 0, 0}, {ST_TOGGLE, N_("Open a new tab when you receive a private message"), P_OFFINTNL(hex_gui_autoopen_dialog), 0, 0, 0}, {ST_TOGGLE, N_("Sort tabs in alphabetical order"), P_OFFINTNL(hex_gui_tab_sort), 0, 0, 0}, {ST_TOGGLE, N_("Show icons in the channel tree"), P_OFFINTNL(hex_gui_tab_icons), 0, 0, 0}, {ST_TOGGLE, N_("Show dotted lines in the channel tree"), P_OFFINTNL(hex_gui_tab_dots), 0, 0, 0}, {ST_TOGGLE, N_("Smaller text"), P_OFFINTNL(hex_gui_tab_small), 0, 0, 0}, {ST_MENU, N_("Focus new tabs:"), P_OFFINTNL(hex_gui_tab_newtofront), 0, focusnewtabsmenu, 0}, + {ST_MENU, N_("Notice placement:"), P_OFFINTNL(hex_irc_notice_pos), 0, noticeposmenu, 0}, {ST_MENU, N_("Show channel switcher at:"), P_OFFINTNL(hex_gui_tab_pos), 0, cspos, 1}, {ST_NUMBER, N_("Shorten tab labels to:"), P_OFFINTNL(hex_gui_tab_trunc), 0, (const char **)N_("letters."), 99}, @@ -2220,7 +2228,7 @@ setup_apply (struct hexchatprefs *pr) if (DIFF (hex_gui_compact)) noapply = TRUE; if (DIFF (hex_gui_input_icon)) - noapply = TRUE; + noapply = TRUE; if (DIFF (hex_gui_input_nick)) noapply = TRUE; if (DIFF (hex_gui_lagometer))