You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: changelog.md
+30-15Lines changed: 30 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,4 @@
1
+
*[RmlUi 6.1](#rmlui-61)
1
2
*[RmlUi 6.0](#rmlui-60)
2
3
*[RmlUi 5.1](#rmlui-51)
3
4
*[RmlUi 5.0](#rmlui-50)
@@ -12,19 +13,19 @@
12
13
*[RmlUi 3.0](#rmlui-30)
13
14
*[RmlUi 2.0](#rmlui-20)
14
15
15
-
## RmlUi 6.1 (WIP)
16
+
## RmlUi 6.1
16
17
17
18
### Prevent single pixel gaps between elements
18
19
19
20
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.
20
21
21
-
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.
22
+
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.
22
23
23
-
Fixes several situations with single pixel gaps and overlaps:
24
+
In particular, this fixes several situations with single pixel gaps and overlaps:
24
25
25
26
- Gap of 1px between border or backgrounds of neighboring elements.
26
27
- Overlap of 1px between border or backgrounds of neighboring elements.
27
-
- Table cell backgrounds overlaps the table border by 1px.
28
+
- Table cell backgrounds overlap the table border by 1px.
28
29
- Gap between nested elements in a flex container.
29
30
- Clipping area offset by 1px compared to the border area.
30
31
@@ -36,7 +37,7 @@ The `<handle>` element has received several major improvements.
36
37
37
38
- The handle now retains the anchoring that applies to the target element, even after moving or sizing it. #637
38
39
- 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.
39
-
- 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.
40
+
- 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.
40
41
- The `edge_margin` attribute is introduced to constrain the target placement to the edges of its containing block. #631
41
42
- Applies to both position and size targets.
42
43
- 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.
47
48
48
49
### New decorator: `text`
49
50
50
-
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
51
+
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
51
52
52
53
```
53
54
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
59
60
60
61
- Apply automatic minimum size of flex items in column mode with auto size. #658
61
62
- Performance improvement: Skip calculating hypothetical cross size when not needed. Avoids a potentially expensive formatting step in some situations. #658
62
-
- Fix hypothetical width of replaced elements (such as images) in column direction layout. #666
63
-
- Fix hitting an assertion due to negative flex item size in some situations when edge size is fractional. #657
63
+
- Fix the hypothetical width of replaced elements (such as images) in column direction layout. #666
64
+
- Fix hitting an assertion due to negative flex item size in some situations when the edge size is fractional. #657
64
65
65
66
### Data binding
66
67
67
68
- Allow custom getter/setter on scoped enum. #693#699 (thanks @AmaiKinono)
69
+
- 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)
68
70
- 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.
69
71
70
72
### Animations
@@ -78,32 +80,42 @@ The font face will be inherited from the element it is being applied to. However
78
80
79
81
### Input elements
80
82
83
+
- Implement the ability to style the progress of a `range` input. #736 (thanks @viseztrance)
84
+
- A new [`sliderprogress` child element](https://mikke89.github.io/RmlUiDoc/pages/style_guide.html) is added for this purpose.\
85
+

81
86
- Improve navigation of `<select>` elements when using controller/keyboard navigation. #565#566 (thanks @Paril)
82
87
- Scroll to the selected options as one is moving up or down the list.
83
88
- Scroll to the selected option when opening up the selection box.
84
-
- 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.
89
+
- 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.
85
90
- Fix some layout and behavior issues of the `<select>` element.
86
91
- Fix issues related to specifying the height of the select arrow element.
87
92
- Fix an issue where the selection box would scroll to the top-left corner when the document layout is updated.
88
-
- 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.
93
+
- 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
94
+
- 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.
95
+
- Handle multi-byte characters in `<input type="password">` fields. #735
89
96
90
97
### Elements
91
98
99
+
- 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)
100
+
- Add [`Element::Contains` DOM method](https://mikke89.github.io/RmlUiDoc/pages/cpp_manual/elements.html#dom-interface).
92
101
- 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.
93
102
- Fix an issue where scrollbars could appear or disappear one frame after they should have changed visibility.
- Disallow focusing into an unloaded document to prevent a potential situation with dangling pointers. #730
98
108
99
109
### Font engine
100
110
101
111
- Add the ability to select a font face from a font collection, using its face index passed to `Rml::LoadFontFace`. #720 (thanks @leduyquang753)
102
112
- Fix rare placement of glyphs appearing below the baseline in some fonts, by using the bitmap bearing instead of the glyph metrics.
113
+
- The [HarfBuzz font engine](./Samples/basic/harfbuzz) now uses kerning from HarfBuzz instead of FreeType. #639 (thanks @TriangulumDesire)
103
114
104
-
### RML Parsing
115
+
### RML Parsing and layouting
105
116
106
117
- Fix RML parsing of extra hyphen in closing comment, i.e. `--->` instead of `-->`. #681
118
+
- 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)
107
119
108
120
### Rendering
109
121
@@ -137,7 +149,7 @@ The font face will be inherited from the element it is being applied to. However
137
149
138
150
### Unit testing
139
151
140
-
- Enable shell renderer with environment variable `RMLUI_TESTS_USE_SHELL=1` instead of compile definition.
152
+
- Enable shell renderer with environment variable `RMLUI_TESTS_USE_SHELL=1` instead of a compile definition.
141
153
142
154
### Resource management
143
155
@@ -146,17 +158,20 @@ The font face will be inherited from the element it is being applied to. However
146
158
- Thus, there should no longer be any memory allocations occurring before `main()` when linking to RmlUi.
147
159
- 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.
148
160
- We make an exemption for `Rml::EventListener` as those are commonly kept around until after `Rml::Shutdown` which is considered reasonable.
149
-
- Add manual release of render managers, `Rml::ReleaseRenderManagers`, to allow render interface to be destroyed before `Rml::Shutdown`. #703
161
+
- Add manual release of render managers, `Rml::ReleaseRenderManagers`, to allow the render interface to be destroyed before `Rml::Shutdown`. #703
150
162
151
163
### Building
152
164
153
165
- Remove `OpenGL::GL` dependency for GL3 backends. #684 (thanks @std-microblock)
154
166
- Fix dependency check signature in RmlUiConfig causing failure to find dependencies. #721#722 (thanks @mpersano)
155
-
- Fix missing header in the GL3 renderer, causing a compilation error on Visual Studio 17.12.
167
+
- Log to console by default when building on MinGW. #757 (thanks @trexxet)
168
+
- Fix a missing header include in the GL3 renderer, causing a compilation error on Visual Studio 17.12.
169
+
- Fix a build issue on certain Visual Studio 2017 setups by using `std::enable_if_t` consistently. #734
170
+
- Fix a build issue on Android with C++ 23 enabled due to mismatching std-namespace usage and C vs. C++ math headers.
156
171
- Fix unit tests and missing sample data when building with Emscripten.
157
172
- 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.
0 commit comments