summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorРуслан Ижбулатов <lrn1986@gmail.com>2018-03-19 09:40:58 +0000
committerРуслан Ижбулатов <lrn1986@gmail.com>2018-03-19 09:40:58 +0000
commit3e68abddbc2f341ba18f5530ad7a7d3de388d63b (patch)
tree1de308592f8f4531f283be7a86f0e32ec8042d76
parent84ff404a173f860e2e54b2dc684481455d328d19 (diff)
parent577f1a992e9cf2c2ad6a6310b446541c72e991e9 (diff)
downloadgtk+-3e68abddbc2f341ba18f5530ad7a7d3de388d63b.tar.gz
Merge branch 'lrn/issue-82_3-22' into gtk-3-22
-rw-r--r--gdk/win32/gdkdnd-win32.c17
-rw-r--r--gdk/win32/gdkproperty-win32.c3
-rw-r--r--gdk/win32/gdkselection-win32.c3
3 files changed, 21 insertions, 2 deletions
diff --git a/gdk/win32/gdkdnd-win32.c b/gdk/win32/gdkdnd-win32.c
index d650a70d0d..589aea5a8e 100644
--- a/gdk/win32/gdkdnd-win32.c
+++ b/gdk/win32/gdkdnd-win32.c
@@ -2566,6 +2566,23 @@ gdk_win32_drag_context_drop_finish (GdkDragContext *context,
context->dest_window);
if (src_context)
{
+ if (gdk_drag_context_get_selected_action (src_context) == GDK_ACTION_MOVE)
+ {
+ tmp_event = gdk_event_new (GDK_SELECTION_REQUEST);
+ g_set_object (&tmp_event->selection.window, src_context->source_window);
+ tmp_event->selection.send_event = FALSE;
+ tmp_event->selection.selection = _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_LOCAL_DND_SELECTION);
+ tmp_event->selection.target = _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_DELETE);
+ sel_win32->property_change_target_atom = _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_DELETE);
+ tmp_event->selection.property = _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_LOCAL_DND_SELECTION);
+ g_set_object (&tmp_event->selection.requestor, src_context->source_window);
+ tmp_event->selection.time = GDK_CURRENT_TIME; /* ??? */
+
+ GDK_NOTE (EVENTS, _gdk_win32_print_event (tmp_event));
+ gdk_event_put (tmp_event);
+ gdk_event_free (tmp_event);
+ }
+
tmp_event = gdk_event_new (GDK_DROP_FINISHED);
g_set_object (&tmp_event->dnd.window, src_context->source_window);
tmp_event->dnd.send_event = FALSE;
diff --git a/gdk/win32/gdkproperty-win32.c b/gdk/win32/gdkproperty-win32.c
index 435bbe9d35..06e8bb79fb 100644
--- a/gdk/win32/gdkproperty-win32.c
+++ b/gdk/win32/gdkproperty-win32.c
@@ -186,7 +186,8 @@ _gdk_win32_window_change_property (GdkWindow *window,
#endif
if (property == _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_GDK_SELECTION) ||
- property == _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_OLE2_DND))
+ property == _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_OLE2_DND) ||
+ property == _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_LOCAL_DND_SELECTION))
{
_gdk_win32_selection_property_change (win32_sel,
window,
diff --git a/gdk/win32/gdkselection-win32.c b/gdk/win32/gdkselection-win32.c
index 41bab532bf..ff4b5c7899 100644
--- a/gdk/win32/gdkselection-win32.c
+++ b/gdk/win32/gdkselection-win32.c
@@ -2356,7 +2356,8 @@ _gdk_win32_selection_property_change (GdkWin32Selection *win32_sel,
open_clipboard_timeout (NULL);
}
}
- else if (property == _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_OLE2_DND) &&
+ else if ((property == _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_OLE2_DND) ||
+ property == _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_LOCAL_DND_SELECTION)) &&
mode == GDK_PROP_MODE_REPLACE &&
win32_sel->property_change_target_atom == _gdk_win32_selection_atom (GDK_WIN32_ATOM_INDEX_DELETE))
{