summaryrefslogtreecommitdiff
path: root/gtk/gtktextmark.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@pobox.com>2000-12-02 07:51:37 +0000
committerHavoc Pennington <hp@src.gnome.org>2000-12-02 07:51:37 +0000
commit35876710dc133b5cab14241174ba0e680ca854af (patch)
treecab3760bbea08fdcb20e9a9a9f10f6eff3c00b07 /gtk/gtktextmark.c
parentfb14d1299e3b81a70938462f841f17ea1e217ded (diff)
downloadgtk+-35876710dc133b5cab14241174ba0e680ca854af.tar.gz
don't create dangling pointers to the appearance attributes from the line
2000-11-30 Havoc Pennington <hp@pobox.com> * gtk/gtktextdisplay.c (gtk_text_layout_draw): don't create dangling pointers to the appearance attributes from the line display * gdk/gdkdraw.c (gdk_drawable_get_image): allow negative width/height to mean "full width/height of drawable" * gtk/gtktextview.h, gtk/gtktextview.c: Implement double/triple click to select word/line * gtk/gtktextiter.c (test_log_attrs): include paragraph delimiters when getting log attrs. Get a slice, so that pixmaps and stuff are properly handled. * gtk/gtktextbuffer.c (paste): Fix pasting to work properly if you paste into the selection (replaces selection now, previously crashed or added to selection). Reveals longstanding btree bug - select multiple lines, middle-click on the selection, boom. This isn't related to my changes though. * gtk/gtkentry.c (gtk_entry_move_forward_word): Update to reflect PangoLogAttrs changes (gtk_entry_move_backward_word): ditto * gtk/gtktextlayout.h, gtk/gtktextlayout.c: Make the iter motion functions return bool whether the iter moved onto a dereferenceable position. * gtk/gtktextview.h, gtk/gtktextview.c: Add a bunch of public functions for motion in terms of display lines. * gtk/gtktextmark.c (gtk_text_mark_get_buffer): Add function to get the buffer a mark is inside
Diffstat (limited to 'gtk/gtktextmark.c')
-rw-r--r--gtk/gtktextmark.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/gtk/gtktextmark.c b/gtk/gtktextmark.c
index 4e20eb300c..e18ea3295e 100644
--- a/gtk/gtktextmark.c
+++ b/gtk/gtktextmark.c
@@ -179,7 +179,7 @@ gtk_text_mark_get_deleted (GtkTextMark *mark)
{
GtkTextLineSegment *seg;
- g_return_val_if_fail (mark != NULL, FALSE);
+ g_return_val_if_fail (GTK_IS_TEXT_MARK (mark), FALSE);
seg = mark->segment;
@@ -189,6 +189,30 @@ gtk_text_mark_get_deleted (GtkTextMark *mark)
return seg->body.mark.tree == NULL;
}
+/**
+ * gtk_text_mark_get_buffer:
+ * @mark: a #GtkTextMark
+ *
+ * Gets the buffer this mark is located inside,
+ * or NULL if the mark is deleted.
+ *
+ * Return value: the mark's #GtkTextBuffer
+ **/
+GtkTextBuffer*
+gtk_text_mark_get_buffer (GtkTextMark *mark)
+{
+ GtkTextLineSegment *seg;
+
+ g_return_val_if_fail (GTK_IS_TEXT_MARK (mark), FALSE);
+
+ seg = mark->segment;
+
+ if (seg->body.mark.tree == NULL)
+ return NULL;
+ else
+ return gtk_text_btree_get_buffer (seg->body.mark.tree);
+}
+
/*
* Macro that determines the size of a mark segment:
*/