[gnome-logs] Add support for displaying newline character



commit 477fb02abbc83e47f3db58491c69333e3ec153c1
Author: Pranav Ganorkar <pranavg189 gmail com>
Date:   Mon Mar 14 23:14:50 2016 +0530

    Add support for displaying newline character
    
    Replace newline characters with Unicode newline substitutor.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=762622

 src/gl-eventviewrow.c |   48 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 47 insertions(+), 1 deletions(-)
---
diff --git a/src/gl-eventviewrow.c b/src/gl-eventviewrow.c
index 5ff42b7..ca72b7c 100644
--- a/src/gl-eventviewrow.c
+++ b/src/gl-eventviewrow.c
@@ -215,12 +215,40 @@ gl_event_view_row_construct_category_label (GlEventViewRow *row,
     }
 }
 
+static gchar *
+gl_event_view_row_replace_newline (const gchar *message)
+{
+    GString *newmessage;
+    const gchar *newline_index;
+    const gchar *prevpos;
+
+    newmessage = g_string_sized_new (strlen (message));
+    prevpos = message;
+
+    newline_index = strchr (message, '\n');
+
+    while (newline_index != NULL)
+    {
+        g_string_append_len (newmessage, prevpos, newline_index - prevpos);
+        g_string_append_unichar (newmessage, 0x2424);
+
+        prevpos = newline_index + 1;
+        newline_index = strchr (prevpos, '\n');
+    }
+
+    g_string_append (newmessage, prevpos);
+
+    return g_string_free (newmessage, FALSE);
+}
+
 static void
 gl_event_view_row_constructed (GObject *object)
 {
     GtkStyleContext *context;
     GtkWidget *grid;
     gchar *time;
+    const gchar *message;
+    gchar *newline_index;
     gboolean rtl;
     GlEventViewRowCategory category;
     GlUtilClockFormat tmp_clock_format;
@@ -259,7 +287,25 @@ gl_event_view_row_constructed (GObject *object)
                          rtl ? 2 : 0, 0, 1, 1);
     }
 
-    priv->message_label = gtk_label_new (gl_journal_entry_get_message (entry));
+    message = gl_journal_entry_get_message (entry);
+
+    newline_index = strchr (message, '\n');
+
+    if (newline_index)
+    {
+        gchar *message_label;
+
+        message_label = gl_event_view_row_replace_newline (message);
+
+        priv->message_label = gtk_label_new (message_label);
+
+        g_free (message_label);
+    }
+    else
+    {
+        priv->message_label = gtk_label_new (message);
+    }
+
     gtk_widget_set_direction (priv->message_label, GTK_TEXT_DIR_LTR);
     context = gtk_widget_get_style_context (GTK_WIDGET (priv->message_label));
     gtk_style_context_add_class (context, "event-monospace");


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