提交 aaff2c6f 编写于 作者: M MikeBeaton

OpenCanopy: Fix view init when default entry beyond right of screen

https://github.com/acidanthera/bugtracker/issues/1703
上级 ffc3dab8
...@@ -17,6 +17,7 @@ OpenCore Changelog ...@@ -17,6 +17,7 @@ OpenCore Changelog
- Fixed DEBUG ASSERT on pressing change entry keys with single boot entry in OpenCanopy - Fixed DEBUG ASSERT on pressing change entry keys with single boot entry in OpenCanopy
- Added recommended `Apple12` and `Windows11` flavours - Added recommended `Apple12` and `Windows11` flavours
- Added `TpmInfo` tool to DEBUG TPM status - Added `TpmInfo` tool to DEBUG TPM status
- Fixed incorrect OpenCanopy initial display when default entry beyond right of screen
#### v0.7.0 #### v0.7.0
- Fixed NVRAM reset on firmware with write-protected `BootOptionSupport` - Fixed NVRAM reset on firmware with write-protected `BootOptionSupport`
......
...@@ -1997,41 +1997,21 @@ BootPickerViewLateInitialize ( ...@@ -1997,41 +1997,21 @@ BootPickerViewLateInitialize (
IN UINT8 DefaultIndex IN UINT8 DefaultIndex
) )
{ {
UINT32 Index;
INT64 ScrollOffset;
CONST GUI_VOLUME_ENTRY *BootEntry; CONST GUI_VOLUME_ENTRY *BootEntry;
ASSERT (DefaultIndex < mBootPicker.Hdr.Obj.NumChildren); ASSERT (DefaultIndex < mBootPicker.Hdr.Obj.NumChildren);
ScrollOffset = InternelBootPickerScrollSelected (); mBootPicker.SelectedIndex = DefaultIndex;
// //
// If ScrollOffset is non-0, the selected entry will be aligned left- or // If more entries than screen width, firstly align left-most entry
// right-most. The view holds a discrete amount of entries, so cut-offs are // then scroll from there as needed to bring default entry on screen
// impossible.
// //
if (ScrollOffset == 0) { if (mBootPicker.Hdr.Obj.OffsetX < 0) {
// mBootPicker.Hdr.Obj.OffsetX = 0;
// Find the first entry that is fully visible. mBootPicker.Hdr.Obj.OffsetX = InternelBootPickerScrollSelected ();
//
for (Index = 0; Index < mBootPicker.Hdr.Obj.NumChildren; ++Index) {
//
// Move the first partially visible boot entry to the very left to prevent
// cut-off entries. This only applies when entries overflow.
//
BootEntry = InternalGetVolumeEntry (Index);
if (mBootPicker.Hdr.Obj.OffsetX + BootEntry->Hdr.Obj.OffsetX >= 0) {
//
// Move the cut-off entry on-screen.
//
ScrollOffset = -ScrollOffset;
break;
}
ScrollOffset = mBootPicker.Hdr.Obj.OffsetX + BootEntry->Hdr.Obj.OffsetX;
}
} }
mBootPicker.Hdr.Obj.OffsetX += ScrollOffset;
// //
// If the scroll buttons are hidden, the intro animation will update them // If the scroll buttons are hidden, the intro animation will update them
// implicitly. // implicitly.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册