X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2Flibaxwin3.so_src%2Fr_widget.c;h=22a934bbb70ccc1a0728daa1073c5fbe5bd211cc;hb=32637a3bcd6e38425272f901745a76efa301afd5;hp=103752223386c3049aab6c51c8791a6d4143ccde;hpb=134ea1493847ea65896430c446c471874d0cf4fa;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 10375222..22a934bb 100644 --- a/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_widget.c +++ b/Usermode/Applications/axwin3_src/libaxwin3.so_src/r_widget.c @@ -12,6 +12,9 @@ #include #include +//static const int ciBaseElementCount = 16; +static const int ciStepElementCount = 16; + // === STRUCTURES === struct sAxWin3_Widget { @@ -58,15 +61,14 @@ uint32_t AxWin3_Widget_int_AllocateID(tWidgetWindowInfo *Info) } if( newID == Info->nElements ) { - const int size_step = 4; - Info->nElements += 4; + Info->nElements += ciStepElementCount; Info->Elements = realloc(Info->Elements, sizeof(*Info->Elements)*Info->nElements); - 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); + newID = Info->nElements - ciStepElementCount; + memset( &Info->Elements[newID+1], 0, (ciStepElementCount-1)*sizeof(Info->Elements)); + _SysDebug("Widget: Expanded to %i and allocated %i", Info->nElements, newID); } else - _SysDebug("Allocated %i", newID); + _SysDebug("Widget: Allocated %i", newID); Info->Elements[newID] = (void*)-1; return newID; @@ -79,13 +81,20 @@ int AxWin3_Widget_MessageHandler(tHWND Window, int MessageID, int Size, void *Da switch(MessageID) { +// case WNDMSG_DESTROY: { +// return 0; } case MSG_WIDGET_FIRE: { tWidgetMsg_Fire *msg = Data; if(Size < sizeof(*msg)) return -1; widget = AxWin3_Widget_int_GetElementByID(Window, msg->WidgetID); if(widget->Fire) widget->Fire(widget); + return 1; } + case MSG_WIDGET_KEYPRESS: { return 0; } + case MSG_WIDGET_MOUSEBTN: { + // TODO: Do something + return 1; } default: return 0; } @@ -146,20 +155,20 @@ tAxWin3_Widget *AxWin3_Widget_AddWidget(tAxWin3_Widget *Parent, int Type, int Fl // Send create widget message { - char tmp[sizeof(tWidgetMsg_Create)+1]; - tWidgetMsg_Create *msg = (void*)tmp; + char tmp[sizeof(tWidgetIPC_Create)+1]; + tWidgetIPC_Create *msg = (void*)tmp; msg->Parent = Parent->ID; msg->NewID = newID; msg->Type = Type; msg->Flags = Flags; msg->DebugName[0] = '\0'; - AxWin3_SendMessage(ret->Window, ret->Window, MSG_WIDGET_CREATE, sizeof(tmp), tmp); + AxWin3_SendIPC(ret->Window, IPC_WIDGET_CREATE, sizeof(tmp), tmp); } return ret; } -tAxWin3_Widget *AxWin3_Widget_AddWidget_SubWindow(tAxWin3_Widget *Parent, tHWND Window, const char *DebugName) +tAxWin3_Widget *AxWin3_Widget_AddWidget_SubWindow(tAxWin3_Widget *Parent, tHWND Window, int Flags, const char *DbgName) { tWidgetWindowInfo *info = AxWin3_int_GetDataPtr(Parent->Window); int newID = AxWin3_Widget_int_AllocateID(info); @@ -171,15 +180,15 @@ tAxWin3_Widget *AxWin3_Widget_AddWidget_SubWindow(tAxWin3_Widget *Parent, tHWND // Send message { - char tmp[sizeof(tWidgetMsg_CreateSubWin)+1]; - tWidgetMsg_CreateSubWin *msg = (void*)tmp; + char tmp[sizeof(tWidgetIPC_CreateSubWin)+1]; + tWidgetIPC_CreateSubWin *msg = (void*)tmp; msg->Parent = Parent->ID; msg->NewID = newID; msg->Type = ELETYPE_SUBWIN; - msg->Flags = 0; // TODO: Flags + msg->Flags = Flags; // TODO: Flags msg->WindowHandle = AxWin3_int_GetWindowID(Window); msg->DebugName[0] = '\0'; - AxWin3_SendMessage(ret->Window, ret->Window, MSG_WIDGET_CREATESUBWIN, sizeof(tmp), tmp); + AxWin3_SendIPC(ret->Window, IPC_WIDGET_CREATESUBWIN, sizeof(tmp), tmp); } return ret; @@ -188,11 +197,11 @@ tAxWin3_Widget *AxWin3_Widget_AddWidget_SubWindow(tAxWin3_Widget *Parent, tHWND void AxWin3_Widget_DelWidget(tAxWin3_Widget *Widget) { - tWidgetMsg_Delete msg; + tWidgetIPC_Delete msg; tWidgetWindowInfo *info = AxWin3_int_GetDataPtr(Widget->Window); msg.WidgetID = Widget->ID; - AxWin3_SendMessage(Widget->Window, Widget->Window, MSG_WIDGET_DELETE, sizeof(msg), &msg); + AxWin3_SendIPC(Widget->Window, IPC_WIDGET_DELETE, sizeof(msg), &msg); info->Elements[Widget->ID] = NULL; if(Widget->ID < info->FirstFreeID) @@ -234,45 +243,45 @@ void AxWin3_Widget_SetMouseButtonHandler(tAxWin3_Widget *Widget, tAxWin3_Widget_ // --- Manipulation void AxWin3_Widget_SetFlags(tAxWin3_Widget *Widget, int FlagSet, int FlagMask) { - tWidgetMsg_SetFlags msg; + tWidgetIPC_SetFlags msg; msg.WidgetID = Widget->ID; msg.Value = FlagSet; msg.Mask = FlagMask; - AxWin3_SendMessage(Widget->Window, Widget->Window, MSG_WIDGET_SETFLAGS, sizeof(msg), &msg); + AxWin3_SendIPC(Widget->Window, IPC_WIDGET_SETFLAGS, sizeof(msg), &msg); } void AxWin3_Widget_SetSize(tAxWin3_Widget *Widget, int Size) { - tWidgetMsg_SetSize msg; + tWidgetIPC_SetSize msg; msg.WidgetID = Widget->ID; msg.Value = Size; - AxWin3_SendMessage(Widget->Window, Widget->Window, MSG_WIDGET_SETSIZE, sizeof(msg), &msg); + AxWin3_SendIPC(Widget->Window, IPC_WIDGET_SETSIZE, sizeof(msg), &msg); } void AxWin3_Widget_SetText(tAxWin3_Widget *Widget, const char *Text) { - char buf[sizeof(tWidgetMsg_SetText) + strlen(Text) + 1]; - tWidgetMsg_SetText *msg = (void*)buf; + char buf[sizeof(tWidgetIPC_SetText) + strlen(Text) + 1]; + tWidgetIPC_SetText *msg = (void*)buf; msg->WidgetID = Widget->ID; strcpy(msg->Text, Text); - AxWin3_SendMessage(Widget->Window, Widget->Window, MSG_WIDGET_SETTEXT, sizeof(buf), buf); + AxWin3_SendIPC(Widget->Window, IPC_WIDGET_SETTEXT, sizeof(buf), buf); } char *AxWin3_Widget_GetText(tAxWin3_Widget *Widget) { - char buf[sizeof(tWidgetMsg_SetText)]; - tWidgetMsg_SetText *msg = (void*)buf; + char buf[sizeof(tWidgetIPC_SetText)]; + tWidgetIPC_SetText *msg = (void*)buf; size_t retmsg_size; msg->WidgetID = Widget->ID; - AxWin3_SendMessage(Widget->Window, Widget->Window, MSG_WIDGET_GETTEXT, sizeof(buf), buf); + AxWin3_SendIPC(Widget->Window, IPC_WIDGET_GETTEXT, sizeof(buf), buf); - msg = AxWin3_WaitMessage(Widget->Window, MSG_WIDGET_GETTEXT, &retmsg_size); + msg = AxWin3_WaitIPCMessage(Widget->Window, IPC_WIDGET_GETTEXT, &retmsg_size); if( retmsg_size < sizeof(*msg) ) { free(msg); return NULL; @@ -285,10 +294,10 @@ char *AxWin3_Widget_GetText(tAxWin3_Widget *Widget) void AxWin3_Widget_SetColour(tAxWin3_Widget *Widget, int Index, tAxWin3_Colour Colour) { - tWidgetMsg_SetColour msg; + tWidgetIPC_SetColour msg; msg.WidgetID = Widget->ID; msg.Index = Index; msg.Colour = Colour; - AxWin3_SendMessage(Widget->Window, Widget->Window, MSG_WIDGET_SETCOLOUR, sizeof(msg), &msg); + AxWin3_SendIPC(Widget->Window, IPC_WIDGET_SETCOLOUR, sizeof(msg), &msg); }