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 (#81012): https://edk2.groups.io/g/devel/message/81012
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]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to