Gdk – 4.0: macOS Interaction
Description: Reference for Gdk-4.0: macOS Interaction

#### macOS Interaction [src]

## macOS backend-specific functions

The functions in this section are specific to the GDK macOS backend. To use them, you need to include the `<gdk/macos/gdkmacos.h>` header and use the macOS-specific pkg-config `gtk4-macos` file to build your application.

## Checking for the macOS backend

GDK can be built with support for multiple backends, which means you will need to perform both compile time and run time checks if you wish to call backend-specific API; for instance, the code sample below will guard the calls to different backends, and error out on unsupported windowing systems:

    #ifdef GDK_WINDOWING_MACOS
    #include <gdk/macos/gdkmacos.h>
    #endif
    #ifdef GDK_WINDOWING_WAYLAND
    #include <gdk/wayland/gdkwayland.h>
    #endif
    #ifdef GDK_WINDOWING_X11
    #include <gdk/x11/gdkx.h>
    #endif

    #ifdef GDK_WINDOWING_MACOS
      if (GDK_IS_MACOS_DISPLAY (display))
        {
          // make macOS-specific calls here
        }
      else
    #endif
    #ifdef GDK_WINDOWING_WAYLAND
      if (GDK_IS_WAYLAND_DISPLAY (display))
        {
          // make Wayland-specific calls here
        }
      else
    #endif
    #ifdef GDK_WINDOWING_X11
      if (GDK_IS_X11_DISPLAY (display))
        {
          // make X11-specific calls here
        }
      else
    #endif
      g_error ("Unsupported GDK backend");

The compile time check is performed by using the `GDK_WINDOWING_*` pre-processor symbols; there is one defined for each windowing system backend built into GDK. For Wayland, the symbol is `GDK_WINDOWING_MACOS`.

The run time check is performed by looking at the type of the `GdkDisplay` object. For Wayland, the display objects will be of type `GdkMacosDisplay`.