X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Usermode%2FApplications%2Faxwin3_src%2Flibaxwin3.so_src%2Fr_widget.c;h=450e4b4f41079f196e3c3b526767e811a7e10735;hb=8dcc3e209d0d728565a18c8dca2b0ba220b74a6f;hp=f63e0f7fe4406a8d369eb8944b487819fea60ceb;hpb=1314c5a4586315b526d84500d5b2ef5f7800b703;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_widget.c b/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_widget.c index f63e0f7f..450e4b4f 100644 --- a/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_widget.c +++ b/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_widget.c @@ -2,8 +2,8 @@ * AxWin3 Interface Library * - By John Hodge (thePowersGang) * - * main.c - * - Entrypoint and setup + * r_widget.c + * - Widget window type interface */ #include #include @@ -118,10 +118,12 @@ tAxWin3_Widget *AxWin3_Widget_AddWidget(tAxWin3_Widget *Parent, int Type, int Fl } if( newID == info->nElements ) { - info->nElements ++; + const int size_step = 4; + info->nElements += 4; info->Elements = realloc(info->Elements, sizeof(*info->Elements)*info->nElements); - newID = info->nElements - 1; - _SysDebug("Expanded and allocated %i", newID); + newID = info->nElements - 4; + memset( &info->Elements[newID+1], 0, (size_step-1)*sizeof(info->Elements)); + _SysDebug("Expanded to %i and allocated %i", info->nElements, newID); } else _SysDebug("Allocated %i", newID); @@ -225,6 +227,27 @@ void AxWin3_Widget_SetText(tAxWin3_Widget *Widget, const char *Text) AxWin3_SendMessage(Widget->Window, Widget->Window, MSG_WIDGET_SETTEXT, sizeof(buf), buf); } +char *AxWin3_Widget_GetText(tAxWin3_Widget *Widget) +{ + char buf[sizeof(tWidgetMsg_SetText)]; + tWidgetMsg_SetText *msg = (void*)buf; + size_t retmsg_size; + + msg->WidgetID = Widget->ID; + + AxWin3_SendMessage(Widget->Window, Widget->Window, MSG_WIDGET_GETTEXT, sizeof(buf), buf); + + msg = AxWin3_WaitMessage(Widget->Window, MSG_WIDGET_GETTEXT, &retmsg_size); + if( retmsg_size < sizeof(*msg) ) { + free(msg); + return NULL; + } + + char *ret = strndup(msg->Text, retmsg_size - sizeof(*msg)); + free(msg); + return ret; +} + void AxWin3_Widget_SetColour(tAxWin3_Widget *Widget, int Index, tAxWin3_Colour Colour) { tWidgetMsg_SetColour msg;