Merge 14981:15268 from trunk
[reactos.git] / rosapps / lib / dflat32 / text.c
1 /* -------------- text.c -------------- */
2
3 #include "dflat32/dflat.h"
4
5 int TextProc(DFWINDOW wnd, DFMESSAGE msg, PARAM p1, PARAM p2)
6 {
7 int i, len;
8 CTLWINDOW *ct = GetControl(wnd);
9 char *cp, *cp2 = ct->itext;
10 char *ptr;
11
12 switch (msg)
13 {
14 case SETFOCUS:
15 return TRUE;
16
17 case LEFT_BUTTON:
18 return TRUE;
19
20 case PAINT:
21 if (ct == NULL ||
22 ct->itext == NULL ||
23 GetText(wnd) != NULL)
24 break;
25 len = min(ct->dwnd.h, MsgHeight(cp2));
26
27 ptr = DFmalloc (strlen (cp2) + 1);
28 strcpy (ptr, cp2);
29 cp = ptr;
30 for (i = 0; i < len; i++)
31 {
32 int mlen;
33 char *txt = cp;
34 char *cp1 = cp;
35 char *np = strchr(cp, '\n');
36 if (np != NULL)
37 *np = '\0';
38 mlen = strlen(cp);
39 while ((cp1=strchr(cp1,SHORTCUTCHAR)) != NULL)
40 {
41 mlen += 3;
42 cp1++;
43 }
44
45 if (np != NULL)
46 *np = '\n';
47 txt = DFmalloc(mlen+1);
48 CopyCommand(txt, cp, FALSE, WndBackground(wnd));
49 txt[mlen] = '\0';
50 DfSendMessage(wnd, ADDTEXT, (PARAM)txt, 0);
51 if ((cp = strchr(cp, '\n')) != NULL)
52 cp++;
53 free(txt);
54 }
55 free (ptr);
56 break;
57
58 default:
59 break;
60 }
61
62 return BaseWndProc(TEXT, wnd, msg, p1, p2);
63 }
64
65 /* EOF */