tests: Update text test for textview
1) Allow inserting text to move the cursor to after the inserted text 2) Implement selecting text for GtkTextView. Also assert if it's an unsupported widget type. 3) Select an inside part of the widget, not the end.
This commit is contained in:
@ -577,6 +577,18 @@ select_region (GtkWidget *widget,
|
|||||||
gtk_editable_select_region (GTK_EDITABLE (widget), start, end);
|
gtk_editable_select_region (GTK_EDITABLE (widget), start, end);
|
||||||
else if (GTK_IS_LABEL (widget))
|
else if (GTK_IS_LABEL (widget))
|
||||||
gtk_label_select_region (GTK_LABEL (widget), start, end);
|
gtk_label_select_region (GTK_LABEL (widget), start, end);
|
||||||
|
else if (GTK_IS_TEXT_VIEW (widget))
|
||||||
|
{
|
||||||
|
GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget));
|
||||||
|
GtkTextIter start_iter, end_iter;
|
||||||
|
|
||||||
|
gtk_text_buffer_get_iter_at_offset (buffer, &start_iter, end);
|
||||||
|
gtk_text_buffer_get_iter_at_offset (buffer, &end_iter, start);
|
||||||
|
|
||||||
|
gtk_text_buffer_select_range (buffer, &start_iter, &end_iter);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
g_assert_not_reached ();
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -604,7 +616,7 @@ static void
|
|||||||
test_selection (GtkWidget *widget)
|
test_selection (GtkWidget *widget)
|
||||||
{
|
{
|
||||||
AtkText *atk_text;
|
AtkText *atk_text;
|
||||||
const gchar *text = "Bla bla";
|
const gchar *text = "Bla bla bla";
|
||||||
gint n;
|
gint n;
|
||||||
gchar *ret;
|
gchar *ret;
|
||||||
gint start, end;
|
gint start, end;
|
||||||
@ -628,12 +640,17 @@ test_selection (GtkWidget *widget)
|
|||||||
n = atk_text_get_n_selections (atk_text);
|
n = atk_text_get_n_selections (atk_text);
|
||||||
g_assert_cmpint (n, ==, 0);
|
g_assert_cmpint (n, ==, 0);
|
||||||
|
|
||||||
g_assert_cmpint (data1.count, ==, 0);
|
if (data1.count == 1)
|
||||||
|
/* insertion before cursor */
|
||||||
|
g_assert_cmpint (data1.position, ==, 11);
|
||||||
|
else
|
||||||
|
/* insertion after cursor */
|
||||||
|
g_assert_cmpint (data1.count, ==, 0);
|
||||||
g_assert_cmpint (data2.count, ==, 0);
|
g_assert_cmpint (data2.count, ==, 0);
|
||||||
|
|
||||||
select_region (widget, 4, 7);
|
select_region (widget, 4, 7);
|
||||||
|
|
||||||
g_assert_cmpint (data1.count, ==, 1);
|
g_assert_cmpint (data1.count, >=, 1);
|
||||||
g_assert_cmpint (data1.position, ==, 7);
|
g_assert_cmpint (data1.position, ==, 7);
|
||||||
g_assert_cmpint (data2.count, >=, 1);
|
g_assert_cmpint (data2.count, >=, 1);
|
||||||
g_assert_cmpint (data2.bound, ==, 4);
|
g_assert_cmpint (data2.bound, ==, 4);
|
||||||
@ -652,7 +669,7 @@ test_selection (GtkWidget *widget)
|
|||||||
n = atk_text_get_n_selections (atk_text);
|
n = atk_text_get_n_selections (atk_text);
|
||||||
g_assert_cmpint (n, ==, 0);
|
g_assert_cmpint (n, ==, 0);
|
||||||
|
|
||||||
g_assert_cmpint (data1.count, ==, 1);
|
g_assert_cmpint (data1.count, >=, 1);
|
||||||
g_assert_cmpint (data2.count, >=, 2);
|
g_assert_cmpint (data2.count, >=, 2);
|
||||||
g_assert_cmpint (data2.position, ==, 7);
|
g_assert_cmpint (data2.position, ==, 7);
|
||||||
g_assert_cmpint (data2.bound, ==, 7);
|
g_assert_cmpint (data2.bound, ==, 7);
|
||||||
|
|||||||
Reference in New Issue
Block a user