|
@@ -1,3 +1,4 @@
|
|
|
|
|
+* [RmlUi 6.1](#rmlui-61)
|
|
|
* [RmlUi 6.0](#rmlui-60)
|
|
* [RmlUi 6.0](#rmlui-60)
|
|
|
* [RmlUi 5.1](#rmlui-51)
|
|
* [RmlUi 5.1](#rmlui-51)
|
|
|
* [RmlUi 5.0](#rmlui-50)
|
|
* [RmlUi 5.0](#rmlui-50)
|
|
@@ -12,19 +13,19 @@
|
|
|
* [RmlUi 3.0](#rmlui-30)
|
|
* [RmlUi 3.0](#rmlui-30)
|
|
|
* [RmlUi 2.0](#rmlui-20)
|
|
* [RmlUi 2.0](#rmlui-20)
|
|
|
|
|
|
|
|
-## RmlUi 6.1 (WIP)
|
|
|
|
|
|
|
+## RmlUi 6.1
|
|
|
|
|
|
|
|
### Prevent single pixel gaps between elements
|
|
### Prevent single pixel gaps between elements
|
|
|
|
|
|
|
|
This release addresses the issue of 1px gaps appearing between fractionally sized elements when placed border-to-border. This was particularly pronounced in DPI-scaled layouts, as that often leads to fractionally sized elements.
|
|
This release addresses the issue of 1px gaps appearing between fractionally sized elements when placed border-to-border. This was particularly pronounced in DPI-scaled layouts, as that often leads to fractionally sized elements.
|
|
|
|
|
|
|
|
-The solution involves rounding the rendered sizes of elements based on their absolute positions to ensure that the bottom/right of one element matches the top/left of the next element. This implies that the rendered size of a fractional element may vary by up to one pixel. This generally matches how web browsers behave. Floating-point precision issues may still cause rare gaps, but the improvements should cover almost all cases. See the [commit message](https://github.com/mikke89/RmlUi/commit/b197f985b328d5493af3190e27d4290bb496ff1d) for details. Resolves #438, thanks to @mwl4 for the extensive initiative and proof of concept.
|
|
|
|
|
|
|
+The solution involves rounding the rendered size of elements based on their absolute positions to ensure that the bottom/right of one element matches the top/left of the next element. This implies that the rendered size of a fractional element may vary by up to one pixel. This generally matches how web browsers behave. Floating-point precision issues may still cause rare gaps, but the improvements should cover almost all cases. See the [commit message](https://github.com/mikke89/RmlUi/commit/b197f985b328d5493af3190e27d4290bb496ff1d) for details. Resolves #438, thanks to @mwl4 for the extensive initiative and proof of concept.
|
|
|
|
|
|
|
|
-Fixes several situations with single pixel gaps and overlaps:
|
|
|
|
|
|
|
+In particular, this fixes several situations with single pixel gaps and overlaps:
|
|
|
|
|
|
|
|
- Gap of 1px between border or backgrounds of neighboring elements.
|
|
- Gap of 1px between border or backgrounds of neighboring elements.
|
|
|
- Overlap of 1px between border or backgrounds of neighboring elements.
|
|
- Overlap of 1px between border or backgrounds of neighboring elements.
|
|
|
-- Table cell backgrounds overlaps the table border by 1px.
|
|
|
|
|
|
|
+- Table cell backgrounds overlap the table border by 1px.
|
|
|
- Gap between nested elements in a flex container.
|
|
- Gap between nested elements in a flex container.
|
|
|
- Clipping area offset by 1px compared to the border area.
|
|
- Clipping area offset by 1px compared to the border area.
|
|
|
|
|
|
|
@@ -36,7 +37,7 @@ The `<handle>` element has received several major improvements.
|
|
|
|
|
|
|
|
- The handle now retains the anchoring that applies to the target element, even after moving or sizing it. #637
|
|
- The handle now retains the anchoring that applies to the target element, even after moving or sizing it. #637
|
|
|
- If an element has all of its inset (top/right/bottom/left) properties set, this determines the size, and anchors to all edges. Previously, we would break the anchoring and just declare its new position or size. Now, positioning and sizing is performed in a way that retains this anchoring. Similarly, this applies to every combination of anchoring.
|
|
- If an element has all of its inset (top/right/bottom/left) properties set, this determines the size, and anchors to all edges. Previously, we would break the anchoring and just declare its new position or size. Now, positioning and sizing is performed in a way that retains this anchoring. Similarly, this applies to every combination of anchoring.
|
|
|
- - Thus, when first sizing and moving the target, and then resizing its container, the element can now still resize itself to match the new dimensions.
|
|
|
|
|
|
|
+ - Thus, when first sizing and moving the target and then resizing its container, the element can now still resize itself to match the new dimensions.
|
|
|
- The `edge_margin` attribute is introduced to constrain the target placement to the edges of its containing block. #631
|
|
- The `edge_margin` attribute is introduced to constrain the target placement to the edges of its containing block. #631
|
|
|
- Applies to both position and size targets.
|
|
- Applies to both position and size targets.
|
|
|
- This attribute can take any length or percentage, which specifies the minimum distance between the target and the edges of its containing block. Each side can be specified individually, and negative values are allowed. See the [documentation](https://mikke89.github.io/RmlUiDoc/pages/rml/controls.html#handle) for details.
|
|
- This attribute can take any length or percentage, which specifies the minimum distance between the target and the edges of its containing block. Each side can be specified individually, and negative values are allowed. See the [documentation](https://mikke89.github.io/RmlUiDoc/pages/rml/controls.html#handle) for details.
|
|
@@ -47,7 +48,7 @@ The `<handle>` element has received several major improvements.
|
|
|
|
|
|
|
|
### New decorator: `text`
|
|
### New decorator: `text`
|
|
|
|
|
|
|
|
-Added a new decorator to render text as a background on elements. This can be particularly helpful when using icon fonts, and even allows using such fonts for generated elements. #348 #655 #679
|
|
|
|
|
|
|
+Implement a new decorator to render text as a background on elements. This can be particularly helpful when using icon fonts, and even allows using such fonts for generated elements. #348 #655 #679
|
|
|
|
|
|
|
|
```
|
|
```
|
|
|
decorator: text("Hello 🌎 world!" blue bottom right);
|
|
decorator: text("Hello 🌎 world!" blue bottom right);
|
|
@@ -59,12 +60,13 @@ The font face will be inherited from the element it is being applied to. However
|
|
|
|
|
|
|
|
- Apply automatic minimum size of flex items in column mode with auto size. #658
|
|
- Apply automatic minimum size of flex items in column mode with auto size. #658
|
|
|
- Performance improvement: Skip calculating hypothetical cross size when not needed. Avoids a potentially expensive formatting step in some situations. #658
|
|
- Performance improvement: Skip calculating hypothetical cross size when not needed. Avoids a potentially expensive formatting step in some situations. #658
|
|
|
-- Fix hypothetical width of replaced elements (such as images) in column direction layout. #666
|
|
|
|
|
-- Fix hitting an assertion due to negative flex item size in some situations when edge size is fractional. #657
|
|
|
|
|
|
|
+- Fix the hypothetical width of replaced elements (such as images) in column direction layout. #666
|
|
|
|
|
+- Fix hitting an assertion due to negative flex item size in some situations when the edge size is fractional. #657
|
|
|
|
|
|
|
|
### Data binding
|
|
### Data binding
|
|
|
|
|
|
|
|
- Allow custom getter/setter on scoped enum. #693 #699 (thanks @AmaiKinono)
|
|
- Allow custom getter/setter on scoped enum. #693 #699 (thanks @AmaiKinono)
|
|
|
|
|
+- Ternary expressions are now implemented with jumps so that only one branch is evaluated. This makes it possible to e.g. avoid invalid array access in case of an empty array. #740 (thanks @rminderhoud and @exjam)
|
|
|
- Fix an issue where the `FamilyId` would have the same value for different types across shared library boundaries, which could lead to a crash or other unexpected behavior.
|
|
- Fix an issue where the `FamilyId` would have the same value for different types across shared library boundaries, which could lead to a crash or other unexpected behavior.
|
|
|
|
|
|
|
|
### Animations
|
|
### Animations
|
|
@@ -78,32 +80,42 @@ The font face will be inherited from the element it is being applied to. However
|
|
|
|
|
|
|
|
### Input elements
|
|
### Input elements
|
|
|
|
|
|
|
|
|
|
+- Implement the ability to style the progress of a `range` input. #736 (thanks @viseztrance)
|
|
|
|
|
+ - A new [`sliderprogress` child element](https://mikke89.github.io/RmlUiDoc/pages/style_guide.html) is added for this purpose.\
|
|
|
|
|
+ 
|
|
|
- Improve navigation of `<select>` elements when using controller/keyboard navigation. #565 #566 (thanks @Paril)
|
|
- Improve navigation of `<select>` elements when using controller/keyboard navigation. #565 #566 (thanks @Paril)
|
|
|
- Scroll to the selected options as one is moving up or down the list.
|
|
- Scroll to the selected options as one is moving up or down the list.
|
|
|
- Scroll to the selected option when opening up the selection box.
|
|
- Scroll to the selected option when opening up the selection box.
|
|
|
- - Add ability to programmatically [show or hide](https://mikke89.github.io/RmlUiDoc/pages/cpp_manual/element_packages/form.html#drop-down-select-box) the selection box.
|
|
|
|
|
|
|
+ - Add the ability to programmatically [show or hide](https://mikke89.github.io/RmlUiDoc/pages/cpp_manual/element_packages/form.html#drop-down-select-box) the selection box.
|
|
|
- Fix some layout and behavior issues of the `<select>` element.
|
|
- Fix some layout and behavior issues of the `<select>` element.
|
|
|
- Fix issues related to specifying the height of the select arrow element.
|
|
- Fix issues related to specifying the height of the select arrow element.
|
|
|
- Fix an issue where the selection box would scroll to the top-left corner when the document layout is updated.
|
|
- Fix an issue where the selection box would scroll to the top-left corner when the document layout is updated.
|
|
|
-- Fix an issue where the contents of the `<input type="text">` and `<textarea>` elements could sometimes unintentionally scroll to a new place after a layout update.
|
|
|
|
|
|
|
+- Fix an issue where wrapping a `<select>` element inside a `<label>` element would prevent mouse clicks from being able to select a new option. #494
|
|
|
|
|
+- Fix an issue where the contents of the `<input type="text">` and `<textarea>` elements could sometimes inadvertently scroll to a new place after a layout update.
|
|
|
|
|
+- Handle multi-byte characters in `<input type="password">` fields. #735
|
|
|
|
|
|
|
|
### Elements
|
|
### Elements
|
|
|
|
|
|
|
|
|
|
+- Add support for the [`:scope` pseudo selector](https://mikke89.github.io/RmlUiDoc/pages/rcss/selectors.html#pseudo-selectors) when calling into the `Element` DOM query methods, i.e. `Element::QuerySelector[All]`, `Element::Matches`, and `Element::Closest`. #578 (thanks @Paril)
|
|
|
|
|
+- Add [`Element::Contains` DOM method](https://mikke89.github.io/RmlUiDoc/pages/cpp_manual/elements.html#dom-interface).
|
|
|
- Allow `Element::ScrollIntoView` to only scroll in the nearest scroll container, instead of all ancestor scroll containers, by using the new `ScrollParentage::Closest` scroll option.
|
|
- Allow `Element::ScrollIntoView` to only scroll in the nearest scroll container, instead of all ancestor scroll containers, by using the new `ScrollParentage::Closest` scroll option.
|
|
|
- Fix an issue where scrollbars could appear or disappear one frame after they should have changed visibility.
|
|
- Fix an issue where scrollbars could appear or disappear one frame after they should have changed visibility.
|
|
|
|
|
|
|
|
### Documents
|
|
### Documents
|
|
|
|
|
|
|
|
- Expose `ElementDocument::FindNextTabElement` publicly.
|
|
- Expose `ElementDocument::FindNextTabElement` publicly.
|
|
|
|
|
+- Disallow focusing into an unloaded document to prevent a potential situation with dangling pointers. #730
|
|
|
|
|
|
|
|
### Font engine
|
|
### Font engine
|
|
|
|
|
|
|
|
- Add the ability to select a font face from a font collection, using its face index passed to `Rml::LoadFontFace`. #720 (thanks @leduyquang753)
|
|
- Add the ability to select a font face from a font collection, using its face index passed to `Rml::LoadFontFace`. #720 (thanks @leduyquang753)
|
|
|
- Fix rare placement of glyphs appearing below the baseline in some fonts, by using the bitmap bearing instead of the glyph metrics.
|
|
- Fix rare placement of glyphs appearing below the baseline in some fonts, by using the bitmap bearing instead of the glyph metrics.
|
|
|
|
|
+- The [HarfBuzz font engine](./Samples/basic/harfbuzz) now uses kerning from HarfBuzz instead of FreeType. #639 (thanks @TriangulumDesire)
|
|
|
|
|
|
|
|
-### RML Parsing
|
|
|
|
|
|
|
+### RML Parsing and layouting
|
|
|
|
|
|
|
|
- Fix RML parsing of extra hyphen in closing comment, i.e. `--->` instead of `-->`. #681
|
|
- Fix RML parsing of extra hyphen in closing comment, i.e. `--->` instead of `-->`. #681
|
|
|
|
|
+- Fix a crash during layouting with word break enabled, when the first character of a token is multi-byte and does not fit on the line. #753 (thanks @and3md)
|
|
|
|
|
|
|
|
### Rendering
|
|
### Rendering
|
|
|
|
|
|
|
@@ -137,7 +149,7 @@ The font face will be inherited from the element it is being applied to. However
|
|
|
|
|
|
|
|
### Unit testing
|
|
### Unit testing
|
|
|
|
|
|
|
|
-- Enable shell renderer with environment variable `RMLUI_TESTS_USE_SHELL=1` instead of compile definition.
|
|
|
|
|
|
|
+- Enable shell renderer with environment variable `RMLUI_TESTS_USE_SHELL=1` instead of a compile definition.
|
|
|
|
|
|
|
|
### Resource management
|
|
### Resource management
|
|
|
|
|
|
|
@@ -146,17 +158,20 @@ The font face will be inherited from the element it is being applied to. However
|
|
|
- Thus, there should no longer be any memory allocations occurring before `main()` when linking to RmlUi.
|
|
- Thus, there should no longer be any memory allocations occurring before `main()` when linking to RmlUi.
|
|
|
- We now give a warning if there are objects in user space that refer to any RmlUi resources at the end of `Rml::Shutdown`, as this prevents the library from cleaning up memory pools.
|
|
- We now give a warning if there are objects in user space that refer to any RmlUi resources at the end of `Rml::Shutdown`, as this prevents the library from cleaning up memory pools.
|
|
|
- We make an exemption for `Rml::EventListener` as those are commonly kept around until after `Rml::Shutdown` which is considered reasonable.
|
|
- We make an exemption for `Rml::EventListener` as those are commonly kept around until after `Rml::Shutdown` which is considered reasonable.
|
|
|
-- Add manual release of render managers, `Rml::ReleaseRenderManagers`, to allow render interface to be destroyed before `Rml::Shutdown`. #703
|
|
|
|
|
|
|
+- Add manual release of render managers, `Rml::ReleaseRenderManagers`, to allow the render interface to be destroyed before `Rml::Shutdown`. #703
|
|
|
|
|
|
|
|
### Building
|
|
### Building
|
|
|
|
|
|
|
|
- Remove `OpenGL::GL` dependency for GL3 backends. #684 (thanks @std-microblock)
|
|
- Remove `OpenGL::GL` dependency for GL3 backends. #684 (thanks @std-microblock)
|
|
|
- Fix dependency check signature in RmlUiConfig causing failure to find dependencies. #721 #722 (thanks @mpersano)
|
|
- Fix dependency check signature in RmlUiConfig causing failure to find dependencies. #721 #722 (thanks @mpersano)
|
|
|
-- Fix missing header in the GL3 renderer, causing a compilation error on Visual Studio 17.12.
|
|
|
|
|
|
|
+- Log to console by default when building on MinGW. #757 (thanks @trexxet)
|
|
|
|
|
+- Fix a missing header include in the GL3 renderer, causing a compilation error on Visual Studio 17.12.
|
|
|
|
|
+- Fix a build issue on certain Visual Studio 2017 setups by using `std::enable_if_t` consistently. #734
|
|
|
|
|
+- Fix a build issue on Android with C++ 23 enabled due to mismatching std-namespace usage and C vs. C++ math headers.
|
|
|
- Fix unit tests and missing sample data when building with Emscripten.
|
|
- Fix unit tests and missing sample data when building with Emscripten.
|
|
|
- Libraries and archives will now be placed in the top-level binary directory, unless overridden by users or parent projects. This matches the existing runtime output directory.
|
|
- Libraries and archives will now be placed in the top-level binary directory, unless overridden by users or parent projects. This matches the existing runtime output directory.
|
|
|
|
|
|
|
|
-### Documentation
|
|
|
|
|
|
|
+### Readme
|
|
|
|
|
|
|
|
- Improve readme code examples. #683 (thanks @std-microblock)
|
|
- Improve readme code examples. #683 (thanks @std-microblock)
|
|
|
|
|
|