aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2025-01-23Rename puglPostRedisplay() to puglObscureView()David Robillard3-5/+5
For consistency with event types (since "obscure" is opposite "expose") and the upcoming puglObscureRegion().
2025-01-23Simplify some conditionalsDavid Robillard1-3/+4
2025-01-22Simplify initial position code and place children at the originDavid Robillard5-134/+121
The code to find the initial size and position for a view had a lot of duplication, and was inconsistent between platforms. Flaky positioning and attempting to center embedded children has historically caused a bunch of problems in general, particularly since windows can be resized. So, factor out all the initial size and position code so that the logic is in one centralized place used by all platforms, and always position embedded children within their parent at the top/left origin. For top-level windows, the view is centered on its transient parent or the screen (as before). A new platform function puglGetAncestorCenter() is used to do this in general code. Also towards a total separation of position and size, towards support for Wayland, where applications don't dictate their own positions.
2025-01-22Factor out puglIsValidSize()David Robillard5-5/+14
2025-01-22Factor out puglIsValidPosition()David Robillard6-8/+17
2025-01-22Rename PuglViewSize to PuglAreaDavid Robillard7-36/+36
2025-01-22Make puglSetSizeHint() consistent with puglSetSize()David Robillard5-26/+34
In general, it's more convenient to have full-width integers as parameters, since C will promote any arithmetic on smaller types to them anyway. Using narrow types here, then, doesn't really make anything stricter, just forces an annoying cast when lots of warnings are enabled, which is likely unchecked. Better to handle it here, since it's more convenient, and the integer range checks the compiler can do aren't correct anyway (the max width/height is intentionally smaller than the max PuglSpan, so it can fit in a signed 16-bit integer).
2025-01-22Windows: Avoid waiting less than a millisecondDavid Robillard1-2/+4
There is API to access the minimum timer resolution, but it seems to always be 1 millisecond, which is also the unit of the MsgWaitForMultipleObjects parameter, so just avoid the fuss and hardcode this as the minimum. This should slightly reduce overhead when the main loop is running without much of a margin until the frame needs to be drawn.
2025-01-21Use a consistent naming scheme for parent functionsDavid Robillard1-2/+2
These could be combined into a hint-like general get/set mechanism, but currently there's only two window relationships and no immediate plans to add more, so that feels a bit over-engineered. So, just rename for consistency with puglSetTransientParent().
2025-01-21Use PuglSpan for view sizesDavid Robillard1-1/+1
2025-01-21Support building for Windows with or without UNICODEDavid Robillard1-40/+63
2025-01-21Use enums for WGL constantsDavid Robillard1-24/+36
2025-01-21X11: Generate text events for keypad symbolsMartin Preinfalk1-1/+2
2025-01-21Make MacOS touchpad scroll sensitivity closer to other platformsDavid Robillard1-3/+3
2025-01-21Add missing const qualifierDavid Robillard1-1/+1
2025-01-21Add PUGL_KEY_NONEDavid Robillard4-9/+8
This isn't a strict enumeration anyway, so a sentinel value does no harm, and using it avoids warnings about testing an enum with no zero value.
2025-01-21Fix whitespaceDavid Robillard2-8/+2
2025-01-21Fix warnings in clang build on WindowsDavid Robillard1-12/+15
2024-10-01Suppress new warnings in clang and clang-tidy 18David Robillard1-1/+3
2024-07-13MacOS: Fix mouse wheel scroll speedDavid Robillard1-5/+11
This just happens to be the factor that results in one tick of a conventional mouse wheel being a change of 1.0 "lines" as on other platforms (at least for me, hopefully everywhere). Moving a wheel quickly does result in quite a lot of acceleration on MacOS though, so more refinement might be needed here for consistent event handling across platforms.
2024-07-13MacOS: Fix expose event coordinatesDavid Robillard1-1/+4
2024-07-13X11: Avoid setting PBaseSize hints for top-level windowsDavid Robillard1-1/+2
By my reading of the spec, pugl's use of this hint was correct. However, many window managers break when it's set and use that size as the minimum (even when an actual minimum is set). This seems to be a bug based on a misreading of the spec which has been copy-pasted across many small window manager projects over the years. Not exposing the default size is unfortunate, but apparently nobody misses features based on it and there's nothing we can do about it here, so just deny the window manager the information entirely. The hint is still set for embedded views because (for example) plugin hosts need this information.
2024-07-12Windows: Support building with UNICODEDavid Robillard3-20/+37
2024-06-10Fix build and tests with optional X11 features disabledDavid Robillard1-1/+1
2023-11-11MacOS: Fix Cairo rendering on some systemsDavid Robillard1-3/+1
CGContextConvertSizeToUserSpace returns a negative height on some systems and a positive height on others. I have no idea why, but only basic scaling is required here, so just avoid this function entirely.
2023-11-11Add support for Num, Scroll, and Caps LockDavid Robillard4-20/+37
2023-11-11MacOS: Support left/right shift, control, and option keysDavid Robillard1-4/+6
2023-10-22X11: Only call XSetTransientForHint for valid windowsfalkTX1-1/+1
Signed-off-by: falkTX <falktx@falktx.com>
2023-10-21Fix potential memory leaks due to realloc() failureDavid Robillard2-31/+55
2023-10-21Fix whitespaceDavid Robillard1-1/+2
2023-10-21MacOS: Fix horizontal scroll directionDavid Robillard1-1/+1
2023-10-21X11: Use PUGL_INIT_STRUCT to initialize char arraysfalkTX1-3/+3
2023-10-21X11: Fix key press event key when control is pressedfalkTX1-2/+2
2023-10-21Remove spurious semicolonDavid Robillard1-1/+1
2023-10-21Filter out corresponding modifiers from key eventsDavid Robillard5-8/+38
Platforms differ here, but it's meaningless to ask about the state of a modifier that's currently being pressed or released, so simply mask this out in general so it's easy for platform implementations to clean events up before dispatching them.
2023-10-21Windows: Fix left and right key distinctionDavid Robillard1-6/+6
2023-10-21Clean up includesDavid Robillard1-1/+0
2023-10-07Fix puglGetTime() on Apple SiliconDavid Robillard1-3/+5
The floating point precision of these chips is... strange.
2023-05-29Add support for numeric keypad and simplify keyboard handlingDavid Robillard3-97/+131
2023-05-29Deprecate redundant key symbolsDavid Robillard2-9/+9
2023-05-27X11: Fix cursors on systems where XcursorGetTheme() doesn't workDavid Robillard1-2/+3
2023-05-22X11: Fix puglStopTimer() with multiple timersThomas Brand1-5/+3
2023-05-12Factor out return code to status conversionDavid Robillard2-62/+65
2023-05-12Make puglSetSizeHint() tolerate unknown hints on all platformsDavid Robillard1-0/+4
2023-05-12Factor out puglIsValidSize() and use consistent rules everywhereDavid Robillard5-22/+24
2023-05-12MacOS: Fix inverted puglPostRedisplay() coordinatesDavid Robillard1-1/+5
2023-05-12X11: Use the root provided by XGetWindowAttributes()David Robillard1-5/+4
2023-05-12X11: Avoid deferring empty exposuresDavid Robillard3-25/+15
2023-05-12X11: Use available X extensions by defaultDavid Robillard1-12/+36
2023-05-12Windows: Share common drawing context codeDavid Robillard2-12/+5