From 9bee914885f170bdcd4421a8ff8e37f387630444 Mon Sep 17 00:00:00 2001 From: Rafal Harabien Date: Sun, 1 May 2011 12:58:15 +0000 Subject: [PATCH] [EXPLORER] * Properly support WM_SYSCOLORCHANGE svn path=/trunk/; revision=51524 --- .../base/shell/explorer/desktop/desktop.cpp | 9 +++++---- .../base/shell/explorer/shell/mainframe.cpp | 19 +++++++++++++++++++ .../shell/explorer/shell/shellbrowser.cpp | 6 ++++++ .../shell/explorer/taskbar/desktopbar.cpp | 9 +++++++++ .../base/shell/explorer/taskbar/taskbar.cpp | 4 ++++ 5 files changed, 43 insertions(+), 4 deletions(-) diff --git a/reactos/base/shell/explorer/desktop/desktop.cpp b/reactos/base/shell/explorer/desktop/desktop.cpp index e7787055b8d..4c35f37243b 100644 --- a/reactos/base/shell/explorer/desktop/desktop.cpp +++ b/reactos/base/shell/explorer/desktop/desktop.cpp @@ -464,11 +464,12 @@ LRESULT DesktopWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam) goto def; case WM_SYSCOLORCHANGE: - // redraw background window - InvalidateRect(g_Globals._hwndShellView, NULL, TRUE); + // redraw background window - it's done by system + //InvalidateRect(g_Globals._hwndShellView, NULL, TRUE); - // forward message to shell view window to redraw icon backgrounds - SendMessage(g_Globals._hwndShellView, WM_SYSCOLORCHANGE, wparam, lparam); + // forward message to common controls + SendMessage(g_Globals._hwndShellView, WM_SYSCOLORCHANGE, 0, 0); + SendMessage(_desktopBar, WM_SYSCOLORCHANGE, 0, 0);OutputDebugStringA("WM_SYSCOLORCHANGE desktop\n"); break; default: def: diff --git a/reactos/base/shell/explorer/shell/mainframe.cpp b/reactos/base/shell/explorer/shell/mainframe.cpp index d03efbfcd7e..b3cf599b214 100644 --- a/reactos/base/shell/explorer/shell/mainframe.cpp +++ b/reactos/base/shell/explorer/shell/mainframe.cpp @@ -372,6 +372,11 @@ bool MainFrameBase::ProcessMessage(UINT nmsg, WPARAM wparam, LPARAM lparam, LRES SendMessage(_hstatusbar, SB_SETTEXT, 0, lparam); break; + case WM_SYSCOLORCHANGE: + SendMessage(_hwndrebar, WM_SYSCOLORCHANGE, 0, 0); + SendMessage(_htoolbar, WM_SYSCOLORCHANGE, 0, 0); + break; + default: return false; } @@ -993,6 +998,20 @@ LRESULT MDIMainFrame::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam) } return TRUE;} // success + case WM_SYSCOLORCHANGE: { + LRESULT res; + HWND hChild; + + /* Forward WM_SYSCOLORCHANGE to common controls */ + SendMessage(_hextrabar, WM_SYSCOLORCHANGE, 0, 0); + SendMessage(_hdrivebar, WM_SYSCOLORCHANGE, 0, 0); + + for(hChild = GetNextWindow(_hmdiclient,GW_CHILD); hChild; hChild = GetNextWindow(hChild, GW_HWNDNEXT)) + SendMessage(hChild, WM_SYSCOLORCHANGE, 0, 0); + + super::ProcessMessage(nmsg, wparam, lparam, &res); + break; } + default: { LRESULT res; diff --git a/reactos/base/shell/explorer/shell/shellbrowser.cpp b/reactos/base/shell/explorer/shell/shellbrowser.cpp index 17a23d01b52..44ba3750ff0 100644 --- a/reactos/base/shell/explorer/shell/shellbrowser.cpp +++ b/reactos/base/shell/explorer/shell/shellbrowser.cpp @@ -701,6 +701,12 @@ LRESULT MDIShellBrowserChild::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam) } return TRUE;} + case WM_SYSCOLORCHANGE: + /* Forward WM_SYSCOLORCHANGE to common controls */ + SendMessage(_left_hwnd, WM_SYSCOLORCHANGE, 0, 0); + SendMessage(_right_hwnd, WM_SYSCOLORCHANGE, 0, 0); + break; + default: return super::WndProc(nmsg, wparam, lparam); } diff --git a/reactos/base/shell/explorer/taskbar/desktopbar.cpp b/reactos/base/shell/explorer/taskbar/desktopbar.cpp index f6988279d65..c52a1671a06 100644 --- a/reactos/base/shell/explorer/taskbar/desktopbar.cpp +++ b/reactos/base/shell/explorer/taskbar/desktopbar.cpp @@ -345,6 +345,15 @@ LRESULT DesktopBar::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam) case PM_GET_NOTIFYAREA: return (LRESULT)(HWND)_hwndNotify; + case WM_SYSCOLORCHANGE:OutputDebugStringA("WM_SYSCOLORCHANGE desktopbar\n"); + /* Forward WM_SYSCOLORCHANGE to common controls */ +#ifndef _NO_REBAR + SendMessage(_hwndrebar, WM_SYSCOLORCHANGE, 0, 0); +#endif + SendMessage(_hwndQuickLaunch, WM_SYSCOLORCHANGE, 0, 0); + SendMessage(_hwndTaskBar, WM_SYSCOLORCHANGE, 0, 0); + break; + default: def: return super::WndProc(nmsg, wparam, lparam); } diff --git a/reactos/base/shell/explorer/taskbar/taskbar.cpp b/reactos/base/shell/explorer/taskbar/taskbar.cpp index 526c4c12759..d2c5144704d 100644 --- a/reactos/base/shell/explorer/taskbar/taskbar.cpp +++ b/reactos/base/shell/explorer/taskbar/taskbar.cpp @@ -202,6 +202,10 @@ LRESULT TaskBar::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam) case PM_GET_LAST_ACTIVE: return (LRESULT)(HWND)_last_foreground_wnd; + case WM_SYSCOLORCHANGE: + SendMessage(_htoolbar, WM_SYSCOLORCHANGE, 0, 0); + break; + default: def: if (nmsg == WM_SHELLHOOK) { switch(wparam) {