TODO
[tpg/acess2.git] / Usermode / Applications / axwin2_src / WM / render.c
index ea24130..0ee9e80 100644 (file)
 // === IMPORTS ===
 extern void    Decorator_RenderWidget(tElement *Element);
 extern tElement        gWM_RootElement;
+extern tApplication    *gWM_Applications;
+extern int     giWM_MaxAreaX;
+extern int     giWM_MaxAreaY;
+extern int     giWM_MaxAreaW;
+extern int     giWM_MaxAreaH;
 
 // === PROTOTYPES ===
 void   WM_UpdateMinDims(tElement *Element);
@@ -22,11 +27,6 @@ void WM_RenderWidget(tElement *Element);
 void   WM_Update(void);
 
 // === CODE ===
-/**
- * \name Pre-Rendering
- * \brief Updates the element positions and sizes
- * \{
- */
 /**
  * \brief Updates the dimensions of an element
  * \todo What is the \a Pass parameter for
@@ -257,9 +257,6 @@ void WM_UpdateMinDims(tElement *Element)
        // Recurse upwards
        WM_UpdateMinDims(Element->Parent);
 }
-/**
- * \}
- */
 
 // --- Render ---
 void WM_RenderWidget(tElement *Element)
@@ -277,16 +274,39 @@ void WM_RenderWidget(tElement *Element)
        }
 }
 
+void WM_UpdateWindow(tElement *Ele)
+{      
+       WM_UpdateDimensions( Ele, 0 );
+       WM_UpdatePosition( Ele );
+       WM_RenderWidget( Ele );
+}
+
 void WM_Update(void)
 {
-       gWM_RootElement.CachedX = 0;    gWM_RootElement.CachedY = 0;
+       tApplication    *app;
+       tElement        *ele;
+       
+       for( app = gWM_Applications; app; app = app->Next )
+       {
+               for( ele = app->MetaElement.FirstChild; ele; ele = ele->NextSibling ) {
+                       if( ele->Flags & ELEFLAG_WINDOW_MAXIMISED ) {
+                               ele->CachedX = giWM_MaxAreaX;
+                               ele->CachedY = giWM_MaxAreaY;
+                               ele->CachedW = giWM_MaxAreaW;
+                               ele->CachedH = giWM_MaxAreaH;
+                       }
+                       ele->Flags |= ELEFLAG_NOEXPAND|ELEFLAG_ABSOLUTEPOS|ELEFLAG_FIXEDSIZE;
+                       WM_UpdateWindow(ele);
+               }
+       }
+       
+       gWM_RootElement.CachedX = 0;
+       gWM_RootElement.CachedY = 0;
        gWM_RootElement.CachedW = giScreenWidth;
        gWM_RootElement.CachedH = giScreenHeight;
        gWM_RootElement.Flags |= ELEFLAG_NOEXPAND|ELEFLAG_ABSOLUTEPOS|ELEFLAG_FIXEDSIZE;
        
-       WM_UpdateDimensions( &gWM_RootElement, 0 );
-       WM_UpdatePosition( &gWM_RootElement );
-       WM_RenderWidget( &gWM_RootElement );
+       WM_UpdateWindow( &gWM_RootElement );
        
        Video_Update();
 }

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