oMenu acts differently in February build

Post Reply
John
Posts: 67
Joined: Mon Dec 26, 2005 7:44 am
Location: The Netherlands

oMenu acts differently in February build

Post by John »

Antonio,

it seems the menu items move a little to the right when there is a submenu attached to it, is this intentionally?

Saludos,

John.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

John,

It is a side effect caused by a recent change.

Please search for this code in classes\menu.prg and change it as shown:

( /* .f. .and. */ IsWinNT() .and. ! lRoot .and. ! ::lSysMenu ),;
Last edited by Antonio Linares on Sat Feb 11, 2006 5:52 pm, edited 1 time in total.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

This still is not a fix but seems to solve the problem:

Code: Select all

METHOD Add( oMenuItem, lRoot ) CLASS TMenu

   DEFAULT lRoot := .f.

   AAdd( ::aItems, oMenuItem )

   oMenuItem:oMenu = Self

   if ValType( oMenuItem:bAction ) == "O" .and. ;
      Upper( oMenuItem:bAction:ClassName() ) == "TMENU"
      if oMenuItem:cPrompt != nil
         AppendMenu( ::hMenu, nOr( MF_POPUP, MF_ENABLED,;
                          If( oMenuItem:hBitmap != 0 .or. ( .f. .and. IsWinNT() .and. ! lRoot .and. !::lSysmenu), MF_OWNERDRAW, 0 ),; //EMG
                          If( oMenuItem:lHelp, MF_HELP, 0 ),;
                          If( oMenuItem:lChecked, MF_CHECKED, 0 ),;
                          If( ! oMenuItem:lActive, MF_GRAYED, 0 ),;
                          If( oMenuItem:lBreak, MF_BREAK, 0 ) ),;
                     oMenuItem:bAction:hMenu,;
                     oMenuItem:cPrompt )
      else
         AppendMenu( ::hMenu, nOR( MF_POPUP, MF_BITMAP,;
                          If( oMenuItem:lChecked, MF_CHECKED, 0 ),;
                          If( ! oMenuItem:lActive, MF_GRAYED, 0 ),;
                          If( oMenuItem:lHelp, MF_HELP, 0 ),;
                          If( oMenuItem:lBreak, MF_BREAK, 0 ) ),;
                     oMenuItem:bAction:hMenu, oMenuItem:hBitmap )
      endif
      AAdd( aPopups, oMenuItem:bAction )
   else
      if oMenuItem:cPrompt != nil
         AppendMenu( ::hMenu,;
                     nOR( If( oMenuItem:lActive,;
                          nOr( MF_ENABLED, If( oMenuItem:hBitmap != 0 .or. ;
                          ( .f. .and. IsWinNT() .and. ! lRoot .and. ! ::lSysMenu ),; //EMG
                          MF_OWNERDRAW, 0 ) ),;
                          nOR( MF_DISABLED, MF_GRAYED ) ),;
                          If( oMenuItem:lChecked, MF_CHECKED, 0 ),;
                          If( oMenuItem:lHelp, MF_HELP, 0 ),;
                          If( oMenuItem:lBreak, MF_BREAK, 0 ) ),;
                     oMenuItem:nId, oMenuItem:cPrompt )
      else
         if oMenuItem:hBitmap != 0
            #ifdef __XPP__
               if oMenuItem:lBreak == nil
                  oMenuItem:lBreak = .f.
               endif
            #endif
            AppendMenu( ::hMenu, nOr( MF_BITMAP,;
                        If( oMenuItem:lBreak, MF_BREAK, 0 ) ),;
                        oMenuItem:nId, oMenuItem:hBitmap )
         else
            AppendMenu( ::hMenu, MF_SEPARATOR, oMenuItem:nId, "" )
         endif
      endif
   endif

return nil
EMG
John
Posts: 67
Joined: Mon Dec 26, 2005 7:44 am
Location: The Netherlands

Post by John »

Ok, thanks! That solves the problem for now! :-)
Post Reply