gtksourceview r2093 - in trunk: . gtksourceview



Author: icq
Date: Wed Dec  3 13:48:13 2008
New Revision: 2093
URL: http://svn.gnome.org/viewvc/gtksourceview?rev=2093&view=rev

Log:
2008-12-03  Ignacio Casal Quinteiro  <nacho resa gmail com>

        * gtksourceview/gtksourceview.c:
        * gtksourceview/gtksourceview.h:
        Added non-breaking spaces drawing.



Modified:
   trunk/ChangeLog
   trunk/gtksourceview/gtksourceview.c
   trunk/gtksourceview/gtksourceview.h

Modified: trunk/gtksourceview/gtksourceview.c
==============================================================================
--- trunk/gtksourceview/gtksourceview.c	(original)
+++ trunk/gtksourceview/gtksourceview.c	Wed Dec  3 13:48:13 2008
@@ -1777,6 +1777,33 @@
 }
 
 static void
+draw_nbsp_at_iter (cairo_t      *cr,
+		   GtkTextView  *view,
+		   GtkTextIter  *iter,
+		   GdkRectangle  rect)
+{
+	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);
+
+	w = rect.width;
+	h = rect.height;
+
+	cairo_save (cr);
+	cairo_move_to (cr, x + w * 1 / 6, y);
+	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);
+	cairo_restore (cr);
+}
+
+static void
 draw_spaces_at_iter (cairo_t       *cr,
 		     GtkSourceView *view,
 		     GtkTextIter   *iter,
@@ -1791,8 +1818,14 @@
 	{
 		draw_tab_at_iter (cr, GTK_TEXT_VIEW (view), iter, rect);
 	}
+	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);
+	}
 	else if (view->priv->draw_spaces & GTK_SOURCE_DRAW_SPACES_SPACE &&
-	         g_unichar_type (c) == G_UNICODE_SPACE_SEPARATOR)
+	         g_unichar_type (c) == G_UNICODE_SPACE_SEPARATOR &&
+	         g_unichar_break_type (c) != G_UNICODE_BREAK_NON_BREAKING_GLUE)
 	{
 		draw_space_at_iter (cr, GTK_TEXT_VIEW (view), iter, rect);
 	}

Modified: trunk/gtksourceview/gtksourceview.h
==============================================================================
--- trunk/gtksourceview/gtksourceview.h	(original)
+++ trunk/gtksourceview/gtksourceview.h	Wed Dec  3 13:48:13 2008
@@ -90,6 +90,7 @@
  * @GTK_SOURCE_DRAW_SPACES_SPACE: whether the space character should be drawn.
  * @GTK_SOURCE_DRAW_SPACES_TAB: whether the tab character should be drawn.
  * @GTK_SOURCE_DRAW_SPACES_NEWLINE: whether the line breaks should be drawn.
+ * @GTK_SOURCE_DRAW_SPACES_NBSP: whether the non-breaking whitespaces should be drawn.
  * @GTK_SOURCE_DRAW_SPACES_ALL: wheter all kind of spaces should be drawn.
  *
  * GtkSourceDrawSpacesFlags determine what kind of spaces whould be drawn.
@@ -101,9 +102,11 @@
 	GTK_SOURCE_DRAW_SPACES_SPACE      = 1 << 0,
 	GTK_SOURCE_DRAW_SPACES_TAB        = 1 << 1,
 	GTK_SOURCE_DRAW_SPACES_NEWLINE    = 1 << 2,
+	GTK_SOURCE_DRAW_SPACES_NBSP       = 1 << 3,
 	GTK_SOURCE_DRAW_SPACES_ALL        = (GTK_SOURCE_DRAW_SPACES_SPACE   | \
 	                                     GTK_SOURCE_DRAW_SPACES_TAB     | \
-	                                     GTK_SOURCE_DRAW_SPACES_NEWLINE)
+	                                     GTK_SOURCE_DRAW_SPACES_NEWLINE | \
+	                                     GTK_SOURCE_DRAW_SPACES_NBSP)
 } GtkSourceDrawSpacesFlags;
 
 



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