[Xfce4-commits] <mousepad:matt/gtksourceview> Remove old tab size code and use GtkSourceView's tab-width.

Matthew Brush noreply at xfce.org
Thu Oct 6 23:18:10 CEST 2011


Updating branch refs/heads/matt/gtksourceview
         to 9a6ad0cb703ec1ef475458cec656cbeef9d865dc (commit)
       from 728cb754e087cf0bbc2efa7167a8008b2c66752a (commit)

commit 9a6ad0cb703ec1ef475458cec656cbeef9d865dc
Author: Matthew Brush <mbrush at codebrainz.ca>
Date:   Mon Oct 3 08:10:59 2011 -0700

    Remove old tab size code and use GtkSourceView's tab-width.

 mousepad/mousepad-view.c |   92 +++++++---------------------------------------
 1 files changed, 14 insertions(+), 78 deletions(-)

diff --git a/mousepad/mousepad-view.c b/mousepad/mousepad-view.c
index 438b671..6c98b15 100644
--- a/mousepad/mousepad-view.c
+++ b/mousepad/mousepad-view.c
@@ -69,9 +69,6 @@ static void      mousepad_view_indent_decrease               (MousepadView
 static void      mousepad_view_indent_selection              (MousepadView       *view,
                                                               gboolean            increase,
                                                               gboolean            force);
-static gint      mousepad_view_calculate_layout_width        (GtkWidget          *widget,
-                                                              gsize               length,
-                                                              gchar               fill_char);
 static void      mousepad_view_transpose_multi_selection     (GtkTextBuffer       *buffer,
                                                               MousepadView        *view);
 static void      mousepad_view_transpose_range               (GtkTextBuffer       *buffer,
@@ -114,9 +111,6 @@ struct _MousepadView
 
   /* if the selection is in editing mode */
   guint               selection_editing : 1;
-
-  /* settings */
-  guint               tab_size;
 };
 
 
@@ -147,9 +141,6 @@ mousepad_view_class_init (MousepadViewClass *klass)
 static void
 mousepad_view_init (MousepadView *view)
 {
-  /* initialize settings */
-  view->tab_size = 8;
-
   /* initialize selection variables */
   view->selection_timeout_id = 0;
   view->selection_tag = NULL;
@@ -240,9 +231,6 @@ mousepad_view_style_set (GtkWidget *widget,
                                                         "foreground-gdk", &style->text[GTK_STATE_SELECTED],
                                                         NULL);
 
-      /* update the tab size */
-      mousepad_view_set_tab_size (view, view->tab_size);
-
       /* redraw selection */
       if (view->selection_marks != NULL)
         mousepad_view_selection_draw (view, FALSE);
@@ -987,24 +975,25 @@ mousepad_view_indent_increase (MousepadView *view,
                                GtkTextIter  *iter)
 {
   gchar         *string;
-  gint           offset, length, inline_len;
+  gint           offset, length, inline_len, tab_size;
   GtkTextBuffer *buffer;
 
   /* get the buffer */
   buffer = mousepad_view_get_buffer (view);
+  tab_size = gtk_source_view_get_tab_width (GTK_SOURCE_VIEW (view));
 
   if (gtk_source_view_get_insert_spaces_instead_of_tabs (GTK_SOURCE_VIEW (view)))
     {
       /* get the offset */
-      offset = mousepad_util_get_real_line_offset (iter, view->tab_size);
+      offset = mousepad_util_get_real_line_offset (iter, tab_size);
 
       /* calculate the length to inline with a tab */
-      inline_len = offset % view->tab_size;
+      inline_len = offset % tab_size;
 
       if (inline_len == 0)
-        length = view->tab_size;
+        length = tab_size;
       else
-        length = view->tab_size - inline_len;
+        length = tab_size - inline_len;
 
       /* create spaces string */
       string = g_strnfill (length, ' ');
@@ -1030,11 +1019,14 @@ mousepad_view_indent_decrease (MousepadView *view,
 {
   GtkTextBuffer *buffer;
   GtkTextIter    start, end;
-  gint           columns = view->tab_size;
+  gint           columns, tab_size;
   gunichar       c;
 
   /* set iters */
   start = end = *iter;
+  
+  tab_size = gtk_source_view_get_tab_width (GTK_SOURCE_VIEW (view));
+  columns = tab_size;
 
   /* walk until we've removed enough columns */
   while (columns > 0)
@@ -1043,7 +1035,7 @@ mousepad_view_indent_decrease (MousepadView *view,
       c = gtk_text_iter_get_char (&end);
 
       if (c == '\t')
-        columns -= view->tab_size;
+        columns -= tab_size;
       else if (c == ' ')
         columns--;
       else
@@ -1119,42 +1111,6 @@ mousepad_view_indent_selection (MousepadView *view,
 }
 
 
-
-static gint
-mousepad_view_calculate_layout_width (GtkWidget *widget,
-                                      gsize      length,
-                                      gchar      fill_char)
-{
-  PangoLayout *layout;
-  gchar       *string;
-  gint         width = -1;
-
-  mousepad_return_val_if_fail (GTK_IS_WIDGET (widget), -1);
-  mousepad_return_val_if_fail (length > 0, -1);
-
-  /* create character string */
-  string = g_strnfill (length, fill_char);
-
-  /* create pango layout from widget */
-  layout = gtk_widget_create_pango_layout (widget, string);
-
-  /* cleanup */
-  g_free (string);
-
-  if (G_LIKELY (layout))
-    {
-      /* get the layout size */
-      pango_layout_get_pixel_size (layout, &width, NULL);
-
-      /* release layout */
-      g_object_unref (G_OBJECT (layout));
-    }
-
-  return width;
-}
-
-
-
 void
 mousepad_view_scroll_to_cursor (MousepadView *view)
 {
@@ -1922,7 +1878,7 @@ mousepad_view_convert_spaces_and_tabs (MousepadView *view,
   buffer = mousepad_view_get_buffer (view);
 
   /* get the tab size */
-  tab_size = view->tab_size;
+  tab_size = gtk_source_view_get_tab_width (GTK_SOURCE_VIEW (view));
 
   /* get the start and end iter */
   if (gtk_text_buffer_get_selection_bounds (buffer, &start_iter, &end_iter))
@@ -2349,30 +2305,10 @@ void
 mousepad_view_set_tab_size (MousepadView *view,
                              gint          tab_size)
 {
-  PangoTabArray *tab_array;
-  gint           layout_width;
-
   mousepad_return_if_fail (MOUSEPAD_IS_VIEW (view));
   mousepad_return_if_fail (GTK_IS_TEXT_VIEW (view));
 
-  /* set the value */
-  view->tab_size = tab_size;
-
-  /* get the pixel width of the tab size */
-  layout_width = mousepad_view_calculate_layout_width (GTK_WIDGET (view), view->tab_size, ' ');
-
-  if (G_LIKELY (layout_width != -1))
-    {
-      /* create the pango tab array */
-      tab_array = pango_tab_array_new (1, TRUE);
-      pango_tab_array_set_tab (tab_array, 0, PANGO_TAB_LEFT, layout_width);
-
-      /* set the textview tab array */
-      gtk_text_view_set_tabs (GTK_TEXT_VIEW (view), tab_array);
-
-      /* cleanup */
-      pango_tab_array_free (tab_array);
-    }
+  gtk_source_view_set_tab_width (GTK_SOURCE_VIEW (view), tab_size);
 }
 
 
@@ -2452,7 +2388,7 @@ mousepad_view_get_tab_size (MousepadView *view)
 {
   mousepad_return_val_if_fail (MOUSEPAD_IS_VIEW (view), -1);
 
-  return view->tab_size;
+  return gtk_source_view_get_tab_width (GTK_SOURCE_VIEW (view));
 }
 
 


More information about the Xfce4-commits mailing list