aboutsummaryrefslogtreecommitdiffstats
path: root/src/x11.c
AgeCommit message (Collapse)AuthorFilesLines
2023-05-12X11: Use the root provided by XGetWindowAttributes()David Robillard1-5/+4
2023-05-12X11: Avoid deferring empty exposuresDavid Robillard1-10/+13
2023-05-12X11: Use available X extensions by defaultDavid Robillard1-12/+36
2023-05-03Fix mismatched types in ternary expressionsDavid Robillard1-5/+6
2023-05-03Fix implicit sign conversionsDavid Robillard1-3/+3
2023-02-18Use XSetWMNormalHints instead of XSetNormalHintssjaehn1-1/+1
2023-02-15Fix crash on views with no title setDavid Robillard1-9/+11
2023-02-10Factor out macrosDavid Robillard1-8/+1
2023-01-14Add general string hint interfaceDavid Robillard1-10/+20
This replaces the window title and class name APIs with a more general one that can be easily extended to other things, like icon names, more detailed application hints, and so on.
2023-01-11Guard against required hints explicitly being set to PUGL_DONT_CAREDavid Robillard1-0/+5
2023-01-11Clean up puglRealize() implementationsDavid Robillard1-10/+4
2023-01-11X11: Fix puglPostRedisplay() outside of event handlersDavid Robillard1-2/+4
2023-01-11X11: Make puglSendEvent() gracefully handle unrealized viewsDavid Robillard1-0/+3
2023-01-11Reduce duplicated codeDavid Robillard1-11/+1
2023-01-11X11: Fix positioning of top-level windows with decorationsDavid Robillard1-8/+65
2023-01-11Remove cached frame from viewDavid Robillard1-41/+89
This was just a source of ambiguity and bugs, since it represented different things at different times and could become stale. Redundant data is always trouble, so eliminate it, leaving just two positions/sizes: the defaults (used when the view is not yet realized), and the last configuration.
2023-01-11Fix checks for invalid view positionsDavid Robillard1-1/+1
2023-01-10Add PUGL_CURSOR_ALL_SCROLLDavid Robillard1-0/+1
2023-01-10Fix inconsistent naming conventionDavid Robillard1-5/+5
2023-01-08Remove branch cloneDavid Robillard1-2/+0
2023-01-08X11: Add support for _NET_WM_PING protocolDavid Robillard1-14/+53
This is mainly used to allow the window manager to close locked or otherwise misbehaving windows. The PID and hostname properties are both required to properly support this, but may also be used for other things.
2023-01-08Add support for raising windowsDavid Robillard1-2/+13
2023-01-07Replace map/unmap events with more expressive configure eventsDavid Robillard1-17/+21
2023-01-07Add support for special view types and stylesDavid Robillard1-51/+185
2023-01-07Support closing views by sending a close eventDavid Robillard1-4/+26
2023-01-07Rename create/destroy events to realize/unrealizeDavid Robillard1-4/+3
As evidence that this was confusing, the documentation for these was an outright lie, and I've burned quite a bit of time in the past few days trying to rework things based around that flawed understanding. These names make it clear what these events actually are. If we need actual create/destroy events with a broader scope, they'll have to be added, but I suspect those aren't actually useful anyway.
2023-01-07Replace visible flag with a more descriptive view "stage"David Robillard1-4/+4
2023-01-04Add puglUnrealize()David Robillard1-16/+50
2023-01-02X11: Factor out getCurrentConfigurationDavid Robillard1-11/+18
2023-01-02Factor out common realize checks and initializationDavid Robillard1-14/+4
2023-01-02Fix PUGL_NUM_CURSORSDavid Robillard1-3/+1
2022-12-27Fix inconsistent initial window positioning across platformsDavid Robillard1-1/+1
2022-12-27Set transient parent when views are realized if necessaryDavid Robillard1-1/+1
2022-12-27Fail to set transient parent of views with a parent windowDavid Robillard1-0/+4
2022-12-24Fix weird/inconsistent control flow in puglSetSize()David Robillard1-3/+2
I'm not really sure about directly updating the frame like this - or whether these fields should even exist in the first place (it's questionable whether the view is "really" the new size until the configure process is complete) - but regardless, the same pattern should probably be used for both size and position. "Probably", because touching anything like this tends to break some situation or another somewhere, but such is life.
2022-12-24Add diagonal cursorsfalkTX1-2/+4
2022-10-07Use uppercase integer literal suffixesDavid Robillard1-10/+10
2022-07-16Fix missing field initializers when building as C++falkTX1-3/+3
2022-06-17Call XrmInitialize()David Robillard1-0/+1
This must be called before any other Xrm functions are used.
2022-06-08Use consistent terminology for native viewsDavid Robillard1-1/+1
On MacOS in particular, views and windows are entirely different concepts, so confusing them... confuses things. This was the last holdover in the API that used the old "native window".
2022-06-08Separate platform.h from internal.hDavid Robillard1-0/+1
This makes the internal header structure match the "kinds" of definition inside Pugl: common implementations of public API, things available internally to platform implementations, and things the platform must define.
2022-06-08Separate private and public function implementationsDavid Robillard1-1/+1
2022-06-08Fix potential null pointer dereferenceDavid Robillard1-5/+5
According to clang-tidy anyway, I'm not seeing it.
2022-06-07Remove unnecessary forward-compatibility codeDavid Robillard1-4/+0
2022-06-07X11: Simplify dispatchX11Events()David Robillard1-31/+44
2022-06-07X11: Flush before returning from puglRealize()David Robillard1-0/+8
This avoids bugs in plugins, because otherwise it's possible that size hints are not available when the host embeds the UI.
2022-06-03X11: Fix crash when input context is unavailable due to localesPace Willisson1-11/+17
Calling X*ICFocus on NULL segfaults. This can happen if XCreateIC failed, for example due to missing locales on minimal Docker images.
2022-05-28Omit cursor_names if XCursor is not availableDavid Robillard1-0/+2
This avoids a Wunused-const-variable warning with GCC.
2022-05-23Add rich clipboard supportDavid Robillard1-84/+286
This implements a more powerful protocol for working with clipboards, which supports datatype negotiation, and fixes various issues by mapping more directly to how things work on X11.
2022-05-21Add puglGetScaleFactor()David Robillard1-1/+36