git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
InitRD - Libc++, libm, bochs, dbserver
[tpg/acess2.git]
/
Usermode
/
Applications
/
axwin3_src
/
libaxwin3.so_src
/
r_richtext.c
diff --git
a/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_richtext.c
b/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_richtext.c
index
9fed544
..
4e87f00
100644
(file)
--- a/
Usermode/Applications/axwin3_src/libaxwin3.so_src/r_richtext.c
+++ b/
Usermode/Applications/axwin3_src/libaxwin3.so_src/r_richtext.c
@@
-26,13
+26,20
@@
int AxWin3_RichText_MessageHandler(tHWND Window, int MessageID, int Size, void *
{
tRichText_Window *info = AxWin3_int_GetDataPtr(Window);
struct sWndMsg_KeyAction *keyaction = Data;
- _SysDebug("MessageID = %i", MessageID);
switch(MessageID)
{
case WNDMSG_KEYFIRE:
if(Size < sizeof(*keyaction)) return -1;
info->KeyCallback(Window, 2, keyaction->KeySym, keyaction->UCS32);
return 1;
+ case WNDMSG_KEYDOWN:
+ if(Size < sizeof(*keyaction)) return -1;
+ info->KeyCallback(Window, 1, keyaction->KeySym, keyaction->UCS32);
+ return 1;
+ case WNDMSG_KEYUP:
+ if(Size < sizeof(*keyaction)) return -1;
+ info->KeyCallback(Window, 0, keyaction->KeySym, 0);
+ return 1;
}
return 0;
}
@@
-47,7
+54,8
@@
static void _SendAttrib(tHWND Window, int Attr, uint32_t Value)
tHWND AxWin3_RichText_CreateWindow(tHWND Parent, int Flags)
{
- tHWND ret = AxWin3_CreateWindow(Parent, "RichText", Flags, sizeof(tRichText_Window), AxWin3_RichText_MessageHandler);
+ tHWND ret = AxWin3_CreateWindow(Parent, "RichText", Flags,
+ sizeof(tRichText_Window), AxWin3_RichText_MessageHandler);
// tRichText_Window *info = AxWin3_int_GetDataPtr(ret);
return ret;
}
@@
-103,6
+111,22
@@
void AxWin3_RichText_SetCursorPos(tHWND Window, int Row, int Column)
_SendAttrib(Window, _ATTR_CURSORPOS, ((Row & 0xFFFFF) << 12) | (Column & 0xFFF));
}
+void AxWin3_RichText_ScrollRange(tHWND Window, int FirstRow, int RangeCount, int DownCount)
+{
+ if( FirstRow < 0 )
+ return ;
+ if( RangeCount < -2 || RangeCount == 0 )
+ return ;
+ if( RangeCount > 0 && DownCount > RangeCount )
+ return ;
+
+ struct sRichTextIPC_ScrollRange msg;
+ msg.First = FirstRow;
+ msg.Range = RangeCount;
+ msg.Count = DownCount;
+ AxWin3_SendIPC(Window, IPC_RICHTEXT_SCROLLRANGE, sizeof(msg), &msg);
+}
+
void AxWin3_RichText_SendLine(tHWND Window, int Line, const char *Text)
{
// TODO: Local sanity check on `Line`?
UCC
git Repository :: git.ucc.asn.au