https://git.reactos.org/?p=reactos.git;a=commitdiff;h=76c898ca8e6072931c5aeb824279d51d3604051a

commit 76c898ca8e6072931c5aeb824279d51d3604051a
Author:     Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com>
AuthorDate: Wed Jan 24 17:51:59 2024 +0900
Commit:     GitHub <nore...@github.com>
CommitDate: Wed Jan 24 17:51:59 2024 +0900

    [SDK] cicuif.h: Fix CUIFMenuItem::InitMenuExtent (#6407)
    
    Supporting Language Bar...
    JIRA issue: CORE-19363
    Implement CUIFMenuItem::InitMenuExtent
    method.
---
 sdk/include/reactos/cicero/cicuif.h | 37 +++++++++++++++++++++++++++++++++++--
 1 file changed, 35 insertions(+), 2 deletions(-)

diff --git a/sdk/include/reactos/cicero/cicuif.h 
b/sdk/include/reactos/cicero/cicuif.h
index 7ae16842900..f6fcf6a9f0c 100644
--- a/sdk/include/reactos/cicero/cicuif.h
+++ b/sdk/include/reactos/cicero/cicuif.h
@@ -5979,11 +5979,44 @@ inline BOOL CUIFMenuItem::Init(UINT nMenuItemID, 
LPCWSTR pszText)
     return TRUE;
 }
 
-/// @unimplemented
 inline STDMETHODIMP_(void)
 CUIFMenuItem::InitMenuExtent()
 {
-    //FIXME
+    if (!m_pszMenuItemLeft)
+    {
+        if (m_hbmColor)
+        {
+            BITMAP bm;
+            ::GetObject(m_hbmColor, sizeof(bm), &bm);
+            m_MenuLeftExtent.cx = bm.bmWidth + 2;
+            m_MenuLeftExtent.cy = bm.bmHeight + 4;
+        }
+        else
+        {
+            m_MenuLeftExtent.cx = m_MenuLeftExtent.cy = 0;
+        }
+        return;
+    }
+
+    HDC hDC = ::GetDC(*m_pWindow);
+
+    HGDIOBJ hFontOld = ::SelectObject(hDC, m_hFont);
+    ::GetTextExtentPoint32W(hDC, m_pszMenuItemLeft, m_cchMenuItemLeft, 
&m_MenuLeftExtent);
+    m_MenuLeftExtent.cx += 16;
+    m_MenuLeftExtent.cy += 8;
+    if (m_pszMenuItemRight)
+    {
+        ::GetTextExtentPoint32W(hDC, m_pszMenuItemRight, m_cchMenuItemRight, 
&m_MenuRightExtent);
+        m_MenuRightExtent.cy += 8;
+    }
+    ::SelectObject(hDC, hFontOld);
+
+    if (m_pSubMenu)
+        m_MenuLeftExtent.cx += m_MenuLeftExtent.cy + 2;
+    if (m_pMenu->m_style & UIF_MENU_USE_OFF10)
+        m_MenuLeftExtent.cx += 24;
+
+    ::ReleaseDC(*m_pWindow, hDC);
 }
 
 inline BOOL CUIFMenuItem::IsCheck()

Reply via email to