Commit e45d29cd authored by Richard Cohen's avatar Richard Cohen Committed by Alexandre Julliard

- Check FindFirstFile against INVALID_HANDLE_VALUE not 0.

- Display window & messagebox even if there are no applets.
parent ca10d8a5
...@@ -268,7 +268,12 @@ static LRESULT WINAPI Control_WndProc(HWND hWnd, UINT wMsg, ...@@ -268,7 +268,12 @@ static LRESULT WINAPI Control_WndProc(HWND hWnd, UINT wMsg,
Control_WndProc_Create(hWnd, (CREATESTRUCTA*)lParam2); Control_WndProc_Create(hWnd, (CREATESTRUCTA*)lParam2);
return 0; return 0;
case WM_DESTROY: case WM_DESTROY:
while ((panel->first = Control_UnloadApplet(panel->first))); {
CPlApplet* applet = panel->first;
while (applet)
applet = Control_UnloadApplet(applet);
}
PostQuitMessage(0);
break; break;
case WM_PAINT: case WM_PAINT:
return Control_WndProc_Paint(panel, lParam1); return Control_WndProc_Paint(panel, lParam1);
...@@ -288,7 +293,7 @@ static void Control_DoInterface(CPanel* panel, HWND hWnd, HINSTANCE hInst) ...@@ -288,7 +293,7 @@ static void Control_DoInterface(CPanel* panel, HWND hWnd, HINSTANCE hInst)
{ {
WNDCLASSA wc; WNDCLASSA wc;
MSG msg; MSG msg;
const CHAR* appName = "Wine Control Panel";
wc.style = CS_HREDRAW|CS_VREDRAW; wc.style = CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc = Control_WndProc; wc.lpfnWndProc = Control_WndProc;
wc.cbClsExtra = 0; wc.cbClsExtra = 0;
...@@ -302,16 +307,22 @@ static void Control_DoInterface(CPanel* panel, HWND hWnd, HINSTANCE hInst) ...@@ -302,16 +307,22 @@ static void Control_DoInterface(CPanel* panel, HWND hWnd, HINSTANCE hInst)
if (!RegisterClassA(&wc)) return; if (!RegisterClassA(&wc)) return;
CreateWindowExA(0, wc.lpszClassName, "Wine Control Panel", CreateWindowExA(0, wc.lpszClassName, appName,
WS_OVERLAPPEDWINDOW | WS_VISIBLE, WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
hWnd, NULL, hInst, panel); hWnd, NULL, hInst, panel);
if (!panel->hWnd) return; if (!panel->hWnd) return;
if (!panel->first) {
/* FIXME appName & message should be localized */
MessageBoxA(panel->hWnd, "Cannot load any applets", appName, MB_OK);
return;
}
while (GetMessageA(&msg, panel->hWnd, 0, 0)) { while (GetMessageA(&msg, panel->hWnd, 0, 0)) {
TranslateMessage(&msg); TranslateMessage(&msg);
DispatchMessageA(&msg); DispatchMessageA(&msg);
if (!panel->first) break;
} }
} }
...@@ -328,7 +339,7 @@ static void Control_DoWindow(CPanel* panel, HWND hWnd, HINSTANCE hInst) ...@@ -328,7 +339,7 @@ static void Control_DoWindow(CPanel* panel, HWND hWnd, HINSTANCE hInst)
*p++ = '\\'; *p++ = '\\';
lstrcpyW(p, wszAllCpl); lstrcpyW(p, wszAllCpl);
if ((h = FindFirstFileW(buffer, &fd)) != 0) { if ((h = FindFirstFileW(buffer, &fd)) != INVALID_HANDLE_VALUE) {
do { do {
lstrcpyW(p, fd.cFileName); lstrcpyW(p, fd.cFileName);
Control_LoadApplet(hWnd, buffer, panel); Control_LoadApplet(hWnd, buffer, panel);
...@@ -336,7 +347,7 @@ static void Control_DoWindow(CPanel* panel, HWND hWnd, HINSTANCE hInst) ...@@ -336,7 +347,7 @@ static void Control_DoWindow(CPanel* panel, HWND hWnd, HINSTANCE hInst)
FindClose(h); FindClose(h);
} }
if (panel->first) Control_DoInterface(panel, hWnd, hInst); Control_DoInterface(panel, hWnd, hInst);
} }
static void Control_DoLaunch(CPanel* panel, HWND hWnd, LPCWSTR wszCmd) static void Control_DoLaunch(CPanel* panel, HWND hWnd, LPCWSTR wszCmd)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment