diff options
author | Руслан Ижбулатов <lrn1986@gmail.com> | 2018-03-19 09:40:58 +0000 |
---|---|---|
committer | Руслан Ижбулатов <lrn1986@gmail.com> | 2018-03-19 09:40:58 +0000 |
commit | 3e68abddbc2f341ba18f5530ad7a7d3de388d63b (patch) | |
tree | 1de308592f8f4531f283be7a86f0e32ec8042d76 | |
parent | 84ff404a173f860e2e54b2dc684481455d328d19 (diff) | |
parent | 577f1a992e9cf2c2ad6a6310b446541c72e991e9 (diff) | |
download | gtk+-3e68abddbc2f341ba18f5530ad7a7d3de388d63b.tar.gz |
Merge branch 'lrn/issue-82_3-22' into gtk-3-22
-rw-r--r-- | gdk/win32/gdkdnd-win32.c | 17 | ||||
-rw-r--r-- | gdk/win32/gdkproperty-win32.c | 3 | ||||
-rw-r--r-- | gdk/win32/gdkselection-win32.c | 3 |
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)) { |