[gtksourceview] Use a different draw for narrowed non breaking spaces. Fixes bug #626126.



commit 58a0db3b1592f7a945953b42c12bb2b868d118a8
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Mon Nov 15 10:36:01 2010 +0100

    Use a different draw for narrowed non breaking spaces. Fixes bug #626126.

 gtksourceview/gtksourceview.c |   27 ++++++++++++++++++++-------
 1 files changed, 20 insertions(+), 7 deletions(-)
---
diff --git a/gtksourceview/gtksourceview.c b/gtksourceview/gtksourceview.c
index 993174e..d1c8545 100644
--- a/gtksourceview/gtksourceview.c
+++ b/gtksourceview/gtksourceview.c
@@ -2034,17 +2034,18 @@ static void
 draw_nbsp_at_iter (cairo_t      *cr,
 		   GtkTextView  *view,
 		   GtkTextIter  *iter,
-		   GdkRectangle  rect)
+		   GdkRectangle  rect,
+		   gboolean      narrowed)
 {
 	gint x, y;
 	gdouble w, h;
 
 	gtk_text_view_buffer_to_window_coords (view,
-					       GTK_TEXT_WINDOW_TEXT,
-					       rect.x,
-					       rect.y + rect.height / 2,
-					       &x,
-					       &y);
+	                                       GTK_TEXT_WINDOW_TEXT,
+	                                       rect.x,
+	                                       rect.y + rect.height / 2,
+	                                       &x,
+	                                       &y);
 
 	w = rect.width;
 	h = rect.height;
@@ -2054,6 +2055,16 @@ draw_nbsp_at_iter (cairo_t      *cr,
 	cairo_rel_line_to (cr, w * 4 / 6, 0);
 	cairo_rel_line_to (cr, -w * 2 / 6, +h * 1 / 4);
 	cairo_rel_line_to (cr, -w * 2 / 6, -h * 1 / 4);
+
+	if (narrowed)
+	{
+		cairo_fill (cr);
+	}
+	else
+	{
+		cairo_stroke (cr);
+	}
+
 	cairo_restore (cr);
 }
 
@@ -2075,7 +2086,9 @@ draw_spaces_at_iter (cairo_t       *cr,
 	else if (view->priv->draw_spaces & GTK_SOURCE_DRAW_SPACES_NBSP &&
 		 g_unichar_break_type (c) == G_UNICODE_BREAK_NON_BREAKING_GLUE)
 	{
-		draw_nbsp_at_iter (cr, GTK_TEXT_VIEW (view), iter, rect);
+		/* We also need to check if we want to draw a narrowed space */
+		draw_nbsp_at_iter (cr, GTK_TEXT_VIEW (view), iter, rect,
+		                   c == 0x202F);
 	}
 	else if (view->priv->draw_spaces & GTK_SOURCE_DRAW_SPACES_SPACE &&
 	         g_unichar_type (c) == G_UNICODE_SPACE_SEPARATOR)



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