Author: gedmurphy Date: Sun Jan 18 09:07:11 2009 New Revision: 38894
URL: http://svn.reactos.org/svn/reactos?rev=38894&view=rev Log: Reapply ros specific hack to stop the treeview scrollbars from continuous painting. I don't have time to look for the real bug at the moment. Also add Timo's propsheet and tooltip fixes
Modified: trunk/reactos/dll/win32/comctl32/comctl32_ros.diff trunk/reactos/dll/win32/comctl32/propsheet.c trunk/reactos/dll/win32/comctl32/tooltips.c trunk/reactos/dll/win32/comctl32/treeview.c
Modified: trunk/reactos/dll/win32/comctl32/comctl32_ros.diff URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/comctl32... ============================================================================== --- trunk/reactos/dll/win32/comctl32/comctl32_ros.diff [iso-8859-1] (original) +++ trunk/reactos/dll/win32/comctl32/comctl32_ros.diff [iso-8859-1] Sun Jan 18 09:07:11 2009 @@ -1,8 +1,8 @@ Index: propsheet.c =================================================================== ---- propsheet.c (revision 25766) +--- propsheet.c (revision 38890) +++ propsheet.c (working copy) -@@ -2431,6 +2431,28 @@ +@@ -2417,6 +2417,29 @@ return FALSE; }
@@ -28,10 +28,11 @@ + return TRUE; +} + ++ /****************************************************************************** * PROPSHEET_SetWizButtons * -@@ -2453,17 +2475,6 @@ +@@ -2438,17 +2461,6 @@ EnableWindow(hwndNext, FALSE); EnableWindow(hwndFinish, FALSE);
@@ -49,7 +50,7 @@ if (dwFlags & PSWIZB_BACK) EnableWindow(hwndBack, TRUE);
-@@ -2493,6 +2504,32 @@ +@@ -2478,6 +2490,31 @@ } else if (!(dwFlags & PSWIZB_DISABLEDFINISH)) EnableWindow(hwndFinish, TRUE); @@ -78,41 +79,40 @@ + + /* Now try to find an edit control that deserves focus */ + EnumChildWindows(PropSheet_GetCurrentPageHwnd(hwndDlg), EnumChildProc, 0); -+ }
/****************************************************************************** Index: tooltips.c =================================================================== ---- tooltips.c (revision 25790) +--- tooltips.c (revision 38890) +++ tooltips.c (working copy) -@@ -2486,7 +2486,34 @@ +@@ -2488,8 +2488,33 @@ + static LRESULT TOOLTIPS_NotifyFormat (HWND hwnd, WPARAM wParam, LPARAM lParam) { - FIXME ("hwnd=%p wParam=%lx lParam=%lx\n", hwnd, wParam, lParam); +- FIXME ("hwnd=%p wParam=%lx lParam=%lx\n", hwnd, wParam, lParam); + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); + TTTOOL_INFO *toolPtr = infoPtr->tools; + INT nResult;
-+ if (lParam == NF_QUERY) -+ { -+ if (toolPtr->bNotifyUnicode) -+ { ++ TRACE("hwnd=%p wParam=%lx lParam=%lx\n", hwnd, wParam, lParam); ++ ++ if (lParam == NF_QUERY) { ++ if (toolPtr->bNotifyUnicode) { + return NFR_UNICODE; + } else { + return NFR_ANSI; + } + } -+ else if (lParam == NF_REQUERY) -+ { ++ else if (lParam == NF_REQUERY) { + nResult = (INT) SendMessageW (toolPtr->hwnd, WM_NOTIFYFORMAT, + (WPARAM)hwnd, (LPARAM)NF_QUERY); + if (nResult == NFR_ANSI) { + toolPtr->bNotifyUnicode = FALSE; -+ TRACE(" -- WM_NOTIFYFORMAT returns: NFR_ANSI\n"); ++ TRACE(" -- WM_NOTIFYFORMAT returns: NFR_ANSI\n"); + } else if (nResult == NFR_UNICODE) { + toolPtr->bNotifyUnicode = TRUE; -+ TRACE(" -- WM_NOTIFYFORMAT returns: NFR_UNICODE\n"); ++ TRACE(" -- WM_NOTIFYFORMAT returns: NFR_UNICODE\n"); + } else { + TRACE (" -- WM_NOTIFYFORMAT returns: error!\n"); + } @@ -123,14 +123,19 @@
Index: treeview.c =================================================================== ---- D:/Wine-CVS/wine/dlls/comctl32/treeview.c Sun Jun 15 18:29:21 2008 -+++ D:/ReactOS-Trunk/reactos/dll/win32/comctl32/treeview.c Sun Jun 15 18:27:14 2008 -@@ -2826,8 +2826,6 @@ +--- treeview.c (revision 38890) ++++ treeview.c (working copy) +@@ -2830,7 +2830,12 @@ } }
- TREEVIEW_UpdateScrollBars(infoPtr); -- ++ // ++ // This is correct, but is causes and infinite loop of WM_PAINT messages, resulting ++ // in continuous painting of the scroll bar in reactos. Comment out until the real ++ // bug is found ++ // ++ //TREEVIEW_UpdateScrollBars(infoPtr); + if (infoPtr->cdmode & CDRF_NOTIFYPOSTPAINT) infoPtr->cdmode = - TREEVIEW_SendCustomDrawNotify(infoPtr, CDDS_POSTPAINT, hdc, rect);
Modified: trunk/reactos/dll/win32/comctl32/propsheet.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/propshee... ============================================================================== --- trunk/reactos/dll/win32/comctl32/propsheet.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/comctl32/propsheet.c [iso-8859-1] Sun Jan 18 09:07:11 2009 @@ -2417,6 +2417,29 @@ return FALSE; }
+BOOL CALLBACK +EnumChildProc(HWND hwnd, LPARAM lParam) +{ + WCHAR szType[20]; + RealGetWindowClassW(hwnd, szType, 20); + + if (strcmpW(szType, WC_EDITW) == 0) + { + if (IsWindowEnabled(hwnd) && IsWindowVisible(hwnd)) + { + SetFocus(hwnd); + return FALSE; + } + } + else + { + EnumChildWindows(hwnd, EnumChildProc, 0); + } + + return TRUE; +} + + /****************************************************************************** * PROPSHEET_SetWizButtons * @@ -2437,17 +2460,6 @@ EnableWindow(hwndBack, FALSE); EnableWindow(hwndNext, FALSE); EnableWindow(hwndFinish, FALSE); - - /* set the default pushbutton to an enabled button */ - if (((dwFlags & PSWIZB_FINISH) || psInfo->hasFinish) && !(dwFlags & PSWIZB_DISABLEDFINISH)) - SendMessageW(hwndDlg, DM_SETDEFID, IDC_FINISH_BUTTON, 0); - else if (dwFlags & PSWIZB_NEXT) - SendMessageW(hwndDlg, DM_SETDEFID, IDC_NEXT_BUTTON, 0); - else if (dwFlags & PSWIZB_BACK) - SendMessageW(hwndDlg, DM_SETDEFID, IDC_BACK_BUTTON, 0); - else - SendMessageW(hwndDlg, DM_SETDEFID, IDCANCEL, 0); -
if (dwFlags & PSWIZB_BACK) EnableWindow(hwndBack, TRUE); @@ -2478,6 +2490,31 @@ } else if (!(dwFlags & PSWIZB_DISABLEDFINISH)) EnableWindow(hwndFinish, TRUE); + + /* set the default pushbutton to an enabled button and give it focus */ + if (((dwFlags & PSWIZB_FINISH) || psInfo->hasFinish) && !(dwFlags & PSWIZB_DISABLEDFINISH)) + { + SendMessageW(hwndDlg, DM_SETDEFID, IDC_FINISH_BUTTON, 0); + SetFocus(hwndFinish); + } + else if (dwFlags & PSWIZB_NEXT) + { + SendMessageW(hwndDlg, DM_SETDEFID, IDC_NEXT_BUTTON, 0); + SetFocus(hwndNext); + } + else if (dwFlags & PSWIZB_BACK) + { + SendMessageW(hwndDlg, DM_SETDEFID, IDC_BACK_BUTTON, 0); + SetFocus(hwndBack); + } + else + { + SendMessageW(hwndDlg, DM_SETDEFID, IDCANCEL, 0); + SetFocus(GetDlgItem(hwndDlg, IDCANCEL)); + } + + /* Now try to find an edit control that deserves focus */ + EnumChildWindows(PropSheet_GetCurrentPageHwnd(hwndDlg), EnumChildProc, 0); }
/******************************************************************************
Modified: trunk/reactos/dll/win32/comctl32/tooltips.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/tooltips... ============================================================================== --- trunk/reactos/dll/win32/comctl32/tooltips.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/comctl32/tooltips.c [iso-8859-1] Sun Jan 18 09:07:11 2009 @@ -2488,8 +2488,33 @@ static LRESULT TOOLTIPS_NotifyFormat (HWND hwnd, WPARAM wParam, LPARAM lParam) { - FIXME ("hwnd=%p wParam=%lx lParam=%lx\n", hwnd, wParam, lParam); - + TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd); + TTTOOL_INFO *toolPtr = infoPtr->tools; + INT nResult; + + TRACE("hwnd=%p wParam=%lx lParam=%lx\n", hwnd, wParam, lParam); + + if (lParam == NF_QUERY) { + if (toolPtr->bNotifyUnicode) { + return NFR_UNICODE; + } else { + return NFR_ANSI; + } + } + else if (lParam == NF_REQUERY) { + nResult = (INT) SendMessageW (toolPtr->hwnd, WM_NOTIFYFORMAT, + (WPARAM)hwnd, (LPARAM)NF_QUERY); + if (nResult == NFR_ANSI) { + toolPtr->bNotifyUnicode = FALSE; + TRACE(" -- WM_NOTIFYFORMAT returns: NFR_ANSI\n"); + } else if (nResult == NFR_UNICODE) { + toolPtr->bNotifyUnicode = TRUE; + TRACE(" -- WM_NOTIFYFORMAT returns: NFR_UNICODE\n"); + } else { + TRACE (" -- WM_NOTIFYFORMAT returns: error!\n"); + } + return nResult; + } return 0; }
Modified: trunk/reactos/dll/win32/comctl32/treeview.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/treeview... ============================================================================== --- trunk/reactos/dll/win32/comctl32/treeview.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/comctl32/treeview.c [iso-8859-1] Sun Jan 18 09:07:11 2009 @@ -2830,7 +2830,12 @@ } }
- TREEVIEW_UpdateScrollBars(infoPtr); + // + // This is correct, but is causes and infinite loop of WM_PAINT messages, resulting + // in continuous painting of the scroll bar in reactos. Comment out until the real + // bug is found + // + //TREEVIEW_UpdateScrollBars(infoPtr);
if (infoPtr->cdmode & CDRF_NOTIFYPOSTPAINT) infoPtr->cdmode =