FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour oMenu acts differently in February build
Posts: 67
Joined: Mon Dec 26, 2005 07:44 AM
oMenu acts differently in February build
Posted: Sat Feb 11, 2006 06:05 AM

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.

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
oMenu acts differently in February build
Posted: Sat Feb 11, 2006 09:06 AM

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 ),;
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
oMenu acts differently in February build
Posted: Sat Feb 11, 2006 11:06 AM
This still is not a fix but seems to solve the problem:

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
Posts: 67
Joined: Mon Dec 26, 2005 07:44 AM
oMenu acts differently in February build
Posted: Sun Feb 12, 2006 06:13 AM

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

Continue the discussion