[SHELL32]

- Minor stylistic whitespace changes.
- Use 'IDA_DESKBROWSER' instead of hardcoding its value.
- The shell progman window uses the COLOR_DESKTOP as its hbrBackground: partly revert r66271.
- Correctly initialize rcDesk structure before using it for a CreateWindowEx call.

svn path=/trunk/; revision=71524
This commit is contained in:
Hermès Bélusca-Maïto 2016-06-04 23:29:34 +00:00
parent 4e9504f015
commit d63c3a89ad

View file

@ -24,8 +24,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(desktop);
#define SHDESK_TAG 'KSED' #define SHDESK_TAG 'KSED'
static const WCHAR szProgmanClassName [] = L"Progman"; static const WCHAR szProgmanClassName[] = L"Progman";
static const WCHAR szProgmanWindowName [] = L"Program Manager"; static const WCHAR szProgmanWindowName[] = L"Program Manager";
class CDesktopBrowser : class CDesktopBrowser :
public CComObjectRootEx<CComMultiThreadModelNoCS>, public CComObjectRootEx<CComMultiThreadModelNoCS>,
@ -39,10 +39,10 @@ public:
private: private:
HWND hWnd; HWND hWnd;
HWND hWndShellView; HWND hWndShellView;
HWND hWndDesktopListView; HWND hWndDesktopListView; // FIXME: Unused
CComPtr<IShellDesktopTray> ShellDesk; CComPtr<IShellDesktopTray> ShellDesk;
CComPtr<IShellView> DesktopView; CComPtr<IShellView> DesktopView;
CComPtr<IShellBrowser> DefaultShellBrowser; CComPtr<IShellBrowser> DefaultShellBrowser;
LPITEMIDLIST pidlDesktopDirectory; LPITEMIDLIST pidlDesktopDirectory;
LPITEMIDLIST pidlDesktop; LPITEMIDLIST pidlDesktop;
@ -52,7 +52,7 @@ public:
CDesktopBrowser(); CDesktopBrowser();
~CDesktopBrowser(); ~CDesktopBrowser();
HRESULT Initialize(HWND hWndx, IShellDesktopTray *ShellDeskx); HRESULT Initialize(HWND hWndx, IShellDesktopTray *ShellDeskx);
HWND FindDesktopListView (); HWND FindDesktopListView();
BOOL CreateDeskWnd(); BOOL CreateDeskWnd();
HWND DesktopGetWindowControl(IN UINT id); HWND DesktopGetWindowControl(IN UINT id);
LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam); LRESULT OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam);
@ -186,7 +186,7 @@ static CDesktopBrowser *SHDESK_Create(HWND hWnd, LPCREATESTRUCT lpCreateStruct)
return pThis; return pThis;
} }
HWND CDesktopBrowser::FindDesktopListView () HWND CDesktopBrowser::FindDesktopListView()
{ {
return FindWindowExW(hWndShellView, NULL, WC_LISTVIEW, NULL); return FindWindowExW(hWndShellView, NULL, WC_LISTVIEW, NULL);
} }
@ -203,7 +203,7 @@ BOOL CDesktopBrowser::CreateDeskWnd()
} }
fs.ViewMode = FVM_ICON; fs.ViewMode = FVM_ICON;
fs.fFlags = FWF_DESKTOP | FWF_NOCLIENTEDGE | FWF_NOSCROLL | FWF_TRANSPARENT; fs.fFlags = FWF_DESKTOP | FWF_NOCLIENTEDGE | FWF_NOSCROLL | FWF_TRANSPARENT;
hRet = DesktopView->CreateViewWindow(NULL, &fs, (IShellBrowser *)this, &rcClient, &hWndShellView); hRet = DesktopView->CreateViewWindow(NULL, &fs, (IShellBrowser *)this, &rcClient, &hWndShellView);
if (!SUCCEEDED(hRet)) if (!SUCCEEDED(hRet))
return FALSE; return FALSE;
@ -452,25 +452,26 @@ LRESULT CALLBACK CDesktopBrowser::ProgmanWindowProc(IN HWND hwnd, IN UINT uMsg,
break; break;
case WM_SIZE: case WM_SIZE:
{
if (wParam == SIZE_MINIMIZED) if (wParam == SIZE_MINIMIZED)
{ {
/* Hey, we're the desktop!!! */ /* Hey, we're the desktop!!! */
ShowWindow(hwnd, ShowWindow(hwnd, SW_RESTORE);
SW_RESTORE);
} }
else else
{ {
RECT rcDesktop; RECT rcDesktop;
rcDesktop.left = GetSystemMetrics(SM_XVIRTUALSCREEN); rcDesktop.left = GetSystemMetrics(SM_XVIRTUALSCREEN);
rcDesktop.top = GetSystemMetrics(SM_YVIRTUALSCREEN); rcDesktop.top = GetSystemMetrics(SM_YVIRTUALSCREEN);
rcDesktop.right = GetSystemMetrics(SM_CXVIRTUALSCREEN); rcDesktop.right = GetSystemMetrics(SM_CXVIRTUALSCREEN);
rcDesktop.bottom = GetSystemMetrics(SM_CYVIRTUALSCREEN); rcDesktop.bottom = GetSystemMetrics(SM_CYVIRTUALSCREEN);
/* FIXME: Update work area */ /* FIXME: Update work area */
DBG_UNREFERENCED_LOCAL_VARIABLE(rcDesktop); DBG_UNREFERENCED_LOCAL_VARIABLE(rcDesktop);
} }
break; break;
}
case WM_SYSCOLORCHANGE: case WM_SYSCOLORCHANGE:
case WM_SETTINGCHANGE: case WM_SETTINGCHANGE:
@ -496,7 +497,7 @@ LRESULT CALLBACK CDesktopBrowser::ProgmanWindowProc(IN HWND hwnd, IN UINT uMsg,
if (!pThis->CreateDeskWnd()) if (!pThis->CreateDeskWnd())
WARN("Could not create the desktop view control!\n"); WARN("Could not create the desktop view control!\n");
pThis->m_hAccel = LoadAcceleratorsW(shell32_hInstance, MAKEINTRESOURCEW(3)); pThis->m_hAccel = LoadAcceleratorsW(shell32_hInstance, MAKEINTRESOURCEW(IDA_DESKBROWSER));
break; break;
} }
@ -511,9 +512,7 @@ LRESULT CALLBACK CDesktopBrowser::ProgmanWindowProc(IN HWND hwnd, IN UINT uMsg,
break; break;
} }
SetWindowLongPtrW(hwnd, SetWindowLongPtrW(hwnd, 0, (LONG_PTR)pThis);
0,
(LONG_PTR)pThis);
Ret = TRUE; Ret = TRUE;
break; break;
} }
@ -557,7 +556,7 @@ RegisterProgmanWindowClass(VOID)
wcProgman.hInstance = shell32_hInstance; wcProgman.hInstance = shell32_hInstance;
wcProgman.hIcon = NULL; wcProgman.hIcon = NULL;
wcProgman.hCursor = LoadCursorW(NULL, IDC_ARROW); wcProgman.hCursor = LoadCursorW(NULL, IDC_ARROW);
wcProgman.hbrBackground = NULL; wcProgman.hbrBackground = (HBRUSH)(COLOR_DESKTOP + 1);
wcProgman.lpszMenuName = NULL; wcProgman.lpszMenuName = NULL;
wcProgman.lpszClassName = szProgmanClassName; wcProgman.lpszClassName = szProgmanClassName;
@ -586,15 +585,15 @@ HANDLE WINAPI SHCreateDesktop(IShellDesktopTray *ShellDesk)
return NULL; return NULL;
} }
rcDesk.left = GetSystemMetrics(SM_XVIRTUALSCREEN); rcDesk.left = GetSystemMetrics(SM_XVIRTUALSCREEN);
rcDesk.top = GetSystemMetrics(SM_YVIRTUALSCREEN); rcDesk.top = GetSystemMetrics(SM_YVIRTUALSCREEN);
rcDesk.right = rcDesk.left + GetSystemMetrics(SM_CXVIRTUALSCREEN); rcDesk.right = GetSystemMetrics(SM_CXVIRTUALSCREEN);
rcDesk.bottom = rcDesk.top + GetSystemMetrics(SM_CYVIRTUALSCREEN); rcDesk.bottom = GetSystemMetrics(SM_CYVIRTUALSCREEN);
if (IsRectEmpty(&rcDesk)) if (IsRectEmpty(&rcDesk))
{ {
rcDesk.left = rcDesk.top = 0; rcDesk.left = rcDesk.top = 0;
rcDesk.right = GetSystemMetrics(SM_CXSCREEN); rcDesk.right = GetSystemMetrics(SM_CXSCREEN);
rcDesk.bottom = GetSystemMetrics(SM_CYSCREEN); rcDesk.bottom = GetSystemMetrics(SM_CYSCREEN);
} }