Author: rharabien
Date: Mon Feb 13 20:52:20 2012
New Revision: 55583
URL:
http://svn.reactos.org/svn/reactos?rev=55583&view=rev
Log:
[COMCTL32]
- Add support for LVS_EX_TRANSPARENTSHADOWTEXT style
[SHELL32]
- Add drop shadows support for desktop
- Set proper label color based on background color when drop shadows is disabled
- Update desktop colors when WM_SYSCOLORCHANGE or WM_SETTINGCHANGE msg is received
[BOOTDATA]
- Enable drop shadows by default (this option was hardcoded to 1 before)
[DESK]
- Send WM_SETTINGCHANGE with wParam = 0 when applying changes
[EXPLORER]
- Broadcast WM_SETTINGCHANGE message to shell view window
Modified:
trunk/reactos/base/shell/explorer/desktop/desktop.cpp
trunk/reactos/boot/bootdata/hivedef_i386.inf
trunk/reactos/dll/cpl/desk/background.c
trunk/reactos/dll/win32/comctl32/listview.c
trunk/reactos/dll/win32/shell32/desktop.cpp
trunk/reactos/dll/win32/shell32/shlview.cpp
Modified: trunk/reactos/base/shell/explorer/desktop/desktop.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/explorer/deskto…
==============================================================================
--- trunk/reactos/base/shell/explorer/desktop/desktop.cpp [iso-8859-1] (original)
+++ trunk/reactos/base/shell/explorer/desktop/desktop.cpp [iso-8859-1] Mon Feb 13 20:52:20
2012
@@ -467,10 +467,14 @@
// redraw background window - it's done by system
//InvalidateRect(g_Globals._hwndShellView, NULL, TRUE);
- // forward message to common controls
+ // forward message to common controls
SendMessage(g_Globals._hwndShellView, WM_SYSCOLORCHANGE, 0, 0);
SendMessage(_desktopBar, WM_SYSCOLORCHANGE, 0, 0);
break;
+
+ case WM_SETTINGCHANGE:
+ SendMessage(g_Globals._hwndShellView, nmsg, wparam, lparam);
+ break;
default: def:
return super::WndProc(nmsg, wparam, lparam);
Modified: trunk/reactos/boot/bootdata/hivedef_i386.inf
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/hivedef_i386…
==============================================================================
Binary files - no diff available.
Modified: trunk/reactos/dll/cpl/desk/background.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/background.c?…
==============================================================================
--- trunk/reactos/dll/cpl/desk/background.c [iso-8859-1] (original)
+++ trunk/reactos/dll/cpl/desk/background.c [iso-8859-1] Mon Feb 13 20:52:20 2012
@@ -812,6 +812,7 @@
SetWallpaper(pData);
if(pData->bClrBackgroundChanged)
SetDesktopBackColor(hwndDlg, pData);
+ SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
(LPARAM)_T(""));
return TRUE;
case LVN_ITEMCHANGED:
Modified: trunk/reactos/dll/win32/comctl32/listview.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/comctl32/listvie…
==============================================================================
--- trunk/reactos/dll/win32/comctl32/listview.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/comctl32/listview.c [iso-8859-1] Mon Feb 13 20:52:20 2012
@@ -4710,7 +4710,10 @@
if (infoPtr->uView == LV_VIEW_DETAILS && infoPtr->dwLvExStyle &
LVS_EX_GRIDLINES)
rcLabel.bottom--;
- DrawTextW(hdc, lvItem.pszText, -1, &rcLabel, uFormat);
+ if (!lprcFocus && (infoPtr->dwLvExStyle &
LVS_EX_TRANSPARENTSHADOWTEXT))
+ DrawShadowText(hdc, lvItem.pszText, -1, &rcLabel, uFormat, RGB(255, 255,
255), RGB(0, 0, 0), 2, 2);
+ else
+ DrawTextW(hdc, lvItem.pszText, -1, &rcLabel, uFormat);
postpaint:
if (cdsubitemmode & CDRF_NOTIFYPOSTPAINT)
Modified: trunk/reactos/dll/win32/shell32/desktop.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/desktop.…
==============================================================================
--- trunk/reactos/dll/win32/shell32/desktop.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/desktop.cpp [iso-8859-1] Mon Feb 13 20:52:20 2012
@@ -422,18 +422,18 @@
break;
case WM_SYSCOLORCHANGE:
+ case WM_SETTINGCHANGE:
{
- InvalidateRect(pThis->hWnd,
- NULL,
- TRUE);
-
- if (pThis->hWndShellView != NULL)
+ if (uMsg == WM_SYSCOLORCHANGE || wParam == SPI_SETDESKWALLPAPER || wParam
== 0)
{
- /* Forward the message */
- SendMessageW(pThis->hWndShellView,
- WM_SYSCOLORCHANGE,
- wParam,
- lParam);
+ if (pThis->hWndShellView != NULL)
+ {
+ /* Forward the message */
+ SendMessageW(pThis->hWndShellView,
+ uMsg,
+ wParam,
+ lParam);
+ }
}
break;
}
Modified: trunk/reactos/dll/win32/shell32/shlview.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/shlview.…
==============================================================================
--- trunk/reactos/dll/win32/shell32/shlview.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/shlview.cpp [iso-8859-1] Mon Feb 13 20:52:20 2012
@@ -111,6 +111,7 @@
void CheckToolbar();
void SetStyle(DWORD dwAdd, DWORD dwRemove);
BOOL CreateList();
+ void UpdateListColors();
BOOL InitList();
static INT CALLBACK CompareItems(LPVOID lParam1, LPVOID lParam2, LPARAM lpData);
static INT CALLBACK ListViewCompareItems(LPVOID lParam1, LPVOID lParam2, LPARAM
lpData);
@@ -207,6 +208,7 @@
LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);
LRESULT OnChangeNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
&bHandled);
LRESULT OnCustomItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
&bHandled);
+ LRESULT OnSettingChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
&bHandled);
static ATL::CWndClassInfo& GetWndClassInfo()
{
@@ -257,6 +259,7 @@
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground)
MESSAGE_HANDLER(WM_SYSCOLORCHANGE, OnSysColorChange)
MESSAGE_HANDLER(CWM_GETISHELLBROWSER, OnGetShellBrowser)
+ MESSAGE_HANDLER(WM_SETTINGCHANGE, OnSettingChange)
END_MSG_MAP()
BEGIN_COM_MAP(CDefView)
@@ -509,29 +512,42 @@
ListViewSortInfo.nHeaderID = -1;
ListViewSortInfo.nLastHeaderID = -1;
+ UpdateListColors();
+
+ /* UpdateShellSettings(); */
+ return TRUE;
+}
+
+void CDefView::UpdateListColors()
+{
if (FolderSettings.fFlags & FWF_DESKTOP)
{
- /*
- * FIXME: look at the registry value
- *
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ListviewShadow
- * and activate drop shadows if necessary
- */
- if (1)
+ /* Check if drop shadows option is enabled */
+ BOOL bDropShadow = FALSE;
+ DWORD cbDropShadow = sizeof(bDropShadow);
+ WCHAR wszBuf[16] = L"";
+
+ RegGetValueW(HKEY_CURRENT_USER,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
+ L"ListviewShadow", RRF_RT_DWORD, NULL, &bDropShadow,
&cbDropShadow);
+ if (bDropShadow && SystemParametersInfoW(SPI_GETDESKWALLPAPER,
_countof(wszBuf), wszBuf, 0) && wszBuf[0])
{
SendMessageW(hWndList, LVM_SETTEXTBKCOLOR, 0, CLR_NONE);
SendMessageW(hWndList, LVM_SETBKCOLOR, 0, CLR_NONE);
+ SendMessageW(hWndList, LVM_SETTEXTCOLOR, 0, RGB(255, 255, 255));
+ SendMessageW(hWndList, LVM_SETEXTENDEDLISTVIEWSTYLE,
LVS_EX_TRANSPARENTSHADOWTEXT, LVS_EX_TRANSPARENTSHADOWTEXT);
}
else
{
- SendMessageW(hWndList, LVM_SETTEXTBKCOLOR, 0, GetSysColor(COLOR_DESKTOP));
- SendMessageW(hWndList, LVM_SETBKCOLOR, 0, GetSysColor(COLOR_DESKTOP));
+ COLORREF crDesktop = GetSysColor(COLOR_DESKTOP);
+ SendMessageW(hWndList, LVM_SETTEXTBKCOLOR, 0, crDesktop);
+ SendMessageW(hWndList, LVM_SETBKCOLOR, 0, crDesktop);
+ if (GetRValue(crDesktop) + GetGValue(crDesktop) + GetBValue(crDesktop) >
128 * 3)
+ SendMessageW(hWndList, LVM_SETTEXTCOLOR, 0, RGB(0, 0, 0));
+ else
+ SendMessageW(hWndList, LVM_SETTEXTCOLOR, 0, RGB(255, 255, 255));
+ SendMessageW(hWndList, LVM_SETEXTENDEDLISTVIEWSTYLE,
LVS_EX_TRANSPARENTSHADOWTEXT, 0);
}
-
- SendMessageW(hWndList, LVM_SETTEXTCOLOR, 0, RGB(255, 255, 255));
- }
-
- /* UpdateShellSettings(); */
- return TRUE;
+ }
}
/**********************************************************
@@ -888,6 +904,9 @@
LRESULT CDefView::OnSysColorChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
&bHandled)
{
+ /* Update desktop labels color */
+ UpdateListColors();
+
/* Forward WM_SYSCOLORCHANGE to common controls */
return SendMessageW(hWndList, uMsg, 0, 0);
}
@@ -1285,7 +1304,9 @@
SetMenuDefaultItem(hMenu, FCIDM_SHVIEW_OPEN, MF_BYCOMMAND);
TRACE("-- track popup\n");
- uCommand = TrackPopupMenu( hMenu, TPM_LEFTALIGN | TPM_RETURNCMD, x,
y, 0, m_hWnd, NULL);
+ uCommand = TrackPopupMenu(hMenu,
+ TPM_LEFTALIGN | TPM_RETURNCMD |
TPM_LEFTBUTTON | TPM_RIGHTBUTTON,
+ x, y, 0, m_hWnd, NULL);
if (uCommand > 0)
{
@@ -1322,7 +1343,9 @@
CDefFolderMenu_Create2(NULL, NULL, cidl, (LPCITEMIDLIST*)apidl, pSFParent, NULL,
0, NULL, (IContextMenu**)&pCM);
pCM->QueryContextMenu(hMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, 0);
- uCommand = TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RETURNCMD, x, y, 0, m_hWnd,
NULL);
+ uCommand = TrackPopupMenu(hMenu,
+ TPM_LEFTALIGN | TPM_RETURNCMD | TPM_LEFTBUTTON |
TPM_RIGHTBUTTON,
+ x, y, 0, m_hWnd, NULL);
DestroyMenu(hMenu);
TRACE("-- (%p)->(uCommand=0x%08x )\n", this, uCommand);
@@ -2064,7 +2087,7 @@
}
/**********************************************************
-* ShellView_DoMeasureItem
+* CDefView::OnCustomItem
*/
LRESULT CDefView::OnCustomItem(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
&bHandled)
{
@@ -2079,6 +2102,15 @@
return TRUE;
else
return FALSE;
+}
+
+LRESULT CDefView::OnSettingChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
&bHandled)
+{
+ /* Wallpaper setting affects drop shadows effect */
+ if (wParam == SPI_SETDESKWALLPAPER || wParam == 0)
+ UpdateListColors();
+
+ return S_OK;
}
/**********************************************************