Hiya Revision 41657 introduces a regression with VirtualBox Guest Additions video driver. Please see http://www.reactos.org/bugzilla/show_bug.cgi?id=4650 for more details.
Regards 2009/7/2 <[email protected]> > Send Ros-dev mailing list submissions to > [email protected] > > 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 > [email protected] > > You can reach the person managing the list at > [email protected] > > 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" <[email protected]> > 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: <[email protected]> > Message-ID: <001801c9fa98$af921810$0eb648...@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: [email protected] [mailto:[email protected]] > On Behalf Of [email protected] > Sent: 01 July 2009 22:57 > To: [email protected] > 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/menu.c?rev=41733&r1=41732&r2=41733&view=diff > > ============================================================================== > --- 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 <[email protected]> > 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 <[email protected]> > Message-ID: > <[email protected]> > Content-Type: text/plain; charset=ISO-8859-1 > > Hi! > > On Wed, Jul 1, 2009 at 5:10 PM, Ged<[email protected]> 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 > [email protected] > http://www.reactos.org/mailman/listinfo/ros-dev > > End of Ros-dev Digest, Vol 59, Issue 2 > ************************************** >
_______________________________________________ Ros-dev mailing list [email protected] http://www.reactos.org/mailman/listinfo/ros-dev
