changeset 1966:88dafee4ee49

Hopefully fix previous commit
author Mikael Berthe <mikael@lilotux.net>
date Fri, 18 Mar 2011 19:08:16 +0100
parents ec737f5f1d6f
children f016c9c9d992
files mcabber/mcabber/hbuf.c
diffstat 1 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/mcabber/hbuf.c	Fri Mar 18 12:29:57 2011 +0100
+++ b/mcabber/mcabber/hbuf.c	Fri Mar 18 19:08:16 2011 +0100
@@ -297,7 +297,8 @@
 
   while (l_line) {
     hbuf_b_elt = (hbuf_block*)l_line->data;
-    if (hbuf_b_elt->flags & HBB_FLAG_PERSISTENT)
+    if (hbuf_b_elt->flags & HBB_FLAG_PERSISTENT &&
+        (hbuf_b_elt->flags & ~HBB_PREFIX_READMARK))
       return l_line;
     l_line = g_list_previous(l_line);
   }
@@ -325,7 +326,8 @@
   last_persist = hbuf_previous_persistent(hbuf);
   while (last_persist) {
     blk = (hbuf_block*)last_persist->data;
-    if ((blk->flags & HBB_FLAG_PERSISTENT) && blk->prefix.flags) {
+    if ((blk->flags & HBB_FLAG_PERSISTENT) &&
+        (blk->prefix.flags & ~HBB_PREFIX_READMARK)) {
       last_persist_prefixflags = blk->prefix.flags;
       break;
     }
@@ -362,7 +364,7 @@
         (*array_elt)->flags |= HBB_PREFIX_CONT;
         (*array_elt)->mucnicklen = 0; // The nick is in the first one
         // Remove readmark flag from the previous line
-        if (last_persist_prefixflags & HBB_PREFIX_READMARK)
+        if (prev_array_elt && last_persist_prefixflags & HBB_PREFIX_READMARK)
           prev_array_elt->flags &= ~HBB_PREFIX_READMARK;
       }
 
@@ -485,10 +487,11 @@
     line.mucnicklen = blk->prefix.mucnicklen;
     line.text       = g_strndup(blk->ptr, maxlen);
 
-    if ((blk->flags & HBB_FLAG_PERSISTENT) && blk->prefix.flags) {
+    if ((blk->flags & HBB_FLAG_PERSISTENT) &&
+        (blk->prefix.flags & ~HBB_PREFIX_READMARK)) {
       last_persist_prefixflags = blk->prefix.flags;
     } else {
-      // Propagate highlighting flags
+      // Propagate necessary highlighting flags
       line.flags |= last_persist_prefixflags &
                     (HBB_PREFIX_HLIGHT_OUT | HBB_PREFIX_HLIGHT |
                      HBB_PREFIX_INFO | HBB_PREFIX_IN);