X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2FWM%2Frenderer_widget.c;h=c4799e99a109266e594b36f24f32501ca6b1c8da;hb=a644ed9dc9954091daf616dfe93ab2e2a920bf5d;hp=00768902f4e18b5afe8f50beb0932a9e3269e3f7;hpb=036a4cd90bdc323b905d98a52c6f2ff10f0b0ebe;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/WM/renderer_widget.c b/Usermode/Applications/axwin3_src/WM/renderer_widget.c index 00768902..c4799e99 100644 --- a/Usermode/Applications/axwin3_src/WM/renderer_widget.c +++ b/Usermode/Applications/axwin3_src/WM/renderer_widget.c @@ -31,9 +31,10 @@ void Widget_SetSize(tWidgetWin *Info, int Len, tWidgetMsg_SetSize *Msg); void Widget_SetText(tWidgetWin *Info, int Len, tWidgetMsg_SetText *Msg); int Renderer_Widget_HandleMessage(tWindow *Target, int Msg, int Len, void *Data); // --- Type helpers -void Widget_TextBox_UpdateText(tElement *Element, const char *Text); +void Widget_DispText_UpdateText(tElement *Element, const char *Text); void Widget_Image_UpdateText(tElement *Element, const char *Text); int Widget_Button_MouseButton(tElement *Element, int X, int Y, int Button, int bPress); +void Widget_TextInput_Init(tElement *Element); // === GLOBALS === tWMRenderer gRenderer_Widget = { @@ -68,9 +69,11 @@ struct { } gaWM_WidgetTypes[NUM_ELETYPES] = { {0}, // NULL {0}, // Box - {.UpdateText = Widget_TextBox_UpdateText}, // Text + {.UpdateText = Widget_DispText_UpdateText}, // Text {.UpdateText = Widget_Image_UpdateText}, // Image - {.MouseButton = Widget_Button_MouseButton} // Button + {.MouseButton = Widget_Button_MouseButton}, // Button + {0}, // Spacer + {.Init = Widget_TextInput_Init}, // Text Box (Single Line) }; const int ciWM_NumWidgetTypes = sizeof(gaWM_WidgetTypes)/sizeof(gaWM_WidgetTypes[0]); @@ -182,8 +185,8 @@ void Widget_UpdateDimensions(tElement *Element) dynWith /= nChildren - nFixed; } - _SysDebug("%i - nChildren = %i, nFixed = %i, dynWith = %i, fixedSize = %i", - Element->ID, nChildren, nFixed, dynWith, fixedSize); +// _SysDebug("%i - nChildren = %i, nFixed = %i, dynWith = %i, fixedSize = %i", +// Element->ID, nChildren, nFixed, dynWith, fixedSize); // Get the cross size if( Element->Flags & ELEFLAG_VERTICAL ) @@ -256,8 +259,8 @@ void Widget_UpdatePosition(tElement *Element) if( Element->Flags & ELEFLAG_NORENDER ) return ; - _SysDebug("Widget_UpdatePosition: (Element=%p(%i Type=%i Flags=0x%x))", - Element, Element->ID, Element->Type, Element->Flags); +// _SysDebug("Widget_UpdatePosition: (Element=%p(%i Type=%i Flags=0x%x))", +// Element, Element->ID, Element->Type, Element->Flags); // Initialise x = Element->CachedX + Element->PaddingL; @@ -288,7 +291,7 @@ void Widget_UpdatePosition(tElement *Element) - Element->PaddingT - Element->PaddingB; } - _SysDebug(" Widget_UpdatePosition[%i]: newX = %i, newY = %i", Element->ID, newX, newY); +// _SysDebug(" Widget_UpdatePosition[%i]: newX = %i, newY = %i", Element->ID, newX, newY); // Check for changes, and don't update if there was no change if( newX != child->CachedX || newY != child->CachedY ) @@ -524,6 +527,10 @@ int Renderer_Widget_HandleMessage(tWindow *Target, int Msg, int Len, void *Data) return 0; } + case WNDMSG_MOUSEMOVE: { + _SysDebug("TODO: Support widget mouse move events"); + return 0; } + case WNDMSG_MOUSEBTN: { struct sWndMsg_MouseButton *msg = Data; tWidgetMsg_MouseBtn client_msg; @@ -600,7 +607,7 @@ void Widget_Fire(tElement *Element) } // --- Type Helpers -void Widget_TextBox_UpdateText(tElement *Element, const char *Text) +void Widget_DispText_UpdateText(tElement *Element, const char *Text) { int w=0, h=0; @@ -656,3 +663,18 @@ int Widget_Button_MouseButton(tElement *Element, int X, int Y, int Button, int b return 0; // Handled } +void Widget_TextInput_Init(tElement *Element) +{ + int h; + + // TODO: Select font correctly + WM_Render_GetTextDims(NULL, "jJ", NULL, &h); + + if( Element->Parent && (Element->Parent->Flags & ELEFLAG_VERTICAL) ) + Element->MinWith = h; + else + Element->MinCross = h; + + // No need to explicitly update parent min dims, as the AddElement routine does that +} +