Changeset 92c8d41


Ignore:
Timestamp:
2010-06-26T21:26:41Z (14 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
e907683
Parents:
41d415b
Message:

Remember in which channel the user talked to someone and show responses in
that same channel.

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • irc.h

    r41d415b r92c8d41  
    6666        struct irc_user *user;
    6767       
    68         char *last_root_cmd;
     68        char *last_root_cmd; /* Either the nickname from which the last root
     69                                msg came, or the last channel root was talked
     70                                to. */
    6971
    7072        char *password; /* HACK: Used to save the user's password, but before
     
    8082        struct irc_channel *default_channel;
    8183        GHashTable *nick_user_hash;
    82         GHashTable *watches;
     84        GHashTable *watches; /* See irc_cmd_watch() */
    8385
    8486        gint r_watch_source_id;
     
    9193typedef enum
    9294{
    93         IRC_USER_PRIVATE = 1,
     95        /* Replaced with iu->last_channel IRC_USER_PRIVATE = 1, */
    9496        IRC_USER_AWAY = 2,
    9597} irc_user_flags_t;
     
    108110       
    109111        irc_user_flags_t flags;
     112        struct irc_channel *last_channel;
    110113       
    111114        GString *pastebuf; /* Paste buffer (combine lines into a multiline msg). */
  • irc_channel.c

    r41d415b r92c8d41  
    375375                if( iu && iu->f->privmsg )
    376376                {
    377                         iu->flags &= ~IRC_USER_PRIVATE;
     377                        iu->last_channel = ic;
    378378                        iu->f->privmsg( iu, s );
    379379                }
  • irc_commands.c

    r41d415b r92c8d41  
    306306                else if( iu->f->privmsg )
    307307                {
    308                         iu->flags |= IRC_USER_PRIVATE;
     308                        iu->last_channel = NULL;
    309309                        iu->f->privmsg( iu, cmd[2] );
    310310                }
  • irc_im.c

    r41d415b r92c8d41  
    3434{
    3535        irc_user_t *iu;
     36        irc_t *irc = (irc_t*) bee->ui_data;
    3637        char nick[MAX_NICK_LENGTH+1], *s;
    3738       
     
    3940        strcpy( nick, nick_get( bu->ic->acc, bu->handle ) );
    4041       
    41         bu->ui_data = iu = irc_user_new( (irc_t*) bee->ui_data, nick );
     42        bu->ui_data = iu = irc_user_new( irc, nick );
    4243        iu->bu = bu;
    4344       
     
    6364        }
    6465       
    65         if( set_getbool( &bee->set, "private" ) )
    66                 iu->flags |= IRC_USER_PRIVATE;
    67        
    6866        if( bu->flags & BEE_USER_LOCAL )
    6967        {
     
    7169               
    7270                if( strcmp( s, "add_private" ) == 0 )
    73                         iu->flags |= IRC_USER_PRIVATE;
     71                        iu->last_channel = NULL;
    7472                else if( strcmp( s, "add_channel" ) == 0 )
    75                         iu->flags &= ~IRC_USER_PRIVATE;
     73                        iu->last_channel = irc->default_channel;
    7674        }
    7775       
    7876        iu->f = &irc_user_im_funcs;
    79         //iu->last_typing_notice = 0;
    8077       
    8178        return TRUE;
     
    180177{
    181178        irc_t *irc = bee->ui_data;
    182         irc_channel_t *ic = irc->default_channel;
    183179        irc_user_t *iu = (irc_user_t *) bu->ui_data;
    184180        char *dst, *prefix = NULL;
     
    188184                ts = irc_format_timestamp( irc, sent_at );
    189185       
    190         if( iu->flags & IRC_USER_PRIVATE )
     186        if( iu->last_channel )
     187        {
     188                dst = iu->last_channel->name;
     189                prefix = g_strdup_printf( "%s%s%s", irc->user->nick, set_getstr( &bee->set, "to_char" ), ts ? : "" );
     190        }
     191        else
    191192        {
    192193                dst = irc->user->nick;
    193194                prefix = ts;
    194195                ts = NULL;
    195         }
    196         else
    197         {
    198                 dst = ic->name;
    199                 prefix = g_strdup_printf( "%s%s%s", irc->user->nick, set_getstr( &bee->set, "to_char" ), ts ? : "" );
    200196        }
    201197       
  • irc_user.c

    r41d415b r92c8d41  
    3434        iu->user = iu->host = iu->fullname = iu->nick;
    3535       
    36         iu->flags = set_getbool( &irc->b->set, "private" ) ? IRC_USER_PRIVATE : 0;
     36        if( set_getbool( &irc->b->set, "private" ) )
     37                iu->last_channel = NULL;
     38        else
     39                iu->last_channel = irc->default_channel;
    3740       
    3841        iu->key = g_strdup( nick );
Note: See TracChangeset for help on using the changeset viewer.