Fixed handling of control focus.

diff --git a/programs/regedit/childwnd.c b/programs/regedit/childwnd.c
index b76526b..bb031f6 100644
--- a/programs/regedit/childwnd.c
+++ b/programs/regedit/childwnd.c
@@ -126,6 +126,7 @@
         pChildWnd->hWnd = hWnd;
         pChildWnd->hTreeWnd = CreateTreeView(hWnd, pChildWnd->szPath, TREE_WINDOW);
         pChildWnd->hListWnd = CreateListView(hWnd, LIST_WINDOW/*, pChildWnd->szPath*/);
+        SetFocus(pChildWnd->hTreeWnd);
         break;
     case WM_COMMAND:
         if (!_CmdWndProc(hWnd, message, wParam, lParam)) {
@@ -243,12 +244,17 @@
 		    }
                 }
                 break;
+	    case NM_SETFOCUS:
+		pChildWnd->nFocusPanel = 1;
+		break;
             default:
                 goto def;
             }
         } else
             if ((int)wParam == LIST_WINDOW) {
-                if (!SendMessage(pChildWnd->hListWnd, message, wParam, lParam)) {
+		if (((LPNMHDR)lParam)->code == NM_SETFOCUS) {
+		    pChildWnd->nFocusPanel = 0;
+		} else if (!SendMessage(pChildWnd->hListWnd, message, wParam, lParam)) {
                     goto def;
                 }
             }
diff --git a/programs/regedit/listview.c b/programs/regedit/listview.c
index bb75321..1a2d3b6 100644
--- a/programs/regedit/listview.c
+++ b/programs/regedit/listview.c
@@ -375,7 +375,7 @@
     /* Get the dimensions of the parent window's client area, and create the list view control.  */
     GetClientRect(hwndParent, &rcClient);
     hwndLV = CreateWindowEx(WS_EX_CLIENTEDGE, WC_LISTVIEW, _T("List View"),
-                            WS_VISIBLE | WS_CHILD | LVS_REPORT | LVS_EDITLABELS,
+                            WS_VISIBLE | WS_CHILD | WS_TABSTOP | LVS_REPORT | LVS_EDITLABELS,
                             0, 0, rcClient.right, rcClient.bottom,
                             hwndParent, (HMENU)id, hInst, NULL);
     if (!hwndLV) return NULL;
diff --git a/programs/regedit/main.c b/programs/regedit/main.c
index 8dbaba9..4f2f5db 100644
--- a/programs/regedit/main.c
+++ b/programs/regedit/main.c
@@ -186,7 +186,8 @@
 
     /* Main message loop */
     while (GetMessage(&msg, (HWND)NULL, 0, 0)) {
-        if (!TranslateAccelerator(msg.hwnd, hAccel, &msg)) {
+        if (!TranslateAccelerator(msg.hwnd, hAccel, &msg) &&
+	    !IsDialogMessage(hFrameWnd, &msg)) {
             TranslateMessage(&msg);
             DispatchMessage(&msg);
         }