[gnome-builder/wip/libide-merge] add helper to take saved cursor position into account



commit a4b01e379255f0fb2cdb2e60400b732a2f994a23
Author: Christian Hergert <christian hergert me>
Date:   Thu Mar 19 13:26:09 2015 -0700

    add helper to take saved cursor position into account

 libide/ide-source-view.c |   38 ++++++++++++++++++++++++++++++++++++++
 libide/ide-source-view.h |    3 +++
 2 files changed, 41 insertions(+), 0 deletions(-)
---
diff --git a/libide/ide-source-view.c b/libide/ide-source-view.c
index 11a3bab..99b08cd 100644
--- a/libide/ide-source-view.c
+++ b/libide/ide-source-view.c
@@ -6163,3 +6163,41 @@ ide_source_view_set_highlight_current_line (IdeSourceView *self,
       g_object_notify (G_OBJECT (self), "highlight-current-line");
     }
 }
+
+void
+ide_source_view_get_visual_position (IdeSourceView *self,
+                                     guint         *line,
+                                     guint         *column)
+{
+  IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
+  GtkTextBuffer *buffer;
+  GtkTextIter iter;
+
+  g_return_if_fail (IDE_IS_SOURCE_VIEW (self));
+
+  buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (self));
+
+  if (!gtk_widget_has_focus (GTK_WIDGET (self)))
+    {
+      gint offset;
+
+      gtk_text_buffer_get_iter_at_line (buffer, &iter, priv->saved_line);
+
+      for (offset = priv->saved_line_offset; offset; offset--)
+        if (gtk_text_iter_ends_line (&iter) || !gtk_text_iter_forward_char (&iter))
+          break;
+    }
+  else
+    {
+      GtkTextMark *mark;
+
+      mark = gtk_text_buffer_get_insert (buffer);
+      gtk_text_buffer_get_iter_at_mark (buffer, &iter, mark);
+    }
+
+  if (line)
+    *line = gtk_text_iter_get_line (&iter);
+
+  if (column)
+    *column = gtk_source_view_get_visual_column (GTK_SOURCE_VIEW (self), &iter);
+}
diff --git a/libide/ide-source-view.h b/libide/ide-source-view.h
index 5a0466f..735fdaf 100644
--- a/libide/ide-source-view.h
+++ b/libide/ide-source-view.h
@@ -275,6 +275,9 @@ struct _IdeSourceViewClass
 
 void                        ide_source_view_clear_snippets            (IdeSourceView              *self);
 IdeBackForwardList         *ide_source_view_get_back_forward_list     (IdeSourceView              *self);
+void                        ide_source_view_get_visual_position       (IdeSourceView              *self,
+                                                                       guint                      *line,
+                                                                       guint                      
*line_offset);
 gboolean                    ide_source_view_get_enable_word_completion(IdeSourceView              *self);
 IdeFileSettings            *ide_source_view_get_file_settings         (IdeSourceView              *self);
 const PangoFontDescription *ide_source_view_get_font_desc             (IdeSourceView              *self);


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