sync with 0.9.10claws57 HEAD
[claws.git] / src / addr_compl.c
index ff14740eb060c8c9ce010a4a0a88f007123f1b80..4a41bfadb2d14f8db9c76b2344e774fd3399c914 100644 (file)
@@ -179,7 +179,8 @@ static void add_address1(const char *str, address_entry *ae)
  * \return <code>0</code> if entry appended successfully, or <code>-1</code>
  *         if failure.
  */
-static gint add_address(const gchar *name, const gchar *address, const gchar *alias)
+static gint add_address(const gchar *name, const gchar *address, 
+                       const gchar *nick, const gchar *alias)
 {
        address_entry    *ae;
 
@@ -196,7 +197,13 @@ static gint add_address(const gchar *name, const gchar *address, const gchar *al
 
        add_address1(name, ae);
        add_address1(address, ae);
-       add_address1(alias, ae);
+       
+       if (nick != NULL)
+               add_address1(nick, ae);
+       
+       if ( alias != NULL ) {
+               add_address1(alias, ae);
+       }
 
        return 0;
 }
@@ -1073,8 +1080,21 @@ static gboolean address_completion_complete_address_in_entry(GtkEntry *entry,
                g_free( new );
        }
 
+       /* Select the address if there is only one match */
+       if (ncount == 2) {
+               /* Display selected address in entry field */           
+               gchar *addr = get_complete_address(1);
+
+               if (addr) {
+                       replace_address_in_edit(entry, addr, cursor_pos);
+                       g_free(addr);
+               }
+
+               /* Discard the window */
+               clear_completion_cache();
+       }
        /* Make sure that drop-down appears uniform! */
-       if( ncount == 0 ) {
+       else if( ncount == 0 ) {
                addrcompl_add_queue( g_strdup( searchTerm ) );
        }
        g_free( searchTerm );