[balsa/gtk3] Make sure parent message is checked



commit 1472a265f4d198e4a1658b8b13f0684d18ccb21c
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sat Feb 23 08:42:43 2013 -0500

    Make sure parent message is checked
    
        * libbalsa/mailbox.c (lbm_msgno_changed),
        (libbalsa_mailbox_msgno_changed): make sure parent message is
        checked.

 ChangeLog          |    6 ++++++
 libbalsa/mailbox.c |   18 +++++++-----------
 2 files changed, 13 insertions(+), 11 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index a033d28..e9f446c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2013-02-23  Peter Bloomfield
 
+       * libbalsa/mailbox.c (lbm_msgno_changed),
+       (libbalsa_mailbox_msgno_changed): make sure parent message is
+       checked.
+
+2013-02-23  Peter Bloomfield
+
        * libbalsa/mailbox.c (lbm_msgno_filt_check),
        (libbalsa_mailbox_msgno_filt_check): use an idle callback to
        check whether to filter a message in or out.
diff --git a/libbalsa/mailbox.c b/libbalsa/mailbox.c
index 724198a..3938bd0 100644
--- a/libbalsa/mailbox.c
+++ b/libbalsa/mailbox.c
@@ -1286,13 +1286,17 @@ lbm_msgno_changed(LibBalsaMailbox * mailbox, guint seqno,
 
         g_array_append_val(mailbox->msgnos_changed, seqno);
         pthread_mutex_unlock(&msgnos_changed_lock);
+
+        /* Not calling lbm_msgno_row_changed, so we must make sure
+         * iter->user_data is set: */
+        if (!iter->user_data)
+            iter->user_data =
+                g_node_find(mailbox->msg_tree, G_PRE_ORDER, G_TRAVERSE_ALL,
+                            GUINT_TO_POINTER(seqno));
         return;
     }
 #endif
 
-    if (!mailbox->msg_tree)
-        return;
-
     lbm_msgno_row_changed(mailbox, seqno, iter);
 }
 
@@ -1300,13 +1304,8 @@ void
 libbalsa_mailbox_msgno_changed(LibBalsaMailbox * mailbox, guint seqno)
 {
     GtkTreeIter iter;
-    gboolean is_main_thread = !libbalsa_am_i_subthread();
 
-    if (is_main_thread)
-        gdk_threads_enter();
     if (!mailbox->msg_tree) {
-        if (is_main_thread)
-            gdk_threads_leave();
         return;
     }
 
@@ -1321,9 +1320,6 @@ libbalsa_mailbox_msgno_changed(LibBalsaMailbox * mailbox, guint seqno)
         if (parent && (seqno = GPOINTER_TO_UINT(parent->data)) > 0)
             lbm_msgno_changed(mailbox, seqno, &iter);
     }
-
-    if (is_main_thread)
-        gdk_threads_leave();
 }
 
 void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]