Author: jimtabor
Date: Wed Aug 10 00:16:57 2016
New Revision: 72180
URL:
http://svn.reactos.org/svn/reactos?rev=72180&view=rev
Log:
[NtUser]
- Fix regression from r71846. See CORE-11479 for more details.
Modified:
trunk/reactos/win32ss/user/ntuser/nonclient.c
trunk/reactos/win32ss/user/ntuser/window.c
Modified: trunk/reactos/win32ss/user/ntuser/nonclient.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/noncli…
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/nonclient.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/nonclient.c [iso-8859-1] Wed Aug 10 00:16:57 2016
@@ -944,9 +944,12 @@
if (!(Style & WS_MINIMIZE))
{
/* Draw menu bar */
- if (HAS_MENU(pWnd, Style))
- {
- CurrentRect.top += MENU_DrawMenuBar(hDC, &CurrentRect, pWnd, FALSE);
+ if (pWnd->state & WNDS_HASMENU)
+ {
+ PMENU menu = UserGetMenuObject(UlongToHandle(pWnd->IDMenu)); // FIXME!
+ TempRect = CurrentRect;
+ TempRect.bottom = TempRect.top + menu->cyMenu; // Should be
pWnd->spmenu->cyMenu;
+ CurrentRect.top += MENU_DrawMenuBar(hDC, &TempRect, pWnd, FALSE);
}
if (ExStyle & WS_EX_CLIENTEDGE)
@@ -1110,11 +1113,14 @@
if (!(Style & WS_MINIMIZE))
{
/* Draw menu bar */
- if (HAS_MENU(pWnd, Style))
+ if (pWnd->state & WNDS_HASMENU)
{
if (!(Flags & DC_NOSENDMSG))
{
- CurrentRect.top += MENU_DrawMenuBar(hDC, &CurrentRect, pWnd, FALSE);
+ PMENU menu = UserGetMenuObject(UlongToHandle(pWnd->IDMenu)); // FIXME!
+ TempRect = CurrentRect;
+ TempRect.bottom = TempRect.top + menu->cyMenu; // Should be
pWnd->spmenu->cyMenu;
+ CurrentRect.top += MENU_DrawMenuBar(hDC, &TempRect, pWnd, FALSE);
}
}
Modified: trunk/reactos/win32ss/user/ntuser/window.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/ntuser/window…
==============================================================================
--- trunk/reactos/win32ss/user/ntuser/window.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/user/ntuser/window.c [iso-8859-1] Wed Aug 10 00:16:57 2016
@@ -3595,6 +3595,30 @@
else
Window->ExStyle &= ~WS_EX_WINDOWEDGE;
+ if ((OldValue & (WS_CHILD | WS_POPUP)) == WS_CHILD)
+ {
+ if ((NewValue & (WS_CHILD | WS_POPUP)) != WS_CHILD)
+ {
+ //// From child to non-child it should be null already.
+ ERR("IDMenu going null! %d\n",Window->IDMenu);
+ Window->IDMenu = 0; // Window->spmenu = 0;
+ }
+ }
+ else
+ {
+ if ((NewValue & (WS_CHILD | WS_POPUP)) == WS_CHILD)
+ {
+ PMENU pMenu = UserGetMenuObject(UlongToHandle(Window->IDMenu));
+ Window->state &= ~WNDS_HASMENU;
+ if (pMenu)
+ {
+ ERR("IDMenu released 0x%p\n",pMenu);
+ // ROS may not hold a lock after setting menu to window. But it
should!
+ //IntReleaseMenuObject(pMenu);
+ }
+ }
+ }
+
if ((Style.styleOld ^ Style.styleNew) & WS_VISIBLE)
{
if (Style.styleOld & WS_VISIBLE)
Window->head.pti->cVisWindows--;