]> git.0d.be Git - empathy.git/commitdiff
theme-adium: keep count of the pages loading instead of using a boolean
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 24 Mar 2011 14:00:37 +0000 (15:00 +0100)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Mon, 28 Mar 2011 06:34:42 +0000 (08:34 +0200)
Each time theme_adium_clear() is called, WebKit has to reload the page. If we
do multi calls to clear() in a short interval, we used to think the page was
loaded while it was the *old* one which was actually loaded. (#645670)

libempathy-gtk/empathy-theme-adium.c

index 6844f9ac232d079fd8e15a14eebff1907a2e52ee..e7e4cbd375c58bd30be34a313909ad20f4e24744 100644 (file)
@@ -58,7 +58,7 @@ typedef struct {
        EmpathyContact       *last_contact;
        time_t                last_timestamp;
        gboolean              last_is_backlog;
-       gboolean              page_loaded;
+       guint                 pages_loading;
        GList                *message_queue;
        GtkWidget            *inspector_window;
        GSettings            *gsettings_chat;
@@ -454,7 +454,7 @@ theme_adium_append_message (EmpathyChatView *view,
        gboolean               is_backlog;
        gboolean               consecutive;
 
-       if (!priv->page_loaded) {
+       if (priv->pages_loading != 0) {
                priv->message_queue = g_list_prepend (priv->message_queue,
                                                      g_object_ref (msg));
                return;
@@ -659,7 +659,7 @@ theme_adium_clear (EmpathyChatView *view)
        EmpathyThemeAdiumPriv *priv = GET_PRIV (view);
        gchar *basedir_uri;
 
-       priv->page_loaded = FALSE;
+       priv->pages_loading++;
        basedir_uri = g_strconcat ("file://", priv->data->basedir, NULL);
        webkit_web_view_load_html_string (WEBKIT_WEB_VIEW (view),
                                          priv->data->template_html,
@@ -861,7 +861,10 @@ theme_adium_load_finished_cb (WebKitWebView  *view,
        EmpathyChatView       *chat_view = EMPATHY_CHAT_VIEW (view);
 
        DEBUG ("Page loaded");
-       priv->page_loaded = TRUE;
+       priv->pages_loading--;
+
+       if (priv->pages_loading != 0)
+               return;
 
        /* Display queued messages */
        priv->message_queue = g_list_reverse (priv->message_queue);
@@ -1066,6 +1069,8 @@ theme_adium_constructed (GObject *object)
                          object);
 
        /* Load template */
+       priv->pages_loading = 1;
+
        basedir_uri = g_strconcat ("file://", priv->data->basedir, NULL);
        webkit_web_view_load_html_string (WEBKIT_WEB_VIEW (object),
                                          priv->data->template_html,