gtk2/gdk
darkcutler 5b888393e5 Fix DnD on Windows
DnD under Windows needed 3 fixes to work with Gtk.DropTarget.

1. The droptarget_w32format_contentformat_map list never gets
filled so the gdk_win32_drop_read_async throws
"No compatible transfer format found".
This is an easy fix and done the same way in the win32 clipboard code.

2. After a drop no gdk_drop_emit_leave_event gets emitted.
This causes a second drop to trigger a bunch of assertion
'self->drop == drop' failed because the first drop is still active.
This is also an easy fix and done the same way by the macos backend.

3. Handling gdk_drop_status/gdk_drop_get_actions interaction.
In gtk_drop_target_do_drop the code
```gdk_drop_finish (self->drop, gdk_drop_get_actions (self->drop));```
calls the finish operation with the actions of the drop which triggers
```g_return_if_fail (gdk_drag_action_is_unique (action));```
in gdk_drop_finish. The code assumes that GdkDrop::actions gets
narrowed down by calling gdk_drop_status. This is hard to assure
because at the same time gdk_drop_get_actions is used by
gtk_drop_target_accept to figure out if a drag is accepted.
GdkDrop::actions serves a double purpose here as the supported source
actions and the currently agreed on action. Both the x11 and the
wayland backend get this wrong somewhat too. Under wayland/x11 when
a drag coming from a source that supports both MOVE and COPY is
first hovering a drop target that only supports COPY it is afterwards
no longer accepted by other drop targets only accepting MOVE.
Under x11 this is permanent for this drag but with wayland the drag
recovers when hovering other widgets. The win32 backend now sets the
supported source actions before any enter/move/drop and narrows them
down in gdk_win32_drop_status.

The patch only touches the win32 backend and fixes all three issues,
for me restoring DnD under windows.

Closes #4498
2022-07-29 14:44:26 +02:00
..
broadway broadway: Fix gcc 12 complaining 2022-05-28 08:12:37 -04:00
loaders gdkjpeg: include stdlib.h necessary for free 2022-02-06 15:41:33 +00:00
macos Merge branch 'sumibi-yakitori/fix-minimize-window-macos' into 'main' 2022-04-04 18:53:35 +00:00
wayland wayland/display: Don't force HighContrast icon theme 2022-06-08 14:33:07 -04:00
win32 Fix DnD on Windows 2022-07-29 14:44:26 +02:00
x11 Merge branch 'dnd' into 'main' 2022-07-18 14:21:45 +00:00
COPYING Change FSF Address 2012-02-27 17:06:11 +00:00
default_cursor.png gdk: Include a default cursor as resource 2020-04-26 14:41:52 -04:00
filetransferportal.c filechooser portal: Free portal proxy when bus connection closes 2020-02-04 14:08:10 +01:00
filetransferportalprivate.h Tweak the file transfer portal _again_ 2020-01-17 23:46:37 -05:00
gdk-autocleanup.h gdk: Make GdkKeymap a private api 2020-04-06 16:32:03 -04:00
gdk-private.h surface: Add a private struct 2021-10-06 03:43:47 +02:00
gdk.c gl: Check allowed APIs in realize() 2021-10-08 03:31:07 +02:00
gdk.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gdkapplaunchcontext.c gdkapplaunchcontext: Fix docs a bit 2022-02-01 11:17:55 -08:00
gdkapplaunchcontext.h gdk: Remove gdk.h include from gdk-private.h 2021-09-24 22:11:57 +02:00
gdkapplaunchcontextprivate.h Replace "gint" with "int" 2020-07-25 00:47:36 +02:00
gdkarrayimpl.c gdkarray: Add a "stolen" boolean to splice() 2020-12-24 06:38:45 +01:00
gdkcairo.c cairo: Use GdkTexture for converting from pixbuf 2021-10-06 22:50:07 +02:00
gdkcairo.h gdk: Deprecate gdk_cairo_draw_from_gl() 2021-09-12 05:54:37 +02:00
gdkcairocontext.c gdk: Remove gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkcairocontext.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkcairocontextprivate.h gdkcairocontext*.h: Include cairo.h consistently 2018-05-15 13:49:45 +08:00
gdkcairoprivate.h gdk: Remove gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkclipboard.c docs: Fix link to g_signal_emit() 2021-11-01 12:54:07 +00:00
gdkclipboard.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkclipboardprivate.h gdk: Change some async clipboard api 2019-04-02 15:10:53 +00:00
gdkconfig.h.meson macos: prototype new GDK backend for macOS 2020-07-21 14:45:12 -07:00
gdkconfig.h.win32 Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkconfig.h.win32_vulkan Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkconstructor.h gdk: Include copy of glib/gconstructor.h 2019-03-17 21:29:59 +01:00
gdkcontentdeserializer.c gdk: Add missing out annotation on gdk_content_deserialize_finish 2022-03-15 22:01:19 -04:00
gdkcontentdeserializer.h gdk: Clean up docs syntax 2021-05-22 17:25:26 -04:00
gdkcontentformats.c contentformats: Make sure 0 elements means the array is NULL 2021-12-11 23:21:53 +01:00
gdkcontentformats.h Add getter to GdkFileList 2021-10-11 21:40:29 +01:00
gdkcontentformatsprivate.h gdk: Sanitize GdkContentFormats API 2017-11-20 23:15:11 +01:00
gdkcontentprovider.c Apply 1 suggestion(s) to 1 file(s) 2021-12-25 13:29:07 +00:00
gdkcontentprovider.h gdk: Clean up docs syntax 2021-05-22 17:25:26 -04:00
gdkcontentproviderimpl.c contentprovider: Switch wrong order in type check 2021-08-19 03:16:48 +02:00
gdkcontentproviderimpl.h Remove gdk_content_provider_new_with_formats() 2020-02-18 02:40:00 +01:00
gdkcontentproviderprivate.h clipboard: Introduce GdkContentProvider 2017-12-03 05:46:47 +01:00
gdkcontentserializer.c gdk: add missing nullable annotations 2022-01-01 17:03:10 +01:00
gdkcontentserializer.h gdk: Clean up docs syntax 2021-05-22 17:25:26 -04:00
gdkcursor.c Minor doc fix 2022-01-03 10:27:51 +00:00
gdkcursor.h Cosmetics 2020-10-29 07:40:30 -04:00
gdkcursorprivate.h gdk: Add gdk_cursor_hash() and gdk_cursor_equal() 2017-11-04 00:07:13 +01:00
gdkdebug.h gdk: hdr => high depth 2021-10-06 22:50:07 +02:00
gdkdevice.c Merge branch 'bilelmoussaoui/g-i' into 'main' 2022-02-09 13:43:50 +00:00
gdkdevice.h Revert "Deprecate GdkDevice:source" 2022-02-09 07:55:28 -05:00
gdkdevicepad.c gdk: Clean up docs syntax 2021-05-22 17:25:26 -04:00
gdkdevicepad.h Replace "gint" with "int" 2020-07-25 00:47:36 +02:00
gdkdevicepadprivate.h Replace "gint" with "int" 2020-07-25 00:47:36 +02:00
gdkdeviceprivate.h gdk: Add gdk_device_get_timestamp 2021-03-26 10:30:33 -04:00
gdkdevicetool.c gdk: Remove gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkdevicetool.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gdkdevicetoolprivate.h gdk: Pass hardware ID on gdk_device_tool_new() 2016-08-23 21:01:44 +02:00
gdkdisplay.c egl: Fix invalid format string 2022-05-13 21:05:58 +00:00
gdkdisplay.h API: Add gdk_display_create_gl_context() 2021-10-20 20:31:33 +02:00
gdkdisplaymanager.c gdk: Remove gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkdisplaymanager.h Replace "gchar" with "char" 2020-07-25 00:47:36 +02:00
gdkdisplaymanagerprivate.h gdk: Unvfuncify gdk_display_manager_open_display() 2013-04-19 16:23:43 -04:00
gdkdisplayprivate.h gdk: use EGL_KHR_swap_buffers_with_damage 2022-03-15 22:04:30 -04:00
gdkdrag.c docs: Reduce redundancy 2021-05-20 20:45:06 -04:00
gdkdrag.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gdkdragprivate.h Replace "gint" with "int" 2020-07-25 00:47:36 +02:00
gdkdragsurface.c gdk: Clean up docs syntax 2021-05-22 17:25:26 -04:00
gdkdragsurface.h Annotation fixes 2020-04-03 15:30:56 +01:00
gdkdragsurfaceprivate.h Add a GdkDragSurface interface 2020-03-12 14:56:21 -04:00
gdkdrawcontext.c drawcontext: Guard begin/end_frame() against non-surface contexts 2021-10-20 20:31:33 +02:00
gdkdrawcontext.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkdrawcontextprivate.h gdk: hdr => high depth 2021-10-06 22:50:07 +02:00
gdkdrop.c gdk: Remove gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkdrop.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gdkdropprivate.h gdk: Make gdk_drop_status() take preferred action 2020-03-02 04:43:56 +01:00
gdkenums.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gdkenumtypes.c.template types: fix various use of volatile in type registration 2020-11-18 20:21:33 -08:00
gdkenumtypes.h.template Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkevents.c gdk/events: Add hold GdkEvent 2022-01-26 22:49:53 +01:00
gdkevents.h gdk/events: Add hold GdkEvent 2022-01-26 22:49:53 +01:00
gdkeventsprivate.h gdk/events: Add hold GdkEvent 2022-01-26 22:49:53 +01:00
gdkframeclock.c gdk: Remove gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkframeclock.h docs: Rework the gdk docs 2021-03-11 16:37:31 +00:00
gdkframeclockidle.c gdk: Remove gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkframeclockidleprivate.h frameclockidle: Rename header so it's private now 2018-03-29 05:02:15 +02:00
gdkframeclockprivate.h gdk/frame-clock: Remove the newly added 'compute-size' phase 2020-12-07 09:46:39 +01:00
gdkframetimings.c docs: Rework the gdk docs 2021-03-11 16:37:31 +00:00
gdkframetimings.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkgl.c gdk: Remove unused gdk_gl_texture_quads() function 2021-10-06 03:44:36 +02:00
gdkglcontext.c gdk: Check OES_vertex_half_float GLES extension 2022-05-07 10:30:38 -04:00
gdkglcontext.h glcontext: Add gdk_gl_context_get_api() 2021-10-08 03:31:07 +02:00
gdkglcontextprivate.h gdk: Check OES_vertex_half_float GLES extension 2022-05-07 10:30:38 -04:00
gdkglobals.c gdk: Remove gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkgltexture.c gdk/gl: handle GL_RGBA/GL_UNSIGNED_NORMALIZED 2022-04-21 19:15:05 -04:00
gdkgltexture.h docs: Rework the gdk docs 2021-03-11 16:37:31 +00:00
gdkgltextureprivate.h texture: Expose subclasses as subclasses 2018-03-18 05:57:07 +01:00
gdkhsla.c gdk_rgba_parse: Support HSL colors 2021-09-10 16:56:42 -05:00
gdkhslaprivate.h gdk: Remove gdk.h include from header 2021-09-24 22:11:57 +02:00
gdkintl.h Remove #ifdef ENABLE_NLS 2022-04-21 19:18:00 -04:00
gdkkeynames.c gdk: Remove gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkkeys.c gdk: Clean up docs syntax 2021-05-22 17:25:26 -04:00
gdkkeys.h Replace "gchar" with "char" 2020-07-25 00:47:36 +02:00
gdkkeysprivate.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gdkkeysyms-update.pl Update the link to the development branch 2022-01-13 14:42:34 +00:00
gdkkeysyms.h Update the link to the development branch 2022-01-13 14:42:34 +00:00
gdkkeyuni.c gdk: Update keyboard symbols from libxkbcommon 2022-01-29 14:31:09 +02:00
gdkmarshalers.list surface: add missing va_marshaller for layout signal 2021-12-07 22:21:19 -08:00
gdkmemoryformat.c gdk: Add a rgb8 → rgba8 conversion macro 2022-03-15 22:05:00 -04:00
gdkmemoryformatprivate.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gdkmemorytexture.c docs: Improve docs for MemoryTexture 2022-01-06 19:30:30 +01:00
gdkmemorytexture.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gdkmemorytextureprivate.h gl: Refactor texture uploading 2021-10-13 14:33:44 +02:00
gdkmonitor.c docs: Reduce redundancy 2021-05-20 20:45:06 -04:00
gdkmonitor.h gdk/monitor: Remove gdk_monitor_work_area and GdkMonitor::work-area 2020-07-29 17:57:30 +02:00
gdkmonitorprivate.h gdk/monitor: Remove gdk_monitor_work_area and GdkMonitor::work-area 2020-07-29 17:57:30 +02:00
gdkpaintable.c gdk: Clean up docs syntax 2021-05-22 17:25:26 -04:00
gdkpaintable.h docs: Fix vfunc references 2021-08-29 04:29:02 +02:00
gdkpango.c Use pango api better 2022-01-22 23:10:53 -05:00
gdkpango.h Replace "gint" with "int" 2020-07-25 00:47:36 +02:00
gdkpipeiostream.c gdk: Clean up docs syntax 2021-05-22 17:25:26 -04:00
gdkpipeiostreamprivate.h clipboard: Implement local fallback clipboard transfers 2017-12-03 05:46:47 +01:00
gdkpixbuf-drawable.c gdk: Rework gdk_pixbuf_get_from_texture() 2021-10-18 12:08:57 +02:00
gdkpixbuf.h Replace "gint" with "int" 2020-07-25 00:47:36 +02:00
gdkpopup.c gdk: add missing nullable annotations 2022-01-01 17:03:10 +01:00
gdkpopup.h docs: Rework the gdk docs 2021-03-11 16:37:31 +00:00
gdkpopuplayout.c docs: More syntax fixes 2021-05-22 21:21:10 -04:00
gdkpopuplayout.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gdkpopupprivate.h Introduce GdkPopup 2020-03-11 19:35:55 -04:00
gdkprofiler.c Port tracing to the sysprof collector api 2020-08-21 10:55:01 -04:00
gdkprofilerprivate.h profiler: allow using gdk profiler functions without braces 2021-02-08 11:29:32 -08:00
gdkrectangle.c gdk: Clean up docs syntax 2021-05-22 17:25:26 -04:00
gdkrectangle.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkrgba.c docs: standard names are CSS names, not X11 names 2021-10-27 22:12:58 +00:00
gdkrgba.h Annotate gdk_rgba_to_string as malloc 2021-09-14 16:38:08 -04:00
gdkrgbaprivate.h rgba: Fix GDK_RGBA() macro to work with alpha 2022-02-08 01:34:19 +01:00
gdkseat.c gdk: Remove gdkinternals.h 2021-09-24 22:50:29 +02:00
gdkseat.h gdkseat: Make gdk_seat_get_tools() public 2020-10-08 16:22:05 +02:00
gdkseatdefault.c gdk/x11: Implement XI2.4 touchpad gesture support 2021-09-27 23:19:33 +03:00
gdkseatdefaultprivate.h Rename master and slave device 2020-06-18 19:22:20 +01:00
gdkseatprivate.h seat: improve api to take into account the tool type 2021-01-07 12:50:48 +01:00
gdksnapshot.c docs: Rework the gdk docs 2021-03-11 16:37:31 +00:00
gdksnapshot.h docs: Rework the gdk docs 2021-03-11 16:37:31 +00:00
gdksnapshotprivate.h snapshot: Turn into GObject 2018-03-18 19:21:33 +01:00
gdksurface.c surface: Use correct display when destroying a surface for depth switch 2022-04-21 19:14:32 -04:00
gdksurface.h gdk: Always get shadow width via GdkToplevelSize 2020-12-07 09:46:39 +01:00
gdksurfaceprivate.h egl: Implement HDR support 2021-10-06 03:44:59 +02:00
gdktexture.c Revert "gir: Annotate GdkTexture constructors for reading from a file/memory/resource to return a GdkMemoryTexture" 2022-01-12 14:11:20 -05:00
gdktexture.h gdk: drop removed method from the header 2021-12-09 20:29:17 +00:00
gdktextureprivate.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gdktoplevel.c g-i: add missing since annotations 2021-11-13 17:50:53 +01:00
gdktoplevel.h g-i: add missing since annotations 2021-11-13 17:50:53 +01:00
gdktoplevellayout.c gdk: Clean up docs syntax 2021-05-22 17:25:26 -04:00
gdktoplevellayout.h docs: Remove duplicate documentation stanzas 2021-03-11 16:37:31 +00:00
gdktoplevelprivate.h gdk/toplevel: Add gdk_toplevel_titlebar_gesture() 2021-07-29 21:39:32 +02:00
gdktoplevelsize.c gdktoplevelsize: Comment out some unused code 2021-05-03 07:44:38 -04:00
gdktoplevelsize.h docs: Remove duplicate documentation stanzas 2021-03-11 16:37:31 +00:00
gdktoplevelsizeprivate.h gdk/toplevelsize: Rename 'margin' to 'shadow' and 'shadow_width' 2020-12-07 20:37:29 +01:00
gdktypes.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gdkversionmacros.h.in docs: Add Since annotations to GDK_VERSION macros 2022-02-14 00:30:50 +01:00
gdkvulkancontext.c docs: Cosmetics 2021-10-18 08:35:54 -04:00
gdkvulkancontext.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkvulkancontextprivate.h gdk: Split enums from types 2021-10-26 20:59:37 +02:00
gen-gdk-gresources-xml.py gdk: Remove unused gdk_gl_texture_quads() function 2021-10-06 03:44:36 +02:00
gen-keyname-table.pl gdk: Make gen-keyname-table.pl work again 2011-10-26 10:36:43 +01:00
keyname-table.h gdk: Translate some more key names 2017-10-09 20:33:14 +02:00
keynames-translate.txt gdk: Translate some more key names 2017-10-09 20:33:14 +02:00
keynames.txt Fix key "Page_Down" identified as "Next" 2013-10-24 18:48:33 -04:00
meson.build gdk: Split enums from types 2021-10-26 20:59:37 +02:00