Hiya
Revision 41657 introduces a regression with VirtualBox Guest Additions video
driver. Please see 
  Send Ros-dev mailing list submissions to
        ros-dev(a)reactos.org
 To subscribe or unsubscribe via the World Wide Web, visit
        
http://www.reactos.org/mailman/listinfo/ros-dev
 or, via email, send a message with subject or body 'help' to
        ros-dev-request(a)reactos.org
 You can reach the person managing the list at
        ros-dev-owner(a)reactos.org
 When replying, please edit your Subject line so it is more specific
 than "Re: Contents of Ros-dev digest..."
 Today's Topics:
   1. Re: [ros-diffs] [mkupfer] 41733: Mikhail Denisenko
      <denisenkom AT gmail DOT com> - Add symbols to system menu by
      using marlett font. - See issue #4450 for details. (Ged)
   2. Re: [ros-diffs] [mkupfer] 41733: Mikhail Denisenko
      <denisenkom AT gmail DOT com> - Add symbols to system menu by
      using marlett font. - See issue #4450 for details. (James Tabor)
 ----------------------------------------------------------------------
 Message: 1
 Date: Wed, 1 Jul 2009 23:10:03 +0100
 From: "Ged" <gedmurphy(a)gmail.com>
 Subject: Re: [ros-dev] [ros-diffs] [mkupfer] 41733: Mikhail Denisenko
        <denisenkom AT gmail DOT com> - Add symbols to system menu by
 using
        marlett font. - See issue #4450 for details.
 To: <ros-dev(a)reactos.org>
 Message-ID: <001801c9fa98$af921810$0eb64830$@com>
 Content-Type: text/plain;       charset="utf-8"
 Did you read this patch before committing it?
 Your last patch fixed tchar usage and then this next patch introduces new
 ones.
 -----Original Message-----
 From: ros-diffs-bounces(a)reactos.org [mailto:ros-diffs-bounces@reactos.org]
 On Behalf Of mkupfer(a)svn.reactos.org
 Sent: 01 July 2009 22:57
 To: ros-diffs(a)reactos.org
 Subject: [ros-diffs] [mkupfer] 41733: Mikhail Denisenko <denisenkom AT
 gmail DOT com> - Add symbols to system menu by using marlett font. - See
 issue #4450 for details.
 Author: mkupfer
 Date: Thu Jul  2 01:56:44 2009
 New Revision: 41733
 URL: 
http://svn.reactos.org/svn/reactos?rev=41733&view=rev
 Log:
 Mikhail Denisenko <denisenkom AT gmail DOT com>
 - Add symbols to system menu by using marlett font.
 - See issue #4450 for details.
 Modified:
    trunk/reactos/dll/win32/user32/windows/menu.c
 Modified: trunk/reactos/dll/win32/user32/windows/menu.c
 URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/m…
 ==============================================================================
 --- trunk/reactos/dll/win32/user32/windows/menu.c [iso-8859-1] (original)
 +++ trunk/reactos/dll/win32/user32/windows/menu.c [iso-8859-1] Thu Jul  2
 01:56:44 2009
 @@ -42,7 +42,6 @@
  #define IS_SYSTEM_POPUP(MenuInfo) \
        (0 != ((MenuInfo)->Flags & MF_POPUP) && 0 != ((MenuInfo)->Flags
&
 MF_SYSMENU))
 -#define IS_MAGIC_ITEM(Bmp)   ((int) Bmp <12)
  #define IS_MAGIC_BITMAP(id) ((id) && ((INT_PTR)(id) < 12) &&
 ((INT_PTR)(id) >= -1))
  #define MENU_ITEM_HBMP_SPACE (5)
 @@ -307,7 +306,7 @@
   Size->cx = Size->cy = 0;
   /* check if there is a magic menu item associated with this item */
 -  if (0 != Bmp && IS_MAGIC_ITEM((INT)(Bmp)))
 +  if (IS_MAGIC_BITMAP(Bmp))
     {
       switch((INT_PTR) Bmp)
         {
 @@ -339,18 +338,15 @@
           case (INT_PTR) HBMMENU_MBAR_CLOSE:
           case (INT_PTR) HBMMENU_MBAR_MINIMIZE_D:
           case (INT_PTR) HBMMENU_MBAR_CLOSE_D:
 +          case (INT_PTR) HBMMENU_POPUP_CLOSE:
 +          case (INT_PTR) HBMMENU_POPUP_RESTORE:
 +          case (INT_PTR) HBMMENU_POPUP_MAXIMIZE:
 +          case (INT_PTR) HBMMENU_POPUP_MINIMIZE:
             /* FIXME: Why we need to subtract these magic values? */
             /* to make them smaller than the menu bar? */
             Size->cx = GetSystemMetrics(SM_CXSIZE) - 2;
             Size->cy = GetSystemMetrics(SM_CYSIZE) - 4;
             return;
 -          case (INT_PTR) HBMMENU_POPUP_CLOSE:
 -          case (INT_PTR) HBMMENU_POPUP_RESTORE:
 -          case (INT_PTR) HBMMENU_POPUP_MAXIMIZE:
 -          case (INT_PTR) HBMMENU_POPUP_MINIMIZE:
 -          default:
 -            FIXME("Magic menu bitmap not implemented\n");
 -            return;
         }
     }
 @@ -359,6 +355,70 @@
       Size->cx = Bm.bmWidth;
       Size->cy = Bm.bmHeight;
     }
 +}
 +
 +/***********************************************************************
 + *           MenuDrawPopupGlyph
 + *
 + * Draws popup magic glyphs (can be found in system menu).
 + */
 +static void FASTCALL
 +MenuDrawPopupGlyph(HDC dc, LPRECT r, INT_PTR popupMagic, BOOL inactive,
 BOOL hilite)
 +{
 +  LOGFONTW lf;
 +  HFONT hFont, hOldFont;
 +  COLORREF clrsave;
 +  INT bkmode;
 +  TCHAR symbol;
 +  switch (popupMagic)
 +  {
 +  case (INT_PTR) HBMMENU_POPUP_RESTORE:
 +    symbol = '2';
 +    break;
 +  case (INT_PTR) HBMMENU_POPUP_MINIMIZE:
 +    symbol = '0';
 +    break;
 +  case (INT_PTR) HBMMENU_POPUP_MAXIMIZE:
 +    symbol = '1';
 +    break;
 +  case (INT_PTR) HBMMENU_POPUP_CLOSE:
 +    symbol = 'r';
 +    break;
 +  default:
 +    ERR("Invalid popup magic bitmap %d\n", (int)popupMagic);
 +    return;
 +  }
 +  ZeroMemory(&lf, sizeof(LOGFONTW));
 +  InflateRect(r, -2, -2);
 +  lf.lfHeight = r->bottom - r->top;
 +  lf.lfWidth = 0;
 +  lf.lfWeight = FW_NORMAL;
 +  lf.lfCharSet = DEFAULT_CHARSET;
 +  lstrcpy(lf.lfFaceName, TEXT("Marlett"));
 +  hFont = CreateFontIndirect(&lf);
 +  /* save font and text color */
 +  hOldFont = SelectObject(dc, hFont);
 +  clrsave = GetTextColor(dc);
 +  bkmode = GetBkMode(dc);
 +  /* set color and drawing mode */
 +  SetBkMode(dc, TRANSPARENT);
 +  if (inactive)
 +  {
 +    /* draw shadow */
 +    if (!hilite)
 +    {
 +      SetTextColor(dc, GetSysColor(COLOR_HIGHLIGHTTEXT));
 +      TextOut(dc, r->left + 1, r->top + 1, &symbol, 1);
 +    }
 +  }
 +  SetTextColor(dc, GetSysColor(inactive ? COLOR_GRAYTEXT : (hilite ?
 COLOR_HIGHLIGHTTEXT : COLOR_MENUTEXT)));
 +  /* draw selected symbol */
 +  TextOut(dc, r->left, r->top, &symbol, 1);
 +  /* restore previous settings */
 +  SetTextColor(dc, clrsave);
 +  SelectObject(dc, hOldFont);
 +  SetBkMode(dc, bkmode);
 +  DeleteObject(hFont);
  }
  /***********************************************************************
 @@ -382,7 +442,7 @@
   Bmp = hbmpToDraw;
   /* Check if there is a magic menu item associated with this item */
 -  if (IS_MAGIC_ITEM(hbmpToDraw))
 +  if (IS_MAGIC_BITMAP(hbmpToDraw))
     {
       UINT Flags = 0;
       RECT r;
 @@ -459,8 +519,7 @@
           case (INT_PTR) HBMMENU_POPUP_RESTORE:
           case (INT_PTR) HBMMENU_POPUP_MAXIMIZE:
           case (INT_PTR) HBMMENU_POPUP_MINIMIZE:
 -          default:
 -            FIXME("Magic menu bitmap not implemented\n");
 +            MenuDrawPopupGlyph(Dc, &r, (INT_PTR)hbmpToDraw, Item->fState &
 MF_GRAYED, Item->fState & MF_HILITE);
             return;
         }
       InflateRect(&r, -1, -1);
 @@ -736,9 +795,17 @@
            checked = TRUE;
         }
      }
 -     if ((Item->hbmpItem)&& !( checked && (MenuInfo->dwStyle &
 MNS_CHECKORBMP)))
 +     if (Item->hbmpItem)
      {
 -        MenuDrawBitmapItem(Dc, Item, &Rect, MenuInfo->Self, WndOwner,
 Action, MenuBar);
 +       RECT bmpRect;
 +       CopyRect(&bmpRect, &Rect);
 +       if (!(MenuInfo->dwStyle & MNS_CHECKORBMP) &&
!(MenuInfo->dwStyle &
 MNS_NOCHECK))
 +         bmpRect.left += CheckBitmapWidth + 2;
 +       if (!(checked && (MenuInfo->dwStyle & MNS_CHECKORBMP)))
 +       {
 +         bmpRect.right = bmpRect.left + MenuInfo->maxBmpSize.cx;
 +         MenuDrawBitmapItem(Dc, Item, &bmpRect, MenuInfo->Self, WndOwner,
 Action, MenuBar);
 +       }
      }
      /* Draw the popup-menu arrow */
      if (0 != (Item->fType & MF_POPUP))
 @@ -767,7 +834,9 @@
       UINT uFormat = MenuBar ? DT_CENTER | DT_VCENTER | DT_SINGLELINE
                      : DT_LEFT | DT_VCENTER | DT_SINGLELINE;
 -      if( !(MenuInfo->dwStyle & MNS_CHECKORBMP))
 +      if(MenuInfo->dwStyle & MNS_CHECKORBMP)
 +             Rect.left += max(0, MenuInfo->maxBmpSize.cx -
 GetSystemMetrics(SM_CXMENUCHECK));
 +      else
              Rect.left += MenuInfo->maxBmpSize.cx;
       if (0 != (Item->fState & MFS_DEFAULT))
 @@ -779,11 +848,6 @@
         {
           Rect.left += MENU_BAR_ITEMS_SPACE / 2;
           Rect.right -= MENU_BAR_ITEMS_SPACE / 2;
 -        }
 -      if (Item->hbmpItem == HBMMENU_CALLBACK || MenuInfo->maxBmpSize.cx !=
 0 )
 -        {
 -          Rect.left += MenuInfo->maxBmpSize.cx;
 -          Rect.right -= MenuInfo->maxBmpSize.cx;
         }
       Text = (PWCHAR) Item->dwTypeData;
 @@ -1103,8 +1167,30 @@
  NTSTATUS WINAPI
  User32LoadSysMenuTemplateForKernel(PVOID Arguments, ULONG ArgumentLength)
  {
 -  LRESULT Result;
 -  Result = (LRESULT)LoadMenuW(User32Instance, L"SYSMENU");
 +  HMENU hmenu = LoadMenuW(User32Instance, L"SYSMENU");
 +  LRESULT Result = (LRESULT)hmenu;
 +
 +  // removing space for checkboxes from menu
 +  MENUINFO menuinfo = {0};
 +  menuinfo.cbSize = sizeof(menuinfo);
 +  menuinfo.fMask = MIM_STYLE;
 +  GetMenuInfo(hmenu, &menuinfo);
 +  menuinfo.dwStyle |= MNS_NOCHECK;
 +  SetMenuInfo(hmenu, &menuinfo);
 +
 +  // adding bitmaps to menu items
 +  MENUITEMINFOW info = {0};
 +  info.cbSize = sizeof(info);
 +  info.fMask |= MIIM_BITMAP;
 +  info.hbmpItem = HBMMENU_POPUP_MINIMIZE;
 +  SetMenuItemInfoW(hmenu, SC_MINIMIZE, FALSE, &info);
 +  info.hbmpItem = HBMMENU_POPUP_RESTORE;
 +  SetMenuItemInfoW(hmenu, SC_RESTORE, FALSE, &info);
 +  info.hbmpItem = HBMMENU_POPUP_MAXIMIZE;
 +  SetMenuItemInfoW(hmenu, SC_MAXIMIZE, FALSE, &info);
 +  info.hbmpItem = HBMMENU_POPUP_CLOSE;
 +  SetMenuItemInfoW(hmenu, SC_CLOSE, FALSE, &info);
 +
   return(ZwCallbackReturn(&Result, sizeof(LRESULT), STATUS_SUCCESS));
  }
 @@ -1247,7 +1333,6 @@
              MenuInfo->maxBmpSize.cy = abs(Size.cy);
          }
          MenuSetRosMenuInfo(MenuInfo);
 -         ItemInfo->Rect.right += Size.cx + 2;
          itemheight = Size.cy + 2;
          if( !(MenuInfo->dwStyle & MNS_NOCHECK))
 ------------------------------
 Message: 2
 Date: Wed, 1 Jul 2009 20:26:20 -0500
 From: James Tabor <jimtabor.rosdev(a)gmail.com>
 Subject: Re: [ros-dev] [ros-diffs] [mkupfer] 41733: Mikhail Denisenko
        <denisenkom AT gmail DOT com> - Add symbols to system menu by
 using
        marlett font. - See issue #4450 for details.
 To: ReactOS Development List <ros-dev(a)reactos.org>
 Message-ID:
        <b93fa9340907011826s2b31d0d3va7674a0446a00020(a)mail.gmail.com>
 Content-Type: text/plain; charset=ISO-8859-1
 Hi!
 On Wed, Jul 1, 2009 at 5:10 PM, Ged<gedmurphy(a)gmail.com> wrote:
  Did you read this patch before committing it?
 Your last patch fixed tchar usage and then this next patch introduces new 
 ones.
 
 Looks okay, interesting way for setting up the system menu for kernel
 space. Need to test this with every application in our test library to
 make sure this all works!
  @@ -1103,8 +1167,30 @@
  NTSTATUS WINAPI
  User32LoadSysMenuTemplateForKernel(PVOID Arguments, ULONG 
 ArgumentLength)
   {
 -  LRESULT Result;
 -  Result = (LRESULT)LoadMenuW(User32Instance, L"SYSMENU");
 +  HMENU hmenu = LoadMenuW(User32Instance, L"SYSMENU");
 +  LRESULT Result = (LRESULT)hmenu;
 +
 +  // removing space for checkboxes from menu
 +  MENUINFO menuinfo = {0};
 +  menuinfo.cbSize = sizeof(menuinfo);
 +  menuinfo.fMask = MIM_STYLE;
 +  GetMenuInfo(hmenu, &menuinfo);
 +  menuinfo.dwStyle |= MNS_NOCHECK;
 +  SetMenuInfo(hmenu, &menuinfo);
 +
 +  // adding bitmaps to menu items
 +  MENUITEMINFOW info = {0};
 +  info.cbSize = sizeof(info);
 +  info.fMask |= MIIM_BITMAP;
 +  info.hbmpItem = HBMMENU_POPUP_MINIMIZE;
 +  SetMenuItemInfoW(hmenu, SC_MINIMIZE, FALSE, &info);
 +  info.hbmpItem = HBMMENU_POPUP_RESTORE;
 +  SetMenuItemInfoW(hmenu, SC_RESTORE, FALSE, &info);
 +  info.hbmpItem = HBMMENU_POPUP_MAXIMIZE;
 +  SetMenuItemInfoW(hmenu, SC_MAXIMIZE, FALSE, &info);
 +  info.hbmpItem = HBMMENU_POPUP_CLOSE;
 +  SetMenuItemInfoW(hmenu, SC_CLOSE, FALSE, &info);
 +
   return(ZwCallbackReturn(&Result, sizeof(LRESULT), STATUS_SUCCESS));
  }
 
 ------------------------------
 _______________________________________________
 Ros-dev mailing list
 Ros-dev(a)reactos.org
 
http://www.reactos.org/mailman/listinfo/ros-dev
 End of Ros-dev Digest, Vol 59, Issue 2
 **************************************