/[packages]/updates/5/libreoffice/current/SOURCES/0001-Resolves-tdf-103472-gtk3-dnd-must-clear-listener-aft.patch
ViewVC logotype

Contents of /updates/5/libreoffice/current/SOURCES/0001-Resolves-tdf-103472-gtk3-dnd-must-clear-listener-aft.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1188168 - (show annotations) (download)
Sat Dec 30 21:57:44 2017 UTC (6 years, 3 months ago) by luigiwalser
File size: 3024 byte(s)
5.1.6 (sync with f24)
1 From 74cb910bb43b51e454cadd79c124eb6de4b49332 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
3 Date: Tue, 25 Oct 2016 09:38:36 +0100
4 Subject: [PATCH] Resolves: tdf#103472 gtk3 dnd must clear listener after
5 dragDropEnd dispatch
6
7 like the generic dnd impl does
8
9 Change-Id: Ie860c43329ee2f9332d12a53cd691ac7fcbb5eac
10 (cherry picked from commit 461e9cc64b5a6e9943db397d27c6415327386494)
11 ---
12 vcl/unx/gtk3/gtk3gtkframe.cxx | 39 +++++++++++++++++++++++++++------------
13 1 file changed, 27 insertions(+), 12 deletions(-)
14
15 diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
16 index 234be9d..ef078a0 100644
17 --- a/vcl/unx/gtk3/gtk3gtkframe.cxx
18 +++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
19 @@ -4102,10 +4102,15 @@ void GtkSalFrame::startDrag(gint nButton, gint nDragOriginX, gint nDragOriginY,
20
21 void GtkDragSource::dragFailed()
22 {
23 - datatransfer::dnd::DragSourceDropEvent aEv;
24 - aEv.DropAction = datatransfer::dnd::DNDConstants::ACTION_NONE;
25 - aEv.DropSuccess = false;
26 - m_xListener->dragDropEnd(aEv);
27 + if (m_xListener.is())
28 + {
29 + datatransfer::dnd::DragSourceDropEvent aEv;
30 + aEv.DropAction = datatransfer::dnd::DNDConstants::ACTION_NONE;
31 + aEv.DropSuccess = false;
32 + auto xListener = m_xListener;
33 + m_xListener.clear();
34 + xListener->dragDropEnd(aEv);
35 + }
36 }
37
38 gboolean GtkSalFrame::signalDragFailed(GtkWidget* /*widget*/, GdkDragContext* /*context*/, GtkDragResult /*result*/, gpointer frame)
39 @@ -4119,10 +4124,15 @@ gboolean GtkSalFrame::signalDragFailed(GtkWidget* /*widget*/, GdkDragContext* /*
40
41 void GtkDragSource::dragDelete()
42 {
43 - datatransfer::dnd::DragSourceDropEvent aEv;
44 - aEv.DropAction = datatransfer::dnd::DNDConstants::ACTION_MOVE;
45 - aEv.DropSuccess = true;
46 - m_xListener->dragDropEnd(aEv);
47 + if (m_xListener.is())
48 + {
49 + datatransfer::dnd::DragSourceDropEvent aEv;
50 + aEv.DropAction = datatransfer::dnd::DNDConstants::ACTION_MOVE;
51 + aEv.DropSuccess = true;
52 + auto xListener = m_xListener;
53 + m_xListener.clear();
54 + xListener->dragDropEnd(aEv);
55 + }
56 }
57
58 void GtkSalFrame::signalDragDelete(GtkWidget* /*widget*/, GdkDragContext* /*context*/, gpointer frame)
59 @@ -4135,10 +4145,15 @@ void GtkSalFrame::signalDragDelete(GtkWidget* /*widget*/, GdkDragContext* /*cont
60
61 void GtkDragSource::dragEnd(GdkDragContext* context)
62 {
63 - datatransfer::dnd::DragSourceDropEvent aEv;
64 - aEv.DropAction = GdkToVcl(gdk_drag_context_get_selected_action(context));
65 - aEv.DropSuccess = gdk_drag_drop_succeeded(context);
66 - m_xListener->dragDropEnd(aEv);
67 + if (m_xListener.is())
68 + {
69 + datatransfer::dnd::DragSourceDropEvent aEv;
70 + aEv.DropAction = GdkToVcl(gdk_drag_context_get_selected_action(context));
71 + aEv.DropSuccess = gdk_drag_drop_succeeded(context);
72 + auto xListener = m_xListener;
73 + m_xListener.clear();
74 + xListener->dragDropEnd(aEv);
75 + }
76 g_ActiveDragSource = nullptr;
77 }
78
79 --
80 2.7.4
81

  ViewVC Help
Powered by ViewVC 1.1.30