Usermode/Build - Updates to build system for crtbegin/crtend
[tpg/acess2.git] / Usermode / Applications / axwin3_src / WM / renderer_widget.c
index 0076890..c4799e9 100644 (file)
@@ -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    
+}
+

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