Implement a utility function proposed in #102534:

2003-01-06  Matthias Clasen  <maclas@gmx.de>

	Implement a utility function proposed in #102534:

	* gtk/gtktextbtree.h:
	* gtk/gtktextbtree.c (_gtk_text_btree_select_range): New function.
	(_gtk_text_btree_place_cursor): Now a simple wrapper around
	_gtk_text_btree_select_range().

	* gtk/gtktextbuffer.h:
	* gtk/gtktextbuffer.c (gtk_text_buffer_select_range): New function.
	(gtk_text_buffer_place_cursor): Now a simple wrapper around
	gtk_text_buffer_select_range().
This commit is contained in:
Matthias Clasen 2003-01-06 22:34:23 +00:00 committed by Matthias Clasen
parent 41f2f7974e
commit bc70dc94bf
9 changed files with 119 additions and 8 deletions

View File

@ -1,3 +1,17 @@
2003-01-06 Matthias Clasen <maclas@gmx.de>
Implement a utility function proposed in #102534:
* gtk/gtktextbtree.h:
* gtk/gtktextbtree.c (_gtk_text_btree_select_range): New function.
(_gtk_text_btree_place_cursor): Now a simple wrapper around
_gtk_text_btree_select_range().
* gtk/gtktextbuffer.h:
* gtk/gtktextbuffer.c (gtk_text_buffer_select_range): New function.
(gtk_text_buffer_place_cursor): Now a simple wrapper around
gtk_text_buffer_select_range().
2003-01-05 Havoc Pennington <hp@pobox.com>
* configure.in: fix a stray bracket that was breaking the build

View File

@ -1,3 +1,17 @@
2003-01-06 Matthias Clasen <maclas@gmx.de>
Implement a utility function proposed in #102534:
* gtk/gtktextbtree.h:
* gtk/gtktextbtree.c (_gtk_text_btree_select_range): New function.
(_gtk_text_btree_place_cursor): Now a simple wrapper around
_gtk_text_btree_select_range().
* gtk/gtktextbuffer.h:
* gtk/gtktextbuffer.c (gtk_text_buffer_select_range): New function.
(gtk_text_buffer_place_cursor): Now a simple wrapper around
gtk_text_buffer_select_range().
2003-01-05 Havoc Pennington <hp@pobox.com>
* configure.in: fix a stray bracket that was breaking the build

View File

@ -1,3 +1,17 @@
2003-01-06 Matthias Clasen <maclas@gmx.de>
Implement a utility function proposed in #102534:
* gtk/gtktextbtree.h:
* gtk/gtktextbtree.c (_gtk_text_btree_select_range): New function.
(_gtk_text_btree_place_cursor): Now a simple wrapper around
_gtk_text_btree_select_range().
* gtk/gtktextbuffer.h:
* gtk/gtktextbuffer.c (gtk_text_buffer_select_range): New function.
(gtk_text_buffer_place_cursor): Now a simple wrapper around
gtk_text_buffer_select_range().
2003-01-05 Havoc Pennington <hp@pobox.com>
* configure.in: fix a stray bracket that was breaking the build

View File

@ -1,3 +1,17 @@
2003-01-06 Matthias Clasen <maclas@gmx.de>
Implement a utility function proposed in #102534:
* gtk/gtktextbtree.h:
* gtk/gtktextbtree.c (_gtk_text_btree_select_range): New function.
(_gtk_text_btree_place_cursor): Now a simple wrapper around
_gtk_text_btree_select_range().
* gtk/gtktextbuffer.h:
* gtk/gtktextbuffer.c (gtk_text_buffer_select_range): New function.
(gtk_text_buffer_place_cursor): Now a simple wrapper around
gtk_text_buffer_select_range().
2003-01-05 Havoc Pennington <hp@pobox.com>
* configure.in: fix a stray bracket that was breaking the build

View File

@ -1,3 +1,17 @@
2003-01-06 Matthias Clasen <maclas@gmx.de>
Implement a utility function proposed in #102534:
* gtk/gtktextbtree.h:
* gtk/gtktextbtree.c (_gtk_text_btree_select_range): New function.
(_gtk_text_btree_place_cursor): Now a simple wrapper around
_gtk_text_btree_select_range().
* gtk/gtktextbuffer.h:
* gtk/gtktextbuffer.c (gtk_text_buffer_select_range): New function.
(gtk_text_buffer_place_cursor): Now a simple wrapper around
gtk_text_buffer_select_range().
2003-01-05 Havoc Pennington <hp@pobox.com>
* configure.in: fix a stray bracket that was breaking the build

View File

@ -2655,6 +2655,14 @@ _gtk_text_btree_get_selection_bounds (GtkTextBTree *tree,
void
_gtk_text_btree_place_cursor (GtkTextBTree *tree,
const GtkTextIter *iter)
{
_gtk_text_btree_select_range (tree, iter, iter);
}
void
_gtk_text_btree_select_range (GtkTextBTree *tree,
const GtkTextIter *ins,
const GtkTextIter *bound)
{
GtkTextIter start, end;
@ -2663,11 +2671,12 @@ _gtk_text_btree_place_cursor (GtkTextBTree *tree,
/* Move insert AND selection_bound before we redisplay */
real_set_mark (tree, tree->insert_mark,
"insert", FALSE, iter, TRUE, FALSE);
"insert", FALSE, ins, TRUE, FALSE);
real_set_mark (tree, tree->selection_bound_mark,
"selection_bound", FALSE, iter, TRUE, FALSE);
"selection_bound", FALSE, bound, TRUE, FALSE);
}
void
_gtk_text_btree_remove_mark_by_name (GtkTextBTree *tree,
const gchar *name)

View File

@ -173,6 +173,10 @@ gboolean _gtk_text_btree_get_selection_bounds (GtkTextBTree
GtkTextIter *end);
void _gtk_text_btree_place_cursor (GtkTextBTree *tree,
const GtkTextIter *where);
void _gtk_text_btree_select_range (GtkTextBTree *tree,
const GtkTextIter *ins,
const GtkTextIter
*bound);
gboolean _gtk_text_btree_mark_is_insert (GtkTextBTree *tree,
GtkTextMark *segment);
gboolean _gtk_text_btree_mark_is_selection_bound (GtkTextBTree *tree,

View File

@ -2009,17 +2009,42 @@ void
gtk_text_buffer_place_cursor (GtkTextBuffer *buffer,
const GtkTextIter *where)
{
GtkTextIter real;
gtk_text_buffer_select_range (buffer, where, where);
}
/**
* gtk_text_buffer_select_range:
* @buffer: a #GtkTextBuffer
* @ins: where to put the "insert" mark
* @bound: where to put the "selection_bound" mark
*
* This function moves the "insert" and "selection_bound" marks
* simultaneously. If you move them in two steps
* with gtk_text_buffer_move_mark(), you will temporarily select a
* region in between their old and new locations, which can be pretty
* inefficient since the temporarily-selected region will force stuff
* to be recalculated. This function moves them as a unit, which can
* be optimized.
**/
void
gtk_text_buffer_select_range (GtkTextBuffer *buffer,
const GtkTextIter *ins,
const GtkTextIter *bound)
{
GtkTextIter real_ins;
GtkTextIter real_bound;
g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer));
real = *where;
real_ins = *ins;
real_bound = *bound;
_gtk_text_btree_place_cursor (get_btree (buffer), &real);
gtk_text_buffer_mark_set (buffer, &real,
_gtk_text_btree_select_range (get_btree (buffer), &real_ins, &real_bound);
gtk_text_buffer_mark_set (buffer, &real_ins,
gtk_text_buffer_get_mark (buffer,
"insert"));
gtk_text_buffer_mark_set (buffer, &real,
gtk_text_buffer_mark_set (buffer, &real_bound,
gtk_text_buffer_get_mark (buffer,
"selection_bound"));
}

View File

@ -253,9 +253,12 @@ void gtk_text_buffer_delete_mark_by_name (GtkTextBuffer *buffer,
GtkTextMark* gtk_text_buffer_get_insert (GtkTextBuffer *buffer);
GtkTextMark* gtk_text_buffer_get_selection_bound (GtkTextBuffer *buffer);
/* efficiently move insert and selection_bound to same location */
/* efficiently move insert and selection_bound at the same time */
void gtk_text_buffer_place_cursor (GtkTextBuffer *buffer,
const GtkTextIter *where);
void gtk_text_buffer_select_range (GtkTextBuffer *buffer,
const GtkTextIter *ins,
const GtkTextIter *bound);