Blame SOURCES/evince-3.28.4-move-annotations.patch

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