summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-06-24 11:01:36 +0100
committerCaolán McNamara <caolanm@redhat.com>2021-06-24 21:43:55 +0200
commit344f8a96fda5880dfe812e3ae28cc943102d7779 (patch)
tree3607b31aca92c4c5fe0a53e73e1c9a150a01b97f
parent5536224038fc95369be7f9a7240ec12e3d0be5c3 (diff)
gtk4: finish dnd target
we want to work with a GdkDrop not GtkDropTargetAsync to get the behaviour we expect Change-Id: If1f0904fec3a0bfd6dfba770db6c11774e4d23a8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117774 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--vcl/unx/gtk3/gtkframe.cxx24
1 files changed, 12 insertions, 12 deletions
diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx
index 80624112d9ec..89e3a3f59a83 100644
--- a/vcl/unx/gtk3/gtkframe.cxx
+++ b/vcl/unx/gtk3/gtkframe.cxx
@@ -4257,7 +4257,6 @@ class GtkDropTargetDropContext : public cppu::WeakImplHelper<css::datatransfer::
GdkDragContext *m_pContext;
guint m_nTime;
#else
- GtkDropTargetAsync* m_pContext;
GdkDrop* m_pDrop;
#endif
public:
@@ -4266,9 +4265,8 @@ public:
: m_pContext(pContext)
, m_nTime(nTime)
#else
- GtkDropTargetDropContext(GtkDropTargetAsync* pContext, GdkDrop* pDrop)
- : m_pContext(pContext)
- , m_pDrop(pDrop)
+ GtkDropTargetDropContext(GdkDrop* pDrop)
+ : m_pDrop(pDrop)
#endif
{
}
@@ -4291,7 +4289,7 @@ public:
#if !GTK_CHECK_VERSION(4, 0, 0)
gdk_drag_status(m_pContext, static_cast<GdkDragAction>(0), m_nTime);
#else
- gtk_drop_target_async_reject_drop(m_pContext, m_pDrop);
+ gdk_drop_status(m_pDrop, gdk_drop_get_actions(m_pDrop), static_cast<GdkDragAction>(0));
#endif
}
@@ -4493,7 +4491,7 @@ gboolean GtkInstDropTarget::signalDragDrop(GtkDropTargetAsync* context, GdkDrop*
#if !GTK_CHECK_VERSION(4, 0, 0)
aEvent.Context = new GtkDropTargetDropContext(context, time);
#else
- aEvent.Context = new GtkDropTargetDropContext(context, drop);
+ aEvent.Context = new GtkDropTargetDropContext(drop);
#endif
aEvent.LocationX = x;
aEvent.LocationY = y;
@@ -4549,7 +4547,6 @@ class GtkDropTargetDragContext : public cppu::WeakImplHelper<css::datatransfer::
GdkDragContext *m_pContext;
guint m_nTime;
#else
- GtkDropTargetAsync* m_pContext;
GdkDrop* m_pDrop;
#endif
public:
@@ -4558,9 +4555,8 @@ public:
: m_pContext(pContext)
, m_nTime(nTime)
#else
- GtkDropTargetDragContext(GtkDropTargetAsync* pContext, GdkDrop* pDrop)
- : m_pContext(pContext)
- , m_pDrop(pDrop)
+ GtkDropTargetDragContext(GdkDrop* pDrop)
+ : m_pDrop(pDrop)
#endif
{
}
@@ -4579,7 +4575,7 @@ public:
#if !GTK_CHECK_VERSION(4, 0, 0)
gdk_drag_status(m_pContext, static_cast<GdkDragAction>(0), m_nTime);
#else
- gtk_drop_target_async_reject_drop(m_pContext, m_pDrop);
+ gdk_drop_status(m_pDrop, gdk_drop_get_actions(m_pDrop), static_cast<GdkDragAction>(0));
#endif
}
};
@@ -4650,7 +4646,7 @@ GdkDragAction GtkInstDropTarget::signalDragMotion(GtkDropTargetAsync *context, G
#if !GTK_CHECK_VERSION(4,0,0)
rtl::Reference<GtkDropTargetDragContext> pContext = new GtkDropTargetDragContext(context, time);
#else
- rtl::Reference<GtkDropTargetDragContext> pContext = new GtkDropTargetDragContext(context, pDrop);
+ rtl::Reference<GtkDropTargetDragContext> pContext = new GtkDropTargetDragContext(pDrop);
#endif
//preliminary accept the Drag and select the preferred action, the fire_* will
//inform the original caller of our choice and the callsite can decide
@@ -4690,6 +4686,10 @@ GdkDragAction GtkInstDropTarget::signalDragMotion(GtkDropTargetAsync *context, G
#if !GTK_CHECK_VERSION(4,0,0)
gdk_drag_status(context, eAction, time);
+#else
+ gdk_drop_status(pDrop,
+ static_cast<GdkDragAction>(eAction | gdk_drop_get_actions(pDrop)),
+ eAction);
#endif
aEvent.Context = pContext;
aEvent.LocationX = x;