DVUI

initialize

Parameters

#
self:*AccessKit
*AccessKit

Source

Implementation

#
pub fn initialize(self: *AccessKit) void {
    const window: *dvui.Window = @alignCast(@fieldParentPtr("accesskit", self));

    if (builtin.os.tag == .windows) {
        if (dvui.backend.kind == .dx11) {
            self.adapter = c.accesskit_windows_adapter_new(
                windowsHWND(window),
                // If the window currently has focus.
                // TODO: We currently assume we always have focus as this initialization is performed
                //       at program startup so we are most likely focused. This should be verified in some way
                true,
                doAction,
                self,
            ) orelse @panic("null");
        } else {
            self.adapter = c.accesskit_windows_subclassing_adapter_new(
                windowsHWND(window),
                initialTreeUpdate,
                self,
                doAction,
                self,
            ) orelse @panic("null");
        }
    } else if (builtin.os.tag.isDarwin()) {
        // TODO: This results in a null pointer unwrap. I assume the window class is wrong?
        //ak.accesskit_macos_add_focus_forwarder_to_window_class("SDLWindow");
        self.adapter = c.accesskit_macos_subclassing_adapter_for_window(macOSWinPtr(window), initialTreeUpdate, self, doAction, self) orelse @panic("null");
    } else if (builtin.os.tag == .linux) {
        self.adapter = c.accesskit_unix_adapter_new(initialTreeUpdate, self, doAction, self, deactivateAccessibility, self) orelse @panic("null");
    } else {
        @panic("Accesskit initialization failed: no supported adapter found");
    }

    log.info("initialized successfully", .{});
}