mirror of
https://gitlab.gnome.org/GNOME/evince
synced 2024-07-05 00:59:07 +00:00
libview: Keep the offset inside a line when moving the caret between lines.
https://bugzilla.gnome.org/show_bug.cgi?id=702075
This commit is contained in:
parent
040a42db65
commit
255b977888
|
@ -215,6 +215,7 @@ struct _EvView {
|
|||
gboolean caret_enabled;
|
||||
gint cursor_offset;
|
||||
gint cursor_page;
|
||||
gdouble cursor_line_offset;
|
||||
gboolean cursor_visible;
|
||||
guint cursor_blink_timeout_id;
|
||||
guint cursor_blink_time;
|
||||
|
|
|
@ -4175,6 +4175,11 @@ ev_view_button_press_event (GtkWidget *widget,
|
|||
start_selection_for_event (view, event);
|
||||
|
||||
if (position_caret_cursor_at_location (view, event->x, event->y)) {
|
||||
GdkRectangle area;
|
||||
|
||||
if (get_caret_cursor_area (view, view->cursor_page, view->cursor_offset, &area))
|
||||
view->cursor_line_offset = area.x;
|
||||
|
||||
view->cursor_blink_time = 0;
|
||||
ev_view_pend_cursor_blink (view);
|
||||
|
||||
|
@ -4626,7 +4631,12 @@ ev_view_button_release_event (GtkWidget *widget,
|
|||
clear_link_selected (view);
|
||||
ev_view_update_primary_selection (view);
|
||||
|
||||
position_caret_cursor_at_location (view, event->x, event->y);
|
||||
if (position_caret_cursor_at_location (view, event->x, event->y)) {
|
||||
GdkRectangle area;
|
||||
|
||||
if (get_caret_cursor_area (view, view->cursor_page, view->cursor_offset, &area))
|
||||
view->cursor_line_offset = area.x;
|
||||
}
|
||||
|
||||
if (view->selection_info.in_drag) {
|
||||
clear_selection (view);
|
||||
|
@ -5070,6 +5080,13 @@ ev_view_move_cursor (EvView *view,
|
|||
if (!get_caret_cursor_area (view, view->cursor_page, view->cursor_offset, &rect))
|
||||
return TRUE;
|
||||
|
||||
if (step == GTK_MOVEMENT_DISPLAY_LINES) {
|
||||
position_caret_cursor_at_location (view, view->cursor_line_offset,
|
||||
rect.y + (rect.height / 2));
|
||||
} else {
|
||||
view->cursor_line_offset = rect.x;
|
||||
}
|
||||
|
||||
rect.x += view->scroll_x;
|
||||
rect.y += view->scroll_y;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user