gtk2/gdk
Christian Hergert 9dbf99d91a macos: prototype new GDK backend for macOS
This is fairly substantial rewrite of the GDK backend for quartz and
renamed to macOS to allow for a greenfield implementation.

Many things have come across from the quartz implementation fairly
intact such as the eventloop integration design and discovery of
event windows from the NSEvent.

However much has been changed to fit in with the new GDK design and
how removal of child GdkWindow have been completely eliminated.
Furthermore, the new GdkPopup allows for regular NSWindow to be used
to provide popovers unlike the previous implementation.

The object design more closely follows the ideal for a GDK backend.

Views have been broken out into subclasses so that we can support
multiple GSK renderer paths such as GL and Cairo (and Metal in the
future). However mixed mode GL and Cairo will not be supported. Currently
only the Cairo renderer has been implemented.

A new frame clock implementation using CVDisplayLink provides more
accurate information about when to draw drawing the next frame. Some
testing will need to be done here to understand the power implications
of this.

This implementation has also gained edge snapping for CSD windows. Some
work was also done to ensure that CSD windows have opaque regions
registered with the display server.

     ** This is still very much a work-in-progress **

Some outstanding work that needs to be done:

 - Finish a GL context for macOS and alternate NSView for GL rendering
   (possibly using speciailized CALayer for OpenGL).
 - Input rework to ensure that we don't loose remapping of keys that was
   dropped from GDK during GTK 4 development.
 - Make sure input methods continue to work.
 - Drag-n-Drop is still very much a work in progress
 - High resolution input scrolling needs various work in GDK to land
   first before we can plumb that to NSEvent.
 - gtk/ has a number of things based on GDK_WINDOWING_QUARTZ that need
   to be updated to use the macOS backend.

But this is good enough to start playing with and breaking things which
is what I'd like to see.
2020-07-21 14:45:12 -07:00
..
broadway gdk: Drop GdkGrabOwnership 2020-06-23 23:42:53 +02:00
macos macos: prototype new GDK backend for macOS 2020-07-21 14:45:12 -07:00
resources/glsl Use GLSL version 110 for OpenGL 2 shaders. 2016-11-01 15:42:46 -03:00
wayland gdk/wayland: Add an API to inhibit and uninhibit idle 2020-07-14 21:47:22 +02:00
win32 gdk: Drop GdkGrabOwnership 2020-06-23 23:42:53 +02:00
x11 x11: Don't set up frame sync fence on unsupported compositors 2020-07-14 14:33:12 -04:00
COPYING
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 gdk: Better help for GDK_DEBUG 2020-06-28 13:42:02 -04:00
gdk.c gdk: Better help for GDK_DEBUG 2020-06-28 13:42:02 -04:00
gdk.h Add a GdkDragSurface interface 2020-03-12 14:56:21 -04:00
gdkapplaunchcontext.c docs: Fix several missing references in the documentation 2020-05-11 19:26:20 +02:00
gdkapplaunchcontext.h Add a getter for GdkAppLaunchContext::display 2020-02-24 08:32:34 -05:00
gdkapplaunchcontextprivate.h gdk: Include gio.h in gdktypes.h 2017-12-10 01:09:14 +01:00
gdkarrayimpl.c array: Add a bunch of new features 2020-07-16 18:09:58 +02:00
gdkcairo.c gdk: Remove gdk_cairo_get_clip_rectangle() 2020-02-13 07:36:38 +01:00
gdkcairo.h gdk: Remove gdk_cairo_get_clip_rectangle() 2020-02-13 07:36:38 +01:00
gdkcairocontext.c Fix some g-i annotation warnings 2018-05-01 12:35:32 +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
gdkclipboard.c Fix minor typos 2020-06-18 10:47:16 +03: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: disable file transfer portal on macOS 2020-07-21 14:45:12 -07:00
gdkcontentdeserializer.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkcontentformats.c docs: Fix several missing references in the documentation 2020-05-11 19:26:20 +02:00
gdkcontentformats.h contentformats: Constify some functions 2020-03-02 04:43:56 +01:00
gdkcontentformatsprivate.h gdk: Sanitize GdkContentFormats API 2017-11-20 23:15:11 +01:00
gdkcontentprovider.c docs: Fix several missing references in the documentation 2020-05-11 19:26:20 +02:00
gdkcontentprovider.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkcontentproviderimpl.c Fix minor typos 2020-06-18 10:47:16 +03: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: disable file transfer portal on macOS 2020-07-21 14:45:12 -07:00
gdkcontentserializer.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkcursor.c docs: Small updates 2018-07-13 10:13:00 +02:00
gdkcursor.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkcursorprivate.h gdk: Add gdk_cursor_hash() and gdk_cursor_equal() 2017-11-04 00:07:13 +01:00
gdkdevice.c gdk: Drop gdk_device_get_last_event_surface() 2020-06-24 11:24:04 +02:00
gdkdevice.h docs: Remove ancient version information 2020-06-27 21:46:22 -04:00
gdkdevicepad.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkdevicepad.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkdevicepadprivate.h gdk: Add GdkDevicePad 2016-08-23 21:01:44 +02:00
gdkdeviceprivate.h Rename master and slave device 2020-06-18 19:22:20 +01:00
gdkdevicetool.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkdevicetool.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkdevicetoolprivate.h gdk: Pass hardware ID on gdk_device_tool_new() 2016-08-23 21:01:44 +02:00
gdkdisplay.c gdk: Drop GdkGrabOwnership 2020-06-23 23:42:53 +02:00
gdkdisplay.h Bring back gdk_display_put_event 2020-05-29 09:26:50 -04:00
gdkdisplaymanager.c macos: prototype new GDK backend for macOS 2020-07-21 14:45:12 -07:00
gdkdisplaymanager.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkdisplaymanagerprivate.h
gdkdisplayprivate.h gdk: Drop GdkGrabOwnership 2020-06-23 23:42:53 +02:00
gdkdrag.c docs: Fix several missing references in the documentation 2020-05-11 19:26:20 +02:00
gdkdrag.h gdk: Make gdk_drag_begin take doubles 2020-05-17 17:51:03 -04:00
gdkdragprivate.h Strip const from GdkEvent 2020-02-21 00:51:02 -05:00
gdkdragsurface.c docs: Remove unnecessary SECTION 2020-05-12 18:44:21 +01: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 docs: Fix several missing references in the documentation 2020-05-11 19:26:20 +02:00
gdkdrawcontext.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkdrawcontextprivate.h drawcontext: Only pass the region that matters 2018-04-24 23:16:58 +02:00
gdkdrop.c docs: Fix several missing references in the documentation 2020-05-11 19:26:20 +02:00
gdkdrop.h drop: Remove unused convenience APIs 2020-03-02 04:43:56 +01:00
gdkdropprivate.h gdk: Make gdk_drop_status() take preferred action 2020-03-02 04:43:56 +01:00
gdkenumtypes.c.template Use g_once for all the mkenums template files 2019-05-21 10:32:08 -05:00
gdkenumtypes.h.template Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkevents.c gdk: Small documentation fixes 2020-06-28 12:24:03 -04:00
gdkevents.h gdk: Add gdk_event_get_seat() 2020-06-23 23:42:53 +02:00
gdkeventsprivate.h Keep scroll history 2020-06-09 13:43:03 -04:00
gdkframeclock.c frame-clock: New approach in smoothing frame clock 2020-05-28 15:13:07 +02:00
gdkframeclock.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkframeclockidle.c frame clock: fix scheduling 2020-06-15 08:54:18 +02:00
gdkframeclockidleprivate.h frameclockidle: Rename header so it's private now 2018-03-29 05:02:15 +02:00
gdkframeclockprivate.h frame-clock: New approach in smoothing frame clock 2020-05-28 15:13:07 +02:00
gdkframetimings.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkframetimings.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkgl.c Switch to GL_ARB_framebuffer_object 2020-06-12 15:08:44 +02:00
gdkglcontext.c Fixed OpenGL extension detection for extensions promoted to OpenGL core. 2020-02-14 05:41:01 +11:00
gdkglcontext.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkglcontextprivate.h GdkGLContext: Add internal functions for KHR_DEBUG calls 2019-04-25 11:35:00 +02:00
gdkglobals.c gdk: Reorganize env vars 2018-01-14 17:05:04 -05:00
gdkgltexture.c gl texture: fix a typo 2019-01-23 22:33:44 -05:00
gdkgltexture.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkgltextureprivate.h texture: Expose subclasses as subclasses 2018-03-18 05:57:07 +01:00
gdkinternals.h gdk: Drop GdkGrabOwnership 2020-06-23 23:42:53 +02:00
gdkintl.h
gdkkeynames.c
gdkkeys.c Fix minor typos 2020-06-18 10:47:16 +03:00
gdkkeys.h gdk: Make GdkKeymap a private api 2020-04-06 16:32:03 -04:00
gdkkeysprivate.h keymap: Cache key info 2020-04-30 13:05:52 -04:00
gdkkeysyms-update.pl docs: Fix GTK links and locations 2019-02-06 10:39:27 +01:00
gdkkeysyms.h docs: Fix GTK links and locations 2019-02-06 10:39:27 +01:00
gdkkeyuni.c gdk: Clarify the docs of gdk_keyval_to_unicode 2020-06-22 13:24:34 -04:00
gdkmarshalers.list surface: Add marshallers for new events 2019-05-28 19:19:24 +02:00
gdkmemorytexture.c Document GdkMemoryTexture 2018-04-28 16:22:29 -04:00
gdkmemorytexture.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkmemorytextureprivate.h texture: Expose subclasses as subclasses 2018-03-18 05:57:07 +01:00
gdkmonitor.c display: Remove unneeded getters 2020-05-17 07:32:37 +02:00
gdkmonitor.h Remove primary monitor api 2020-01-30 21:33:37 +01:00
gdkmonitorprivate.h monitor: Add gdk_monitor_set_geometry() 2020-05-17 07:10:34 +02:00
gdkpaintable.c xxx: Add a hack to make paintables transform to/from objects 2020-05-30 19:26:46 -04:00
gdkpaintable.h docs: Fix several missing references in the documentation 2020-05-11 19:26:20 +02:00
gdkpango.c GdkSurface: Rename lots of stuff from window->surface 2018-03-20 15:14:10 +01:00
gdkpango.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkpipeiostream.c gdk: Remove unnecessary assignments 2018-05-06 02:10:20 +02:00
gdkpipeiostreamprivate.h clipboard: Implement local fallback clipboard transfers 2017-12-03 05:46:47 +01:00
gdkpixbuf-drawable.c pixbuf: Add a missing return value transfer annotation 2019-09-13 11:07:56 +02:00
gdkpixbuf.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkpopup.c docs: Fix several missing references in the documentation 2020-05-11 19:26:20 +02:00
gdkpopup.h surface: Implement GdkPopup 2020-03-11 19:35:55 -04:00
gdkpopuplayout.c popuplayout: Add docs 2020-03-11 19:35:55 -04:00
gdkpopuplayout.h gdk: Documentation fixups 2020-06-05 20:59:51 -04:00
gdkpopupprivate.h Introduce GdkPopup 2020-03-11 19:35:55 -04:00
gdkprofiler.c profiler: Add G_GNUC_PRINTF markers to silence warnings 2020-02-12 13:36:04 +01:00
gdkprofilerprivate.h profiler: Add _end_mark() version of _add_mark() 2020-02-12 11:25:34 +01:00
gdkrectangle.c The big versioning cleanup 2018-02-06 01:16:32 -05:00
gdkrectangle.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkrgba.c GdkRGBA: Fix typo in documentation 2020-07-17 05:49:11 +02:00
gdkrgba.h Add pure and const annotations to various functions 2020-01-26 18:21:07 +01:00
gdkrgbaprivate.h build: Add more useful warning flags 2020-03-05 07:56:28 +01:00
gdkseat.c gdk: Drop gdk_seat_get_logical_pointers() 2020-06-23 23:42:53 +02:00
gdkseat.h gdk: Drop gdk_seat_get_logical_pointers() 2020-06-23 23:42:53 +02:00
gdkseatdefault.c gdk: Drop gdk_seat_get_logical_pointers() 2020-06-23 23:42:53 +02:00
gdkseatdefaultprivate.h Rename master and slave device 2020-06-18 19:22:20 +01:00
gdkseatprivate.h gdk: Drop gdk_seat_get_logical_pointers() 2020-06-23 23:42:53 +02:00
gdksnapshot.c snapshot: Turn into GObject 2018-03-18 19:21:33 +01:00
gdksnapshot.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdksnapshotprivate.h snapshot: Turn into GObject 2018-03-18 19:21:33 +01:00
gdksurface.c gdk: Depend less on gdk_event_get_device() 2020-06-23 23:42:53 +02:00
gdksurface.h gdk: Drop supports_multidevice API 2020-06-23 23:42:53 +02:00
gdksurfaceprivate.h gdk: Drop supports_multidevice API 2020-06-23 23:42:53 +02:00
gdktexture.c Fix minor typos 2020-06-18 10:47:16 +03:00
gdktexture.h Add pure and const annotations to various functions 2020-01-26 18:21:07 +01:00
gdktextureprivate.h texture: Change download vfunc 2018-03-12 17:21:45 +01:00
gdktoplevel.c Fix minor typos 2020-05-28 11:00:03 +03:00
gdktoplevel.h gdk: Add gdk_toplevel_begin_move/resize 2020-05-17 12:41:16 -04:00
gdktoplevellayout.c surface: Document coordinate systems a bit 2020-04-13 09:29:11 -04:00
gdktoplevellayout.h gdk: Documentation fixups 2020-06-05 20:59:51 -04:00
gdktoplevelprivate.h gdk: Move the begin_move/resize_drag vfuncs around 2020-05-17 14:15:06 -04:00
gdktypes.h gdk: Add scroll delta x/y as device axes 2020-06-09 13:43:03 -04:00
gdkversionmacros.h.in Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkvulkancontext.c Fix minor typos 2020-05-28 11:00:03 +03:00
gdkvulkancontext.h Use a single compilation symbol 2019-11-27 13:33:43 +00:00
gdkvulkancontextprivate.h vulkan: Fix release builds 2018-01-21 15:23:17 +01:00
gen-gdk-gresources-xml.py gdk: Include a default cursor as resource 2020-04-26 14:41:52 -04:00
gen-keyname-table.pl
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
meson.build macos: prototype new GDK backend for macOS 2020-07-21 14:45:12 -07:00