mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-03 12:23:25 +00:00
fix text align when using HBMMENU_CALLBACK (patch by Brezenbak)
svn path=/trunk/; revision=20925
This commit is contained in:
@@ -63,6 +63,7 @@
|
||||
|
||||
#define IS_MAGIC_ITEM(Bmp) ((int) Bmp <12)
|
||||
|
||||
#define MENU_ITEM_HBMP_SPACE (5)
|
||||
#define MENU_BAR_ITEMS_SPACE (12)
|
||||
#define SEPARATOR_HEIGHT (5)
|
||||
#define MENU_TAB_SPACE (8)
|
||||
@@ -763,6 +764,11 @@ MenuDrawMenuItem(HWND Wnd, PROSMENUINFO MenuInfo, HWND WndOwner, HDC Dc,
|
||||
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;
|
||||
for (i = 0; L'\0' != Text[i]; i++)
|
||||
@@ -784,7 +790,6 @@ MenuDrawMenuItem(HWND Wnd, PROSMENUINFO MenuInfo, HWND WndOwner, HDC Dc,
|
||||
}
|
||||
SetTextColor(Dc, RGB(0x80, 0x80, 0x80));
|
||||
}
|
||||
|
||||
DrawTextW(Dc, Text, i, &Rect, uFormat);
|
||||
|
||||
/* paint the shortcut text */
|
||||
@@ -1130,7 +1135,7 @@ MenuCleanup(VOID)
|
||||
* Calculate the size of the menu item and store it in ItemInfo->rect.
|
||||
*/
|
||||
static void FASTCALL
|
||||
MenuCalcItemSize(HDC Dc, PROSMENUITEMINFO ItemInfo, HWND WndOwner,
|
||||
MenuCalcItemSize(HDC Dc, PROSMENUITEMINFO ItemInfo, PROSMENUINFO MenuInfo, HWND WndOwner,
|
||||
INT OrgX, INT OrgY, BOOL MenuBar)
|
||||
{
|
||||
PWCHAR p;
|
||||
@@ -1203,7 +1208,14 @@ MenuCalcItemSize(HDC Dc, PROSMENUITEMINFO ItemInfo, HWND WndOwner,
|
||||
measItem.itemData = ItemInfo->dwItemData;
|
||||
SendMessageW( WndOwner, WM_MEASUREITEM, ItemInfo->wID, (LPARAM)&measItem);
|
||||
ItemInfo->Rect.right = ItemInfo->Rect.left + measItem.itemWidth;
|
||||
}
|
||||
if (MenuInfo->maxBmpSize.cx < abs(measItem.itemWidth) + MENU_ITEM_HBMP_SPACE ||
|
||||
MenuInfo->maxBmpSize.cy < abs(measItem.itemHeight))
|
||||
{
|
||||
MenuInfo->maxBmpSize.cx = abs(measItem.itemWidth) + MENU_ITEM_HBMP_SPACE;
|
||||
MenuInfo->maxBmpSize.cy = abs(measItem.itemHeight);
|
||||
MenuSetRosMenuInfo(MenuInfo);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SIZE Size;
|
||||
@@ -1320,7 +1332,7 @@ MenuPopupMenuCalcSize(PROSMENUINFO MenuInfo, HWND WndOwner)
|
||||
break;
|
||||
}
|
||||
|
||||
MenuCalcItemSize(Dc, &ItemInfo, WndOwner, OrgX, OrgY, FALSE);
|
||||
MenuCalcItemSize(Dc, &ItemInfo, MenuInfo, WndOwner, OrgX, OrgY, FALSE);
|
||||
if (! MenuSetRosMenuItemInfo(MenuInfo->Self, i, &ItemInfo))
|
||||
{
|
||||
MenuCleanupRosMenuItemInfo(&ItemInfo);
|
||||
@@ -1426,7 +1438,7 @@ MenuMenuBarCalcSize(HDC Dc, LPRECT Rect, PROSMENUINFO MenuInfo, HWND WndOwner)
|
||||
}
|
||||
|
||||
DPRINT("calling MENU_CalcItemSize org=(%d, %d)\n", OrgX, OrgY);
|
||||
MenuCalcItemSize(Dc, &ItemInfo, WndOwner, OrgX, OrgY, TRUE);
|
||||
MenuCalcItemSize(Dc, &ItemInfo, MenuInfo, WndOwner, OrgX, OrgY, TRUE);
|
||||
if (! MenuSetRosMenuItemInfo(MenuInfo->Self, i, &ItemInfo))
|
||||
{
|
||||
MenuCleanupRosMenuItemInfo(&ItemInfo);
|
||||
|
||||
@@ -486,7 +486,11 @@ IntGetMenuInfo(PMENU_OBJECT Menu, PROSMENUINFO lpmi)
|
||||
(char *) &Menu->MenuInfo + sizeof(MENUINFO),
|
||||
lpmi->cbSize - sizeof(MENUINFO));
|
||||
}
|
||||
|
||||
if (sizeof(ROSMENUINFO) == lpmi->cbSize)
|
||||
{
|
||||
lpmi->maxBmpSize.cx = Menu->MenuInfo.maxBmpSize.cx;
|
||||
lpmi->maxBmpSize.cy = Menu->MenuInfo.maxBmpSize.cy;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -530,7 +534,11 @@ IntSetMenuInfo(PMENU_OBJECT Menu, PROSMENUINFO lpmi)
|
||||
Menu->MenuInfo.WndOwner = lpmi->WndOwner;
|
||||
Menu->MenuInfo.TimeToHide = lpmi->TimeToHide;
|
||||
}
|
||||
|
||||
if (sizeof(ROSMENUINFO) == lpmi->cbSize)
|
||||
{
|
||||
Menu->MenuInfo.maxBmpSize.cx = lpmi->maxBmpSize.cx;
|
||||
Menu->MenuInfo.maxBmpSize.cy = lpmi->maxBmpSize.cy;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user