Add some tests for hyperlink marking
This commit is contained in:
parent
4a75952fc7
commit
9293d9b0ed
@ -2495,7 +2495,7 @@ add_url_range(Screen *self, index_type start_x, index_type start_y, index_type e
|
||||
memset(r, 0, sizeof(Selection));
|
||||
A(start.x, start_x); A(end.x, end_x); A(start.y, start_y); A(end.y, end_y);
|
||||
A(start_scrolled_by, self->scrolled_by); A(end_scrolled_by, self->scrolled_by);
|
||||
A(start.in_left_half_of_cell, true); A(end.in_left_half_of_cell, start_x == end_x && start_y == end_y);
|
||||
A(start.in_left_half_of_cell, true);
|
||||
#undef A
|
||||
}
|
||||
|
||||
@ -2532,7 +2532,9 @@ mark_hyperlinks_in_line(Screen *self, Line *line, hyperlink_id_type id) {
|
||||
static int
|
||||
compare_ranges(const void *a_, const void* b_) {
|
||||
const Selection *a = a_, *b = b_;
|
||||
return (a->sort_y - b->sort_y) || (a->sort_x - b->sort_x);
|
||||
int ans = a->sort_y - b->sort_y;
|
||||
if (!ans) ans = a->sort_x - b->sort_x;
|
||||
return ans;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -2558,8 +2560,8 @@ screen_mark_hyperlink(Screen *self, index_type x, index_type y) {
|
||||
if (ypos == 0) break;
|
||||
ypos--;
|
||||
line = screen_visual_line(self, ypos);
|
||||
} while ( last_marked_line - ypos < 5);
|
||||
ypos = y; last_marked_line = y;
|
||||
} while (last_marked_line - ypos < 5);
|
||||
ypos = y + 1; last_marked_line = y;
|
||||
while (ypos < self->lines - 1 && ypos - last_marked_line < 5) {
|
||||
line = screen_visual_line(self, ypos);
|
||||
if (mark_hyperlinks_in_line(self, line, id)) last_marked_line = ypos;
|
||||
|
||||
@ -591,3 +591,22 @@ class TestScreen(BaseTest):
|
||||
set_link('2'), s.draw('2')
|
||||
set_link('1'), s.draw('1')
|
||||
self.ae([(':2', 2), (':1', 1)], s.hyperlinks_as_list())
|
||||
|
||||
s = self.create_screen()
|
||||
set_link('1'), s.draw('12'), set_link(), s.draw('X'), set_link('1'), s.draw('3')
|
||||
s.linefeed(), s.carriage_return()
|
||||
s.draw('abc')
|
||||
s.linefeed(), s.carriage_return()
|
||||
set_link(), s.draw('Z ')
|
||||
set_link('1'), s.draw('xyz')
|
||||
s.linefeed(), s.carriage_return()
|
||||
set_link('2'), s.draw('Z Z')
|
||||
self.assertIsNone(s.current_url_text())
|
||||
self.assertIsNone(s.hyperlink_at(0, 4))
|
||||
self.assertIsNone(s.current_url_text())
|
||||
self.ae(s.hyperlink_at(0, 0), '1')
|
||||
self.ae(s.current_url_text(), '123abcxyz')
|
||||
self.ae('1', s.hyperlink_at(3, 2))
|
||||
self.ae(s.current_url_text(), '123abcxyz')
|
||||
self.ae('2', s.hyperlink_at(1, 3))
|
||||
self.ae(s.current_url_text(), 'Z Z')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user