kbrown / rpms / libreoffice

Forked from rpms/libreoffice 2 years ago
Clone

Blame SOURCES/0166-lokdocview-Reset-view-completely.patch

f325b2
From 54cbf52419e6318c2cdf19232f79a515ffb6e7f6 Mon Sep 17 00:00:00 2001
f325b2
From: Pranav Kant <pranavk@gnome.org>
f325b2
Date: Thu, 24 Sep 2015 18:47:01 +0200
f325b2
Subject: [PATCH 166/398] lokdocview: Reset view completely
f325b2
f325b2
Resetting tiles only is not enough. We need to empty stale
f325b2
selection rectangles, handle bars, cursor positions etc., so that
f325b2
they do not interfere with next view to be opened using same
f325b2
widget instance.
f325b2
f325b2
We are not destroying the document here, so the widget would
f325b2
still point to the same document unless it is made to point to
f325b2
another document by subsequent lok_doc_view_open_document calls.
f325b2
f325b2
Change-Id: I3c7cc789c8c7393b3793b4edf6aa96d54bc0b1a3
f325b2
Reviewed-on: https://gerrit.libreoffice.org/18866
f325b2
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
f325b2
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
f325b2
(cherry picked from commit c3ce35f0a12af2887b10987f76675174563487d7)
f325b2
---
f325b2
 libreofficekit/source/gtk/lokdocview.cxx | 37 ++++++++++++++++++++++++++++++++
f325b2
 1 file changed, 37 insertions(+)
f325b2
f325b2
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
f325b2
index 6679cee56cd3..99476764e69d 100644
f325b2
--- a/libreofficekit/source/gtk/lokdocview.cxx
f325b2
+++ b/libreofficekit/source/gtk/lokdocview.cxx
f325b2
@@ -1986,6 +1986,43 @@ lok_doc_view_reset_view(LOKDocView* pDocView)
f325b2
 {
f325b2
     LOKDocViewPrivate *priv = static_cast<LOKDocViewPrivate*>(lok_doc_view_get_instance_private (pDocView));
f325b2
     priv->m_aTileBuffer.resetAllTiles();
f325b2
+    priv->m_nLoadProgress = 0.0;
f325b2
+
f325b2
+    memset(&priv->m_aVisibleCursor, 0, sizeof(priv->m_aVisibleCursor));
f325b2
+    priv->m_bCursorOverlayVisible = false;
f325b2
+    priv->m_bCursorVisible = false;
f325b2
+
f325b2
+    priv->m_nLastButtonPressTime = 0;
f325b2
+    priv->m_nLastButtonReleaseTime = 0;
f325b2
+    priv->m_aTextSelectionRectangles.clear();
f325b2
+
f325b2
+    memset(&priv->m_aTextSelectionStart, 0, sizeof(priv->m_aTextSelectionStart));
f325b2
+    memset(&priv->m_aTextSelectionEnd, 0, sizeof(priv->m_aTextSelectionEnd));
f325b2
+    memset(&priv->m_aGraphicSelection, 0, sizeof(priv->m_aGraphicSelection));
f325b2
+    priv->m_bInDragGraphicSelection = false;
f325b2
+
f325b2
+    cairo_surface_destroy(priv->m_pHandleStart);
f325b2
+    priv->m_pHandleStart = 0;
f325b2
+    memset(&priv->m_aHandleStartRect, 0, sizeof(priv->m_aHandleStartRect));
f325b2
+    priv->m_bInDragStartHandle = false;
f325b2
+
f325b2
+    cairo_surface_destroy(priv->m_pHandleMiddle);
f325b2
+    priv->m_pHandleMiddle = 0;
f325b2
+    memset(&priv->m_aHandleMiddleRect, 0, sizeof(priv->m_aHandleMiddleRect));
f325b2
+    priv->m_bInDragMiddleHandle = false;
f325b2
+
f325b2
+    cairo_surface_destroy(priv->m_pHandleEnd);
f325b2
+    priv->m_pHandleEnd = 0;
f325b2
+    memset(&priv->m_aHandleEndRect, 0, sizeof(priv->m_aHandleEndRect));
f325b2
+    priv->m_bInDragEndHandle = false;
f325b2
+
f325b2
+    cairo_surface_destroy(priv->m_pGraphicHandle);
f325b2
+    priv->m_pGraphicHandle = 0;
f325b2
+    memset(&priv->m_aGraphicHandleRects, 0, sizeof(priv->m_aGraphicHandleRects));
f325b2
+    memset(&priv->m_bInDragGraphicHandles, 0, sizeof(priv->m_bInDragGraphicHandles));
f325b2
+
f325b2
+    priv->m_nViewId = 0;
f325b2
+
f325b2
     gtk_widget_queue_draw(GTK_WIDGET(pDocView));
f325b2
 }
f325b2
 
f325b2
-- 
f325b2
2.12.0
f325b2