diff --git a/vendor/x11/xlib/xlib_const.odin b/vendor/x11/xlib/xlib_const.odin index a37cee64c..876df9d4b 100644 --- a/vendor/x11/xlib/xlib_const.odin +++ b/vendor/x11/xlib/xlib_const.odin @@ -17,6 +17,18 @@ AllTemporary :: 0 CurrentTime :: 0 NoSymbol :: 0 +XA_WM_CLASS :: Atom(67) +XA_WM_CLIENT_MACHINE :: Atom(36) +XA_WM_COMMAND :: Atom(34) +XA_WM_HINTS :: Atom(35) +XA_WM_ICON_NAME :: Atom(37) +XA_WM_ICON_SIZE :: Atom(38) +XA_WM_NAME :: Atom(39) +XA_WM_NORMAL_HINTS :: Atom(40) +XA_WM_SIZE_HINTS :: Atom(41) +XA_WM_TRANSIENT_FOR :: Atom(68) +XA_WM_ZOOM_HINTS :: Atom(42) + // NOTE(flysand): Some implementations return Status as enum, other return it // as an integer. I will make it a status. Status :: enum i32 { @@ -569,3 +581,45 @@ KeyboardLedMode :: enum i32 { LedModeOff = 0, LedModeOn = 1, } + +WMHints :: bit_set[WMHintsBits; uint] +WMHintsBits :: enum { + InputHint = 0, + StateHint = 1, + IconPixmapHint = 2, + IconWindowHint = 3, + IconPositionHint = 4, + IconMaskHint = 5, + WindowGroupHint = 6, + XUrgencyHint = 8, +} + +WMHintState :: enum i32 { + WithdrawnState = 0, + NormalState = 1, + IconicState = 3, +} + +AllHints :: WMHints{ + .InputHint, + .StateHint, + .IconPixmapHint, + .IconWindowHint, + .IconPositionHint, + .IconMaskHint, + .WindowGroupHint, +} + +SizeHints :: bit_set[SizeHintsBits; uint] +SizeHintsBits :: enum { + USPosition = 0, + USSize = 1, + PPosition = 2, + PSize = 3, + PMinSize = 4, + PMaxSize = 5, + PResizeInc = 6, + PAspect = 7, + PBaseSize = 8, + PWinGravity = 9, +} diff --git a/vendor/x11/xlib/xlib_procs.odin b/vendor/x11/xlib/xlib_procs.odin index 82b32594b..d359e48c0 100644 --- a/vendor/x11/xlib/xlib_procs.odin +++ b/vendor/x11/xlib/xlib_procs.odin @@ -1546,4 +1546,163 @@ foreign xlib { XFreeModifiermap :: proc(modmap: ^XModifierKeymap) --- XSetModifierMapping :: proc(display: ^Display, modmap: ^XModifierKeymap) -> i32 --- XGetModifierMapping :: proc(display: ^Display) -> ^XModifierKeymap --- + // Manipulating top-level windows + XIconifyWindow :: proc( + dipslay: ^Display, + window: Window, + screen_no: i32, + ) -> Status --- + XWithdrawWindow :: proc( + dipslay: ^Display, + window: Window, + screen_no: i32, + ) -> Status --- + XReconfigureWMWindow :: proc( + dipslay: ^Display, + window: Window, + screen_no: i32, + mask: WindowChangesMask, + changes: ^XWindowChanges, + ) -> Status --- + // Getting and setting the WM_NAME property + XSetWMName :: proc( + display: ^Display, + window: Window, + prop: ^XTextProperty + ) --- + XGetWMName :: proc( + display: ^Display, + window: Window, + prop: ^XTextProperty, + ) -> Status --- + XStoreName :: proc( + display: ^Display, + window: Window, + name: cstring + ) --- + XFetchName :: proc( + display: ^Display, + window: Window, + name: ^cstring + ) -> Status --- + XSetWMIconName :: proc( + display: ^Display, + window: Window, + prop: ^XTextProperty + ) --- + XGetWMIconName :: proc( + display: ^Display, + window: Window, + prop: ^XTextProperty, + ) -> Status --- + XSetIconName :: proc( + display: ^Display, + window: Window, + name: cstring, + ) --- + XGetIconName :: proc( + display: ^Display, + window: Window, + prop: ^cstring, + ) -> Status --- + // Setting and reading WM_HINTS property + XAllocWMHints :: proc() -> ^XWMHints --- + XSetWMHints :: proc( + display: ^Display, + window: Window, + hints: ^XWMHints, + ) --- + XGetWMHints :: proc( + display: ^Display, + window: Window, + ) -> ^XWMHints --- + // Setting and reading MW_NORMAL_HINTS property + XAllocSizeHints :: proc() -> ^XSizeHints --- + XSetWMNormalHints :: proc( + display: ^Display, + window: Window, + hints: ^XSizeHints, + ) --- + XGetWMNormalHints :: proc( + display: ^Display, + window: Window, + hints: ^XSizeHints, + flags: ^SizeHints, + ) -> Status --- + XSetWMSizeHints :: proc( + display: ^Display, + window: Window, + hints: ^XSizeHints, + prop: Atom, + ) --- + XGetWMSizeHints :: proc( + display: ^Display, + window: Window, + hints: ^XSizeHints, + masks: ^SizeHints, + prop: Atom, + ) -> Status --- + // Setting and reading the WM_CLASS property + XAllocClassHint :: proc() -> ^XClassHint --- + XSetClassHint :: proc( + display: ^Display, + window: Window, + hint: ^XClassHint, + ) --- + XGetClassHint :: proc( + display: ^Display, + window: Window, + hint: ^XClassHint, + ) -> Status --- + // Setting and reading WM_TRANSIENT_FOR property + XSetTransientForHint :: proc( + display: ^Display, + window: Window, + prop_window: Window, + ) --- + XGetTransientForHint :: proc( + display: ^Display, + window: Window, + prop_window: ^Window, + ) -> Status --- + // Setting and reading the WM_PROTOCOLS property + XSetWMProtocols :: proc( + display: ^Display, + window: Window, + protocols: [^]Atom, + count: i32, + ) -> Status --- + XGetWMProtocols :: proc( + display: ^Display, + window: Window, + protocols: ^[^]Atom, + count: ^i32 + ) -> Status --- + // Setting and reading the WM_COLORMAP_WINDOWS property + XSetWMColormapWindows :: proc( + display: ^Display, + window: Window, + colormap_windows: [^]Window, + count: i32, + ) -> Status --- + XGetWMColormapWindows :: proc( + display: ^Display, + window: Window, + colormap_windows: ^[^]Window, + count: ^i32, + ) -> Status --- + // Setting and reading the WM_ICON_SIZE_PROPERTY + XAllocIconSize :: proc() -> ^XIconSize --- + XSetIconSizes :: proc( + display: ^Display, + window: Window, + size_list: [^]XIconSize, + count: i32, + ) --- + XGetIconSizes :: proc( + display: ^Display, + window: Window, + size_list: ^[^]XIconSize, + count: ^i32, + ) -> Status --- } diff --git a/vendor/x11/xlib/xlib_types.odin b/vendor/x11/xlib/xlib_types.odin index 3cee181c8..9122341f3 100644 --- a/vendor/x11/xlib/xlib_types.odin +++ b/vendor/x11/xlib/xlib_types.odin @@ -1162,7 +1162,7 @@ XcmsFunctionSet :: struct { /* ---- X11/Xutil.h --------------------------------------------------------*/ XSizeHints :: struct { - flags: int, + flags: SizeHints, x: i32, y: i32, width: i32, @@ -1181,9 +1181,9 @@ XSizeHints :: struct { } XWMHints :: struct { - flags: int, - input: i32, - initial_state: i32, + flags: WMHints, + input: b32, + initial_state: WMHintState, icon_pixmap: Pixmap, icon_window: Window, icon_x: i32,