[Controls] Add tracing to the edit control.

Lionel Ulmer lionel.ulmer at free.fr
Sun Mar 28 04:22:27 CST 2004


In my efforts to try to do something else than D3D, I decided that I would
try to fix some of the 'bugs' in the edit control (like, for example, the
caret being displayed out of the edit box, bad flickering when scrolling or
doing a selection, ...).

For that, as everybody must know now, I am a sucker for human readable
traces to better understand the code.

           Lionel

Changelog:
 - add some TRACEing to the edit control

-- 
		 Lionel Ulmer - http://www.bbrox.org/
-------------- next part --------------
Index: controls/edit.c
===================================================================
RCS file: /home/wine/wine/controls/edit.c,v
retrieving revision 1.127
diff -u -r1.127 edit.c
--- controls/edit.c	12 Feb 2004 00:35:02 -0000	1.127
+++ controls/edit.c	28 Mar 2004 10:19:10 -0000
@@ -403,6 +403,138 @@
 		return DefWindowProcA(hwnd, msg, wParam, lParam);
 }
 
+typedef struct
+{
+    DWORD val;
+    const char* name;
+} em_flag_info;
+
+static const char *EditWndProc_dump_msg_name(UINT msg)
+{
+    int i;
+#define FE(x) { x, #x }
+    static const em_flag_info wm_msg_name[] = {
+	FE(EM_GETSEL16),
+	FE(EM_GETSEL),
+	FE(EM_SETSEL16),
+	FE(EM_SETSEL),
+	FE(EM_GETRECT16),
+	FE(EM_GETRECT),
+	FE(EM_SETRECT16),
+	FE(EM_SETRECT),
+	FE(EM_SETRECTNP16),
+	FE(EM_SETRECTNP),
+	FE(EM_SCROLL16),
+	FE(EM_SCROLL),
+	FE(EM_LINESCROLL16),
+	FE(EM_LINESCROLL),
+	FE(EM_SCROLLCARET16),
+	FE(EM_SCROLLCARET),
+	FE(EM_GETMODIFY16),
+	FE(EM_GETMODIFY),
+	FE(EM_SETMODIFY16),
+	FE(EM_SETMODIFY),
+	FE(EM_GETLINECOUNT16),
+	FE(EM_GETLINECOUNT),
+	FE(EM_LINEINDEX16),
+	FE(EM_LINEINDEX),
+	FE(EM_SETHANDLE16),
+	FE(EM_SETHANDLE),
+	FE(EM_GETHANDLE16),
+	FE(EM_GETHANDLE),
+	FE(EM_GETTHUMB16),
+	FE(EM_GETTHUMB),
+	FE(EM_LINELENGTH16),
+	FE(EM_LINELENGTH),
+	FE(EM_REPLACESEL16),
+	FE(EM_REPLACESEL),
+	FE(EM_GETLINE16),
+	FE(EM_GETLINE),
+	FE(EM_LIMITTEXT16),
+	FE(EM_SETLIMITTEXT),
+	FE(EM_CANUNDO16),
+	FE(EM_CANUNDO),
+	FE(EM_UNDO16),
+	FE(EM_UNDO),
+	FE(WM_UNDO),
+	FE(EM_FMTLINES16),
+	FE(EM_FMTLINES),
+	FE(EM_LINEFROMCHAR16),
+	FE(EM_LINEFROMCHAR),
+	FE(EM_SETTABSTOPS16),
+	FE(EM_SETTABSTOPS),
+	FE(EM_SETPASSWORDCHAR16),
+	FE(EM_SETPASSWORDCHAR),
+	FE(EM_EMPTYUNDOBUFFER16),
+	FE(EM_EMPTYUNDOBUFFER),
+	FE(EM_GETFIRSTVISIBLELINE16),
+	FE(EM_GETFIRSTVISIBLELINE),
+	FE(EM_SETREADONLY16),
+	FE(EM_SETREADONLY),
+	FE(EM_SETWORDBREAKPROC16),
+	FE(EM_SETWORDBREAKPROC),
+	FE(EM_GETWORDBREAKPROC16),
+	FE(EM_GETWORDBREAKPROC),
+	FE(EM_GETPASSWORDCHAR16),
+	FE(EM_GETPASSWORDCHAR),
+	FE(EM_SETMARGINS),
+	FE(EM_GETMARGINS),
+	FE(EM_GETLIMITTEXT),
+	FE(EM_POSFROMCHAR),
+	FE(EM_CHARFROMPOS),
+	FE(WM_GETDLGCODE),
+        FE(WM_IME_CHAR),
+	FE(WM_CHAR),
+	FE(WM_CLEAR),
+	FE(WM_COMMAND),
+        FE(WM_CONTEXTMENU),
+	FE(WM_COPY),
+	FE(WM_CREATE),
+	FE(WM_CUT),
+	FE(WM_ENABLE),
+	FE(WM_ERASEBKGND),
+	FE(WM_GETFONT),
+	FE(WM_GETTEXT),
+	FE(WM_GETTEXTLENGTH),
+	FE(WM_HSCROLL),
+	FE(WM_KEYDOWN),
+	FE(WM_KILLFOCUS),
+	FE(WM_LBUTTONDBLCLK),
+	FE(WM_LBUTTONDOWN),
+	FE(WM_LBUTTONUP),
+	FE(WM_MBUTTONDOWN),
+	FE(WM_MOUSEACTIVATE),
+	FE(WM_MOUSEMOVE),
+	FE(WM_PAINT),
+	FE(WM_PASTE),
+	FE(WM_SETFOCUS),
+	FE(WM_SETFONT),
+	FE(WM_SETREDRAW),
+	FE(WM_SETTEXT),
+	FE(WM_SIZE),
+        FE(WM_STYLECHANGED),
+        FE(WM_STYLECHANGING),
+	FE(WM_SYSKEYDOWN),
+	FE(WM_TIMER),
+	FE(WM_VSCROLL),
+        FE(WM_MOUSEWHEEL),
+	FE(WM_USER+15),
+	FE(0x00bf),
+	FE(WM_USER+16),
+	FE(0x00c0),
+	FE(WM_USER+19),
+	FE(0x00c3),
+	FE(WM_USER+26),
+	FE(0x00ca)
+    };
+    for (i = 0; i < (sizeof(wm_msg_name) / sizeof(wm_msg_name[0])); i++) {
+	if (wm_msg_name[i].val == msg) {
+	    return wm_msg_name[i].name;
+	}
+    }
+    return "Default";
+}
+
 /*********************************************************************
  *
  *	EditWndProc_common
@@ -422,7 +554,7 @@
 	EDITSTATE *es = (EDITSTATE *)GetWindowLongW( hwnd, 0 );
 	LRESULT result = 0;
 
-        TRACE("hwnd=%p msg=%x wparam=%x lparam=%lx\n", hwnd, msg, wParam, lParam);
+        TRACE("hwnd=%p msg=%x (%s) wparam=%x lparam=%lx\n", hwnd, msg, EditWndProc_dump_msg_name(msg), wParam, lParam);
 	
 	if (!es && msg != WM_NCCREATE)
 		return DefWindowProcT(hwnd, msg, wParam, lParam, unicode);
@@ -2129,6 +2261,7 @@
 			     BOOL after_wrap)
 {
 	LRESULT res = EDIT_EM_PosFromChar(es, pos, after_wrap);
+	TRACE("%d - %dx%d\n", pos, (short)LOWORD(res), (short)HIWORD(res));
 	SetCaretPos((short)LOWORD(res), (short)HIWORD(res));
 }
 
@@ -4772,7 +4905,10 @@
 	case SB_LINEDOWN:
 	case SB_PAGEUP:
 	case SB_PAGEDOWN:
-		TRACE("action %d\n", action);
+		TRACE("action %d (%s)\n", action, (action == SB_LINEUP ? "SB_LINEUP" :
+						   (action == SB_LINEDOWN ? "SB_LINEDOWN" :
+						    (action == SB_PAGEUP ? "SB_PAGEUP" :
+						     "SB_PAGEDOWN"))));
 		EDIT_EM_Scroll(es, action);
 		return 0;
 	case SB_TOP:


More information about the wine-patches mailing list