Another option is to use EfiBootManagerRegisterBootDescriptionHandler() to alter the boot descriptions.
> -----Original Message----- > From: Gao, Zhichao <zhichao....@intel.com> > Sent: Thursday, September 23, 2021 11:47 AM > To: devel@edk2.groups.io; gaolim...@byosoft.com.cn; Ni, Ray <ray...@intel.com> > Cc: Wang, Jian J <jian.j.w...@intel.com> > Subject: RE: [edk2-devel] [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit > string drawing within one line > > Hi Liming, > > Yes. Because the design of the BM app is not aimed to display the boot option > over one line. And it is not using the setup > browser engine. > That would cause the difference. > If we want to make them align, there are two options: > 1. BM app to use the setup browser engine > 2. add scroll bar logic for the boot item > > Both above change is not simple and may cause new issues. It would be a new > design other than a bug fix. > > Another solution is the patch V1 to limit the boot option description within > 72 characters. Ray pointed out it is not a good > solution. > > BTW, I would remove the change-id in next patch. > > Thanks, > Zhichao > > > -----Original Message----- > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of > > gaoliming > > Sent: Thursday, September 23, 2021 10:59 AM > > To: devel@edk2.groups.io; Gao, Zhichao <zhichao....@intel.com>; Ni, Ray > > <ray...@intel.com> > > Cc: Wang, Jian J <jian.j.w...@intel.com> > > Subject: 回复: [edk2-devel] [PATCH V2] > > MdeModulePkg/BootManagerMenuApp: Limit string drawing within one line > > > > Zhichao: > > With this change, the same boot option will be displayed differently in > > BootManagerApp and BootManager Page. Is it the designed behavior? > > > > Besides, please remove change-id from the commit message. > > > > Thanks > > Liming > > > -----邮件原件----- > > > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Gao, > > Zhichao > > > 发送时间: 2021年9月22日 12:50 > > > 收件人: Ni, Ray <ray...@intel.com>; devel@edk2.groups.io; Liming Gao > > > <gaolim...@byosoft.com.cn> > > > 抄送: Wang, Jian J <jian.j.w...@intel.com> > > > 主题: Re: [edk2-devel] [PATCH V2] > > MdeModulePkg/BootManagerMenuApp: > > > Limit string drawing within one line > > > > > > Hi Liming, > > > > > > The solution is different with the first time we discussed on the > > Bugzilla. Can > > > you review if it is OK to you? > > > > > > Thanks, > > > Zhichao > > > > > > > -----Original Message----- > > > > From: Ni, Ray <ray...@intel.com> > > > > Sent: Wednesday, September 22, 2021 11:28 AM > > > > To: Gao, Zhichao <zhichao....@intel.com>; devel@edk2.groups.io > > > > Cc: Wang, Jian J <jian.j.w...@intel.com>; Liming Gao > > > > <gaolim...@byosoft.com.cn> > > > > Subject: RE: [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit > > > > string drawing within one line > > > > > > > > Reviewed-by: Ray Ni <ray...@intel.com> > > > > > > > > -----Original Message----- > > > > From: Gao, Zhichao <zhichao....@intel.com> > > > > Sent: Thursday, September 9, 2021 3:26 PM > > > > To: devel@edk2.groups.io > > > > Cc: Wang, Jian J <jian.j.w...@intel.com>; Liming Gao > > > > <gaolim...@byosoft.com.cn>; Ni, Ray <ray...@intel.com> > > > > Subject: [PATCH V2] MdeModulePkg/BootManagerMenuApp: Limit > > string > > > > drawing within one line > > > > > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3590 > > > > > > > > Limit the draw box always within the screen's column and row. > > > > Limit the string drawing within one line. > > > > > > > > Change-Id: Ib7bd63cb07b23875a1e4f37ae80a422e1d5ed54f > > > > Cc: Jian J Wang <jian.j.w...@intel.com> > > > > Cc: Liming Gao <gaolim...@byosoft.com.cn> > > > > Cc: Ray Ni <ray...@intel.com> > > > > Signed-off-by: Zhichao Gao <zhichao....@intel.com> > > > > --- > > > > > > > > V2: > > > > > > > > Drop the change in UefiBootManagerLib in V1. > > > > > > > > Add the limitation in BootManagerMenuApp instead. > > > > > > > > > > > > .../BootManagerMenuApp/BootManagerMenu.c | 72 > > > > ++++++++++++++++++- > > > > 1 file changed, 69 insertions(+), 3 deletions(-) > > > > > > > > diff --git > > > > > > a/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > > > > c > > > > > > b/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > > > > c > > > > index 9e729074ec..d4bdeba073 100644 > > > > --- > > > > > > a/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > > > > c > > > > +++ > > > > > > b/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > > > > c > > > > @@ -1,7 +1,7 @@ > > > > /** @file > > > > > > > > The application to show the Boot Manager Menu. > > > > > > > > > > > > > > > > -Copyright (c) 2011 - 2018, Intel Corporation. All rights > > > > reserved.<BR> > > > > > > > > +Copyright (c) 2011 - 2021, Intel Corporation. All rights > > > > +reserved.<BR> > > > > > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > > > > > > > > > > > > > **/ > > > > > > > > @@ -45,9 +45,56 @@ PrintStringAt ( > > > > IN CHAR16 *String > > > > > > > > ) > > > > > > > > { > > > > > > > > + UINTN ScreenWidth; > > > > > > > > + UINTN ScreenRows; > > > > > > > > + CHAR16 *TurncateString; > > > > > > > > + EFI_STATUS Status; > > > > > > > > + UINTN ShowingLength; > > > > > > > > > > > > > > > > gST->ConOut->SetCursorPosition (gST->ConOut, Column, Row); > > > > > > > > - return Print (L"%s", String); > > > > > > > > + > > > > > > > > + gST->ConOut->QueryMode ( > > > > > > > > + gST->ConOut, > > > > > > > > + gST->ConOut->Mode->Mode, > > > > > > > > + &ScreenWidth, > > > > > > > > + &ScreenRows > > > > > > > > + ); > > > > > > > > + > > > > > > > > + if (Column > (ScreenWidth - 1) || Row > (ScreenRows - 1)) { > > > > > > > > + return 0; > > > > > > > > + } > > > > > > > > + > > > > > > > > + if ((StrLen (String) + Column) > (ScreenWidth - 1)) { > > > > > > > > + // > > > > > > > > + // | - ScreenWidth - | > > > > > > > > + // ...Column..................... > > > > > > > > + // TurncateString length should leave one character for draw > > > > + box > > and > > > > > > > > + // require one character for string end. > > > > > > > > + // > > > > > > > > + ShowingLength = ScreenWidth - Column - 1; > > > > > > > > + TurncateString = AllocatePool ((ShowingLength + 1) * sizeof > > (CHAR16)); > > > > > > > > + > > > > > > > > + if (TurncateString == NULL) { > > > > > > > > + return 0; > > > > > > > > + } > > > > > > > > + > > > > > > > > + Status = StrnCpyS (TurncateString, ShowingLength + 1, String, > > > > ShowingLength - 3); > > > > > > > > + > > > > > > > > + if (EFI_ERROR (Status)) { > > > > > > > > + FreePool (TurncateString); > > > > > > > > + return 0; > > > > > > > > + } > > > > > > > > + > > > > > > > > + *(TurncateString + ShowingLength - 3) = L'.'; > > > > > > > > + *(TurncateString + ShowingLength - 2) = L'.'; > > > > > > > > + *(TurncateString + ShowingLength - 1) = L'.'; > > > > > > > > + *(TurncateString + ShowingLength) = L'\0'; > > > > > > > > + ShowingLength = Print (L"%s", TurncateString); > > > > > > > > + FreePool (TurncateString); > > > > > > > > + return ShowingLength; > > > > > > > > + } else { > > > > > > > > + return Print (L"%s", String); > > > > > > > > + } > > > > > > > > } > > > > > > > > > > > > > > > > /** > > > > > > > > @@ -68,7 +115,22 @@ PrintCharAt ( > > > > CHAR16 Character > > > > > > > > ) > > > > > > > > { > > > > > > > > + UINTN ScreenWidth; > > > > > > > > + UINTN ScreenRows; > > > > > > > > + > > > > > > > > gST->ConOut->SetCursorPosition (gST->ConOut, Column, Row); > > > > > > > > + > > > > > > > > + gST->ConOut->QueryMode ( > > > > > > > > + gST->ConOut, > > > > > > > > + gST->ConOut->Mode->Mode, > > > > > > > > + &ScreenWidth, > > > > > > > > + &ScreenRows > > > > > > > > + ); > > > > > > > > + > > > > > > > > + if (Column > (ScreenWidth - 1) || Row > (ScreenRows - 1)) { > > > > > > > > + return 0; > > > > > > > > + } > > > > > > > > + > > > > > > > > return Print (L"%c", Character); > > > > > > > > } > > > > > > > > > > > > > > > > @@ -193,7 +255,11 @@ InitializeBootMenuScreen ( > > > > > > > > > > > > MaxPrintRows = Row - 6; > > > > > > > > UnSelectableItmes = TITLE_TOKEN_COUNT + 2 + > > > HELP_TOKEN_COUNT + 2; > > > > > > > > - BootMenuData->MenuScreen.Width = MaxStrWidth + 8; > > > > > > > > + if (MaxStrWidth + 8 > Column) { > > > > > > > > + BootMenuData->MenuScreen.Width = Column; > > > > > > > > + } else { > > > > > > > > + BootMenuData->MenuScreen.Width = MaxStrWidth + 8; > > > > > > > > + } > > > > > > > > if (BootMenuData->ItemCount + UnSelectableItmes > MaxPrintRows) { > > > > > > > > BootMenuData->MenuScreen.Height = MaxPrintRows; > > > > > > > > BootMenuData->ScrollBarControl.HasScrollBar = TRUE; > > > > > > > > -- > > > > 2.31.1.windows.1 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#81014): https://edk2.groups.io/g/devel/message/81014 Mute This Topic: https://groups.io/mt/85806969/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-