aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2023-01-11X11: Make puglSendEvent() gracefully handle unrealized viewsDavid Robillard1-0/+3
2023-01-11Reduce duplicated codeDavid Robillard1-11/+1
2023-01-11X11: Avoid potentially unnecessary allocation in Vulkan backendDavid Robillard1-8/+12
2023-01-11X11: Fix positioning of top-level windows with decorationsDavid Robillard2-8/+68
2023-01-11Remove cached frame from viewDavid Robillard10-214/+364
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 Robillard3-3/+3
2023-01-11Center windows on their transient parent where possibleDavid Robillard3-16/+56
This is only really relevant in practice on MacOS and Windows. On X11, the window manager places new windows where it pleases.
2023-01-10Add PUGL_CURSOR_ALL_SCROLLDavid Robillard3-0/+4
2023-01-10Fix inconsistent naming conventionDavid Robillard1-5/+5
2023-01-10Windows: Make puglGetScaleFactor always return a reasonable valueDavid Robillard1-4/+24
This guesses the likely scale factor when the view hasn't been realized (and so there's no real window to get information for). It may still be wrong for multiple display systems, but will always return some scale factor that "exists" on the system, and should always be correct when there's only one display.
2023-01-08Prepare OpenGL context flags for OpenGL ES supportDavid Robillard4-11/+17
2023-01-08Windows: Fix OpenGL profile hint interpretationDavid Robillard1-2/+2
2023-01-08Use ensureHint pattern everywhereDavid Robillard6-60/+48
2023-01-08Add PUGL_SAMPLE_BUFFERS hintDavid Robillard4-14/+24
Towards a more direct and explicit mapping to platform hints, and more consistent behaviour across platforms. OpenGL applications are generally expected to be explicit about hints like this.
2023-01-08Add missing default hintDavid Robillard1-0/+1
2023-01-08Gracefully handle out of range hintsDavid Robillard1-3/+11
2023-01-08Remove branch cloneDavid Robillard1-2/+0
2023-01-08X11: Add support for _NET_WM_PING protocolDavid Robillard2-14/+56
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 Robillard3-8/+43
2023-01-07Replace map/unmap events with more expressive configure eventsDavid Robillard8-48/+36
2023-01-07Add support for special view types and stylesDavid Robillard7-106/+516
2023-01-07Support closing views by sending a close eventDavid Robillard4-4/+37
2023-01-07Rename create/destroy events to realize/unrealizeDavid Robillard5-34/+29
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 Robillard5-19/+46
2023-01-06MacOS: Fix repeated realize/unrealizeDavid Robillard1-1/+0
2023-01-04Add puglUnrealize()David Robillard4-23/+114
2023-01-04Clean up licensing metadataDavid Robillard1-0/+3
2023-01-02Move attributes to a separate headerDavid Robillard2-0/+2
2023-01-02X11: Create Cairo drawing surface with precisely the needed sizeDavid Robillard1-12/+11
This decouples drawing from the view frame, which can be out of sync with the drawing that is currently happening.
2023-01-02X11: Factor out getCurrentConfigurationDavid Robillard1-11/+18
2023-01-02Ensure that views have an event handler setDavid Robillard1-0/+5
Otherwise, there will be crashes in the implementation.
2023-01-02Factor out common realize checks and initializationDavid Robillard5-44/+49
2023-01-02Fix PUGL_NUM_CURSORSDavid Robillard1-3/+1
2023-01-02Remove dead codeDavid Robillard1-5/+0
2022-12-27Fix inconsistent initial window positioning across platformsDavid Robillard3-9/+17
2022-12-27Set transient parent when views are realized if necessaryDavid Robillard3-1/+8
2022-12-27Fail to set transient parent of views with a parent windowDavid Robillard2-0/+8
2022-12-27MacOS: Fix timestamps on systems with different clock ratesDavid Robillard2-5/+14
This seems to be a thing at least on MacOS 12 on M1.
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 cursorsfalkTX3-9/+30
2022-10-30Add malloc attributes to allocating functionsDavid Robillard1-0/+2
These inform the compiler that the returned value doesn't alias with anything. Also somewhat handy as pseudo-documentation.
2022-10-30Windows: Fix missing field initializers when building as C++falkTX1-4/+14
2022-10-07Suppress MinGW warningsDavid Robillard1-1/+1
2022-10-07Use uppercase integer literal suffixesDavid Robillard6-46/+46
2022-10-07Simplify clang-tidy configurationDavid Robillard1-8/+1
2022-10-07Suppress new warnings in clang-tidy 14David Robillard1-0/+1
2022-07-16Fix missing field initializers when building as C++falkTX1-3/+3
2022-06-28Simplify clang-tidy configurationDavid Robillard1-1/+0
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 Robillard3-3/+3
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".