diff options
author | Mitch Curtis <mitch.curtis@qt.io> | 2019-04-12 15:21:42 +0200 |
---|---|---|
committer | Mitch Curtis <mitch.curtis@qt.io> | 2019-05-03 11:28:26 +0000 |
commit | 0525d640cd11ddced2ec418be182c585204fc45f (patch) | |
tree | 8337afced03c909c3411f3ab33719520eaba9b12 /LICENSE.LGPL3 | |
parent | 7f1d0976d3ac0c6226bef1947a4eafd44b60e5e9 (diff) |
Fix MenuItem width not matching Menu's available width
Short version:
There are currently two problems with MenuItems:
- Mirrored MenuItems don't fill the Menu's available width.
- MenuItem does not fill the Menu's available width when changed
after Component completion.
This patch fixes both of them by listening to geometry changes in both
the contentItem and individual menu items, and setting the explicit
width of those menu items when either changes.
Longer version:
The first problem can be seen whenever the MenuItem's implicitWidth
changes:
- QQmlEngine::retranslate() is called, causing all bindings to be
re-evaluated
- The MenuItem's font size changes
- The MenuItem's icon size changes
- etc.
We fix this by making Menu listen to the width of each of its MenuItems
and call resizeItem() if it doesn't have an explicit width.
The second problem can be seen when e.g. resizing a Menu to account
for new items that are wider and hence require more space.
This can be fixed by listening to width changes in Menu's contentItem,
which was actually done in earlier versions but (probably accidentally)
removed in 482ecb0f.
I had tried to solve both issues by setting the explicit width of
MenuItem to the width of its Menu, or undefined if it has none
(which means it reverts to its implicit width). However, this does
not account for e.g. MenuSeparator and custom items that can be added
to Menu - they should also have their width fill the Menu automatically
if they don't have an explicit width set.
Change-Id: I95dd0da0919a1e297f2e2030da746ff1f1a17644
Fixes: QTBUG-75051
Fixes: QTBUG-75142
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'LICENSE.LGPL3')
0 files changed, 0 insertions, 0 deletions