63 lines
2.2 KiB
Diff
63 lines
2.2 KiB
Diff
|
From 9d6ebdb168f8438449c43e63f38f687e09c8fe4f Mon Sep 17 00:00:00 2001
|
||
|
From: Marek Kasik <mkasik@redhat.com>
|
||
|
Date: Thu, 5 Mar 2020 13:21:59 +0100
|
||
|
Subject: [PATCH] ev-view: Move annotation popup window to new position
|
||
|
|
||
|
Open annotation popup window at new position if its
|
||
|
annotation was moved when the popup window was hidden.
|
||
|
This places existing popup window the same way as when
|
||
|
it was created.
|
||
|
---
|
||
|
libview/ev-view.c | 35 +++++++++++++++++++++++++++++++++++
|
||
|
1 file changed, 35 insertions(+)
|
||
|
|
||
|
diff --git a/libview/ev-view.c b/libview/ev-view.c
|
||
|
index ffbe1704..43a0410d 100644
|
||
|
--- a/libview/ev-view.c
|
||
|
+++ b/libview/ev-view.c
|
||
|
@@ -3390,6 +3390,41 @@ ev_view_handle_annotation (EvView *view,
|
||
|
|
||
|
parent = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view)));
|
||
|
window = ev_view_create_annotation_window (view, annot, parent);
|
||
|
+ } else if (window && ev_annotation_markup_has_popup (EV_ANNOTATION_MARKUP (annot))) {
|
||
|
+ EvViewWindowChild *child;
|
||
|
+ EvMappingList *annots;
|
||
|
+ EvRectangle popup_rect;
|
||
|
+ EvMapping *mapping;
|
||
|
+ GdkPoint view_point;
|
||
|
+ EvPoint annotation_corner;
|
||
|
+
|
||
|
+ child = ev_view_get_window_child (view, window);
|
||
|
+ annots = ev_page_cache_get_annot_mapping (view->page_cache,
|
||
|
+ ev_annotation_get_page_index (annot));
|
||
|
+ mapping = ev_mapping_list_find (annots, annot);
|
||
|
+ ev_annotation_markup_get_rectangle (EV_ANNOTATION_MARKUP (annot),
|
||
|
+ &popup_rect);
|
||
|
+
|
||
|
+ popup_rect.x2 = mapping->area.x2 + popup_rect.x2 - popup_rect.x1;
|
||
|
+ popup_rect.y2 = mapping->area.y2 + popup_rect.y2 - popup_rect.y1;
|
||
|
+ popup_rect.x1 = mapping->area.x2;
|
||
|
+ popup_rect.y1 = mapping->area.y2;
|
||
|
+ g_object_set (annot,
|
||
|
+ "rectangle", &popup_rect,
|
||
|
+ "popup_is_open", TRUE,
|
||
|
+ NULL);
|
||
|
+
|
||
|
+ annotation_corner.x = mapping->area.x2;
|
||
|
+ annotation_corner.y = mapping->area.y2;
|
||
|
+
|
||
|
+ _ev_view_transform_doc_point_to_view_point (view,
|
||
|
+ ev_annotation_get_page_index (annot),
|
||
|
+ &annotation_corner,
|
||
|
+ &view_point);
|
||
|
+
|
||
|
+ ev_view_window_child_move (view, child,
|
||
|
+ child->parent_x + view_point.x - view->scroll_x,
|
||
|
+ child->parent_y + view_point.y - view->scroll_y);
|
||
|
}
|
||
|
ev_view_annotation_show_popup_window (view, window);
|
||
|
}
|
||
|
--
|
||
|
2.24.1
|
||
|
|