[PATCH] Add search functionality to WINE regedit

Mike Hearn mike at navi.cx
Tue Mar 8 10:57:56 CST 2005


Jan Schiefer wrote:
> It's already fully cleaned up and ready to go! I know other people hate 
> my coding style... :)

Awww, it's not hate, you just need to be careful about how the code is 
laid out and what features you use. You'll need to fix this patch in a 
few places so here are some comments:

It's usually a good idea to submit the backend *first* and then the 
frontend, or better .. have them done all at once. Patches are supposed 
to be standalone, not stuff that'll only start working later (in the 
general case). For now I'd combine the two patches.

> +    GROUPBOX        "Look at",IDC_FIND_GROUPBOX, 5, 25, 194, 46, BS_GROUPBOX
> +    CHECKBOX	    "Keys", IDC_CHECKBOX_KEYS, 10, 36, 60, 10

Try and keep alignment consistent, otherwise there's just extra visual 
noise for no good reason!

> +LRESULT CALLBACK findedit_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
> +if(uMsg != 193) { // if uMsg == 193, tmpLen is always 0!
> +int tmpLen = SendMessage(hWnd, EM_LINELENGTH, 0, 0);
> +if(tmpLen != searchStringLen) {
> +if(tmpLen > 0)EnableWindow(hFindButton, TRUE);
> +else EnableWindow(hFindButton, FALSE);
> +searchStringLen = tmpLen;
> +}
> +}
> +return CallWindowProc ((WNDPROC) prevWndProcEdit, hWnd, uMsg, wParam, lParam);
> +}

I'm afraid that unless my mail client is playing up that type of code 
isn't acceptable. You need to use indenting! Also please try and space 
stuff out, eg rather than:  if(tmpLen > 0)EnableWindow use if (tmpLen > 
0) EnableWindow(....);

> +
> +INT_PTR CALLBACK searchingdlg_proc(HWND hWnd, UINT uMsg, WPARAM wParam,LPARAM lParam) {
> +    switch(uMsg) {
> +        case WM_INITDIALOG:
> +	//SearchRegistryRecrusively("",HKEY_CLASSES_ROOT,TRUE);

No C++/C99 style comments unfortunately. Also please don't submit 
patches that have code commented out for no obvious reason.

> +        break;
> +	case WM_COMMAND:
> +       	    switch(LOWORD(wParam)) {
> +	    case IDCANCEL:
> +	    HeapFree(GetProcessHeap(),0,searchString);
> +            EndDialog(hWnd, 0);
> +            return(TRUE);
> +	    break;
> +	}

Indenting is good, but indenting consistently is even better!

> +    break;
> +    }
> +
> +return(FALSE);
> +}
> +
> +INT_PTR CALLBACK finddlg_proc(HWND hWnd, UINT uMsg, WPARAM wParam,LPARAM lParam) {
> +
> +    switch(uMsg) {
> +        case WM_INITDIALOG:
> +            hFindEdit = GetDlgItem(hWnd, IDC_FINDEDIT);
> +	    hFindButton = GetDlgItem(hWnd, IDOK);
> +	    prevWndProcEdit = SetWindowLongPtr (hFindEdit, GWLP_WNDPROC, (LONG_PTR) findedit_proc);
> +	    EnableWindow(hFindButton, FALSE);      
> +	    CheckDlgButton( hWnd, IDC_CHECKBOX_KEYS, BST_CHECKED );
> +            CheckDlgButton( hWnd, IDC_CHECKBOX_VALUES, BST_CHECKED );
> +	    CheckDlgButton( hWnd, IDC_CHECKBOX_DATA, BST_CHECKED );
> +            return(TRUE);

I think you may be mixing tabs and spaces or something here. Also making 
return look like a function is rather non-standard for C, use it as a 
statement: return TRUE;

> +	break;
> +        case WM_COMMAND:
> +            switch(LOWORD(wParam)) {
> +	        case IDOK:		
> +		searchString = (LPTSTR)HeapAlloc(GetProcessHeap(),0,searchStringLen + 1);
> +		GetWindowText(hFindEdit, searchString, searchStringLen + 1 );
> +								
> +		searchForKeys = (IsDlgButtonChecked( hWnd, IDC_CHECKBOX_KEYS ) == BST_CHECKED);
> +		searchForValues = (IsDlgButtonChecked( hWnd, IDC_CHECKBOX_VALUES ) == BST_CHECKED);
> +		searchForData = (IsDlgButtonChecked( hWnd, IDC_CHECKBOX_DATA ) == BST_CHECKED);
> +		searchMatchWholeString = (IsDlgButtonChecked( hWnd, IDC_CHECKBOX_MATCHSTRING ) == BST_CHECKED);

If you're going to fall through please put a comment like /* fall 
through */ otherwise it looks an awful lot like a mistake.

thanks -mike



More information about the wine-devel mailing list