replace deprecated gtk_window_set_policy
[claws.git] / src / addr_compl.c
index ff14740eb060c8c9ce010a4a0a88f007123f1b80..b29c87849538b9bab69b17175bb6e26882ac21ec 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;
 }
@@ -701,7 +708,7 @@ static void addrcompl_resize_window( CompletionWindow *cw ) {
 
        /* Adjust window height to available screen space */
        if( ( y + r.height ) > gdk_screen_height() ) {
-               gtk_window_set_policy( GTK_WINDOW( cw->window ), TRUE, FALSE, FALSE );
+               gtk_window_set_resizable(GTK_WINDOW(cw->window), FALSE);
                gtk_widget_set_size_request( cw->window, width, gdk_screen_height() - y );
        } else
                gtk_widget_set_size_request(cw->window, width, r.height);
@@ -937,7 +944,7 @@ void address_completion_register_entry(GtkEntry *entry)
 
        /* add keypress event */
        g_signal_connect_closure
-               (GTK_OBJECT(entry), "key_press_event",
+               (G_OBJECT(entry), "key_press_event",
                 g_cclosure_new(G_CALLBACK(address_completion_entry_key_pressed),
                                COMPLETION_UNIQUE_DATA,
                                NULL),
@@ -957,7 +964,7 @@ void address_completion_unregister_entry(GtkEntry *entry)
 
        entry_obj = g_object_get_data(G_OBJECT(entry), ENTRY_DATA_TAB_HOOK);
        g_return_if_fail(entry_obj);
-       g_return_if_fail(entry_obj == GTK_OBJECT(entry));
+       g_return_if_fail(entry_obj == G_OBJECT(entry));
 
        /* has the hooked property? */
        g_object_set_data(G_OBJECT(entry), ENTRY_DATA_TAB_HOOK, NULL);
@@ -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 );