* src/maemo/modest-address-book.c:
authorJose Dapena Paz <jdapena@igalia.com>
Tue, 15 Jan 2008 13:40:13 +0000 (13:40 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Tue, 15 Jan 2008 13:40:13 +0000 (13:40 +0000)
* Now we show "checking names" banner only when it takes more
  than 500 ms. This way, if the operation is immediate, we
  don't get a blank banner shown for a moment. Fixes NB#79290.

pmo-trunk-r4043

src/maemo/modest-address-book.c

index e8e6c63..f97f647 100644 (file)
@@ -625,6 +625,18 @@ add_to_address_book (const gchar* address)
        return TRUE;
 }
 
+static gboolean
+show_check_names_banner (gpointer userdata)
+{
+       GtkWidget **banner = (GtkWidget **) userdata;
+
+       gdk_threads_enter ();
+       *banner = modest_platform_animation_banner (NULL, NULL, _("mail_ib_checking_names"));
+       gdk_threads_leave ();
+
+       return FALSE;
+}
+
 gboolean
 modest_address_book_check_names (ModestRecptEditor *recpt_editor, gboolean update_addressbook)
 {
@@ -636,11 +648,11 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor, gboolean updat
        gint offset_delta = 0;
        gint last_length;
        GtkTextIter start_iter, end_iter;
+       guint banner_timeout;
+       GtkWidget *banner = NULL;
 
        g_return_val_if_fail (MODEST_IS_RECPT_EDITOR (recpt_editor), FALSE);
 
-       modest_platform_information_banner (NULL, NULL, _("mail_ib_checking_names"));
-
        recipients = modest_recpt_editor_get_recipients (recpt_editor);
        last_length = g_utf8_strlen (recipients, -1);
        modest_text_utils_get_addresses_indexes (recipients, &start_indexes, &end_indexes);
@@ -654,6 +666,8 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor, gboolean updat
                }
        }
 
+       banner_timeout = g_timeout_add (500, show_check_names_banner, &banner);
+
        current_start = start_indexes;
        current_end = end_indexes;
        buffer = modest_recpt_editor_get_buffer (recpt_editor);
@@ -762,6 +776,14 @@ modest_address_book_check_names (ModestRecptEditor *recpt_editor, gboolean updat
        g_slist_free (start_indexes);
        g_slist_free (end_indexes);
 
+       g_source_remove (banner_timeout);
+       if (banner != NULL) {
+               gtk_widget_destroy (banner);
+               banner = NULL;
+       } else {
+               g_source_remove (banner_timeout);
+       }
+
        return result;
 
 }