Merge branch 'master' of git.mutabah.net:acess2
[tpg/acess2.git] / Usermode / Applications / axwin3_src / libaxwin3.so_src / r_widget.c
index f63e0f7..450e4b4 100644 (file)
@@ -2,8 +2,8 @@
  * AxWin3 Interface Library
  * - By John Hodge (thePowersGang)
  *
- * main.c
- * - Entrypoint and setup
+ * r_widget.c
+ * - Widget window type interface
  */
 #include <axwin3/axwin.h>
 #include <axwin3/widget.h>
@@ -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;

UCC git Repository :: git.ucc.asn.au