Age | Commit message (Collapse) | Author | Files | Lines |
|
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.
|
|
|
|
This becomes important when the documentation is included in larger projects.
|
|
|
|
|
|
|
|
|
|
These inform the compiler that the returned value doesn't alias with anything.
Also somewhat handy as pseudo-documentation.
|
|
|
|
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".
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
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).
|
|
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.
|
|
This collapses many functions into one, which makes the API more easily
extensible and reduces code size.
|
|
|
|
I suspect that using the same configuration across both C and C++ is starting
to wear a bit thin, but this will do for now.
|
|
See https://reuse.software/ for details.
|
|
|
|
There's no universal consensus on how buttons are numbered. Left, right,
middle as 0, 1, 2 seems to be the most common convention on modern vaguely
similar libraries, so I've gone with that.
The switch to zero-based indices will obviously break all current client code.
Particularly since now is the time to finish any breaking changes before a
stable release, I think that is better than only changing the middle and right
numbers, which would likely go unnoticed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This is really a mistake in user code, but things shouldn't crash in general.
So, this commit fixes the crash and adds some documentation so that developers
hopefully don't try to grab focus before it makes sense.
The case that was previously a crash will now gracefully fail, that is, the
focus will not be (and can not be) grabbed.
|
|
Aside from reading more naturally, this avoids clashes with types that are not
events, like PuglEventFlags. This is also more consistent with the C++
bindings, where "EventExpose" would be quite strange, for example.
Apologies for the noise. Aliases to the old names will be preserved in the
deprecated API like other things for a short while.
|
|
|
|
|
|
|
|
|
|
|
|
Just a convenience macro to make declarations a little more readable.
|
|
|
|
|
|
|
|
|
|
We'll need identifiers for these to refer to them in the Sphinx documentation.
|
|
This will not be used in Sphinx.
|
|
|
|
These will not be used in the Sphinx documentation, and most were
self-explanatory and only there to make the Doxygen index look nice anyway.
Where there was actually useful information, it has been preserved as regular
comments.
|
|
This causes some annoying typesetting issues it's simpler to just avoid.
|
|
These names were confusing because a view is not necessarily a window. Since
there's no room for ambiguity here, simply drop the superfluous word.
|
|
These only do anything for OpenGL, and it seems unlikely that they will ever be
used for anything else. So, move them to the GL headers to remove clutter from
the core API, and ensure that they are only used in GL applications that
include the appropriate headers and link with a GL backend.
Also add missing C++ bindings.
|
|
This allows puglCreateSurface() to be used with some other loader, or when
linking to Vulkan at compile time.
|