[PATCH 19/45] [WinHelp]: activated back the shadow part of the popup

Eric Pouech eric.pouech at orange.fr
Sun Mar 23 04:19:14 CDT 2008




A+
---

 programs/winhelp/winhelp.c |   25 +++++++++++++++----------
 1 files changed, 15 insertions(+), 10 deletions(-)


diff --git a/programs/winhelp/winhelp.c b/programs/winhelp/winhelp.c
index 2ec0313..91ef1f8 100644
--- a/programs/winhelp/winhelp.c
+++ b/programs/winhelp/winhelp.c
@@ -672,6 +672,7 @@ BOOL WINHELP_CreateHelpWindow(HLPFILE_PAGE* page, HLPFILE_WINDOWINFO* wi,
     {
         HWND    hTextWnd = GetDlgItem(win->hMainWnd, CTL_ID_TEXT);
         DWORD   mask = SendMessage(hTextWnd, EM_GETEVENTMASK, 0, 0);
+        RECT    rect;
 
         WINHELP_FillRichEdit(hTextWnd, win);
 
@@ -681,14 +682,16 @@ BOOL WINHELP_CreateHelpWindow(HLPFILE_PAGE* page, HLPFILE_WINDOWINFO* wi,
         SendMessage(hTextWnd, EM_REQUESTRESIZE, 0, 0);
         SendMessage(hTextWnd, EM_SETEVENTMASK, 0, mask);
 
-#if 0
-        win->hShadowWnd = CreateWindowEx(WS_EX_TOOLWINDOW, SHADOW_WIN_CLASS_NAME, "", WS_POPUP,
-                                         origin.x + SHADOW_DX, origin.y + SHADOW_DY,
-                                         new_window_size.cx, new_window_size.cy,
-                                         0, 0, Globals.hInstance, 0);
-        SetWindowPos(win->hShadowWnd, hWnd, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE);
-        ShowWindow(win->hShadowWnd, SW_NORMAL);
-#endif
+        GetWindowRect(win->hMainWnd, &rect);
+        win->hShadowWnd = CreateWindowEx(WS_EX_TOOLWINDOW, SHADOW_WIN_CLASS_NAME,
+                                         "", WS_POPUP | WS_VISIBLE,
+                                         rect.left + SHADOW_DX, rect.top + SHADOW_DY,
+                                         rect.right - rect.left,
+                                         rect.bottom - rect.top,
+                                         Globals.active_win->hMainWnd, 0,
+                                         Globals.hInstance, NULL);
+        SetWindowPos(win->hMainWnd, win->hShadowWnd, 0, 0, 0, 0,
+                     SWP_NOSIZE | SWP_NOMOVE);
     }
     else
     {
@@ -1185,7 +1188,7 @@ static LRESULT CALLBACK WINHELP_HistoryWndProc(HWND hWnd, UINT msg, WPARAM wPara
  */
 static LRESULT CALLBACK WINHELP_ShadowWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
 {
-    return DefWindowProc(hWnd, msg, wParam, lParam);
+    return WINHELP_CheckPopup(hWnd, msg, wParam, lParam, NULL) ? 0L : DefWindowProc(hWnd, msg, wParam, lParam);
 }
 
 /***********************************************************************
@@ -1215,7 +1218,9 @@ static BOOL WINHELP_CheckPopup(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam
         }
         break;
     case WM_ACTIVATE:
-        if (wParam != WA_INACTIVE || (HWND)lParam == Globals.active_win->hMainWnd || (HWND)lParam == Globals.active_popup->hMainWnd)
+        if (wParam != WA_INACTIVE || (HWND)lParam == Globals.active_win->hMainWnd ||
+            (HWND)lParam == Globals.active_popup->hMainWnd ||
+            GetWindow((HWND)lParam, GW_OWNER) == Globals.active_win->hMainWnd)
             break;
     case WM_LBUTTONDOWN:
     case WM_MBUTTONDOWN:





More information about the wine-patches mailing list