123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- // SPDX-License-Identifier: Unlicense OR MIT
- //go:build (linux && !android) || freebsd || openbsd
- // +build linux,!android freebsd openbsd
- package app
- import (
- "errors"
- "unsafe"
- "gioui.org/io/pointer"
- )
- type X11ViewEvent struct {
- // Display is a pointer to the X11 Display created by XOpenDisplay.
- Display unsafe.Pointer
- // Window is the X11 window ID as returned by XCreateWindow.
- Window uintptr
- }
- func (X11ViewEvent) implementsViewEvent() {}
- func (X11ViewEvent) ImplementsEvent() {}
- func (x X11ViewEvent) Valid() bool {
- return x != (X11ViewEvent{})
- }
- type WaylandViewEvent struct {
- // Display is the *wl_display returned by wl_display_connect.
- Display unsafe.Pointer
- // Surface is the *wl_surface returned by wl_compositor_create_surface.
- Surface unsafe.Pointer
- }
- func (WaylandViewEvent) implementsViewEvent() {}
- func (WaylandViewEvent) ImplementsEvent() {}
- func (w WaylandViewEvent) Valid() bool {
- return w != (WaylandViewEvent{})
- }
- func osMain() {
- select {}
- }
- type windowDriver func(*callbacks, []Option) error
- // Instead of creating files with build tags for each combination of wayland +/- x11
- // let each driver initialize these variables with their own version of createWindow.
- var wlDriver, x11Driver windowDriver
- func newWindow(window *callbacks, options []Option) {
- var errFirst error
- for _, d := range []windowDriver{wlDriver, x11Driver} {
- if d == nil {
- continue
- }
- err := d(window, options)
- if err == nil {
- return
- }
- if errFirst == nil {
- errFirst = err
- }
- }
- if errFirst == nil {
- errFirst = errors.New("app: no window driver available")
- }
- window.ProcessEvent(DestroyEvent{Err: errFirst})
- }
- // xCursor contains mapping from pointer.Cursor to XCursor.
- var xCursor = [...]string{
- pointer.CursorDefault: "left_ptr",
- pointer.CursorNone: "",
- pointer.CursorText: "xterm",
- pointer.CursorVerticalText: "vertical-text",
- pointer.CursorPointer: "hand2",
- pointer.CursorCrosshair: "crosshair",
- pointer.CursorAllScroll: "fleur",
- pointer.CursorColResize: "sb_h_double_arrow",
- pointer.CursorRowResize: "sb_v_double_arrow",
- pointer.CursorGrab: "hand1",
- pointer.CursorGrabbing: "move",
- pointer.CursorNotAllowed: "crossed_circle",
- pointer.CursorWait: "watch",
- pointer.CursorProgress: "left_ptr_watch",
- pointer.CursorNorthWestResize: "top_left_corner",
- pointer.CursorNorthEastResize: "top_right_corner",
- pointer.CursorSouthWestResize: "bottom_left_corner",
- pointer.CursorSouthEastResize: "bottom_right_corner",
- pointer.CursorNorthSouthResize: "sb_v_double_arrow",
- pointer.CursorEastWestResize: "sb_h_double_arrow",
- pointer.CursorWestResize: "left_side",
- pointer.CursorEastResize: "right_side",
- pointer.CursorNorthResize: "top_side",
- pointer.CursorSouthResize: "bottom_side",
- pointer.CursorNorthEastSouthWestResize: "fd_double_arrow",
- pointer.CursorNorthWestSouthEastResize: "bd_double_arrow",
- }
|