[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