mirror of
https://github.com/reactos/reactos.git
synced 2024-08-16 16:39:08 +00:00
66 lines
1.1 KiB
C
66 lines
1.1 KiB
C
/* -------------- text.c -------------- */
|
|
|
|
#include "dflat.h"
|
|
|
|
int TextProc(DFWINDOW wnd, DFMESSAGE msg, PARAM p1, PARAM p2)
|
|
{
|
|
int i, len;
|
|
CTLWINDOW *ct = GetControl(wnd);
|
|
char *cp, *cp2 = ct->itext;
|
|
char *ptr;
|
|
|
|
switch (msg)
|
|
{
|
|
case SETFOCUS:
|
|
return TRUE;
|
|
|
|
case LEFT_BUTTON:
|
|
return TRUE;
|
|
|
|
case PAINT:
|
|
if (ct == NULL ||
|
|
ct->itext == NULL ||
|
|
GetText(wnd) != NULL)
|
|
break;
|
|
len = min(ct->dwnd.h, MsgHeight(cp2));
|
|
|
|
ptr = DFmalloc (strlen (cp2) + 1);
|
|
strcpy (ptr, cp2);
|
|
cp = ptr;
|
|
for (i = 0; i < len; i++)
|
|
{
|
|
int mlen;
|
|
char *txt = cp;
|
|
char *cp1 = cp;
|
|
char *np = strchr(cp, '\n');
|
|
if (np != NULL)
|
|
*np = '\0';
|
|
mlen = strlen(cp);
|
|
while ((cp1=strchr(cp1,SHORTCUTCHAR)) != NULL)
|
|
{
|
|
mlen += 3;
|
|
cp1++;
|
|
}
|
|
|
|
if (np != NULL)
|
|
*np = '\n';
|
|
txt = DFmalloc(mlen+1);
|
|
CopyCommand(txt, cp, FALSE, WndBackground(wnd));
|
|
txt[mlen] = '\0';
|
|
DfSendMessage(wnd, ADDTEXT, (PARAM)txt, 0);
|
|
if ((cp = strchr(cp, '\n')) != NULL)
|
|
cp++;
|
|
free(txt);
|
|
}
|
|
free (ptr);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return BaseWndProc(TEXT, wnd, msg, p1, p2);
|
|
}
|
|
|
|
/* EOF */
|