aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
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".
2022-06-08Consolidate common deprecated API implementationDavid Robillard1-28/+0
2022-06-08Separate platform.h from internal.hDavid Robillard7-34/+58
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 Robillard11-249/+261
2022-06-08Fix potential null pointer dereferenceDavid Robillard1-5/+5
According to clang-tidy anyway, I'm not seeing it.
2022-06-07Use a consistent scheme for enum sizesDavid Robillard3-4/+4
2022-06-07Remove unnecessary forward-compatibility codeDavid Robillard2-11/+3
2022-06-07Make puglRealize() always gracefully fail with a bad configurationDavid Robillard1-0/+5
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 Robillard8-178/+570
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-22Fix whitespaceDavid Robillard1-1/+1
2022-05-21Add puglGetScaleFactor()David Robillard5-4/+90
2022-05-21Windows: Send configure events when frame moves or resizesDavid Robillard1-0/+3
2022-05-21Add puglSetPosition() and puglSetSize()David Robillard3-24/+193
These are redundant with puglSetFrame in a sense, but allow setting the size of a view without the position, or vice-versa. This API also maps more nicely to Wayland, where applications can not position themselves (but can resize).
2022-05-21Use consistent integer types for view positions and sizesDavid Robillard4-48/+55
Actual window sizes and positions fit easily in a 16-bit integer. So, we use that in "representation contexts" like events. This makes structures smaller, and allows the values to be converted to float, double, or integer without casting (since any int16_t or uint16_t value can fit in them without loss). Setter APIs use native integers for convenience, to avoid casting hassles when doing arithmetic. Ranges are checked at runtime.
2022-05-21Add a uniform API for setting size hintsDavid Robillard5-181/+145
This collapses many functions into one, which makes the API more easily extensible and reduces code size.
2022-05-21X11: Remove redundant display memberDavid Robillard4-47/+52
2022-05-21Rename PUGL_UNSUPPORTED_TYPE to be more genericDavid Robillard4-5/+5
2022-05-21MacOS: Specify maximum size constraint on draw viewDavid Robillard1-15/+37
I am not sure why the minimum was only specified before, but it seems like an oversight.
2022-05-21X11: Use cursor themesDavid Robillard2-29/+42
This changes to getting cursors by name from the cursor theme, which makes the cursor match the ones used in modern desktop environments. As far as I can tell, there is no real standard for names, these ones seem to work for me in GNOME, KDE, and Xfce. I am not sure about the compatibility concerns here, but X11 without Xcursor themes strikes me as either too esoteric or too ancient to worry about, especially since cursor switching isn't critical functionality anyway.