2008-11-18 Marek Habersack <mhabersack@novell.com>
[mono.git] / mcs / class / System.Web / System.Web.Compilation / ThemeDirectoryCompiler.cs
index 8b0aa806a807d5f7c5aca92f0893a93147d36349..a1fc894da6637c0f0528df7a63022f33891df859 100644 (file)
@@ -49,30 +49,37 @@ namespace System.Web.UI
                                throw new HttpException (String.Format ("Theme '{0}' cannot be found in the application or global theme directories.", theme));
                        string [] skin_files = Directory.GetFiles (physicalPath, "*.skin");
 
-                       PageThemeParser ptp = new PageThemeParser (physicalPath, context);
+                       PageThemeParser ptp = new PageThemeParser (virtualPath, context);
                        
                        string[] css_files = Directory.GetFiles (physicalPath, "*.css");
                        string[] css_urls = new string[css_files.Length];
-                       for (int i = 0; i < css_files.Length; i++)
+                       for (int i = 0; i < css_files.Length; i++) {
+                               ptp.AddDependency (css_files [i]);
                                css_urls [i] = virtualPath + Path.GetFileName (css_files [i]);
+                       }
                        ptp.LinkedStyleSheets = css_urls;
                        
+                       AspComponentFoundry shared_foundry = new AspComponentFoundry ();
                        ptp.RootBuilder = new RootBuilder ();
 
+                       string skin_file_url;
                        for (int i = 0; i < skin_files.Length; i ++) {
-                               string skin_file_url = UrlUtils.Combine (physicalPath, Path.GetFileName (skin_files [i]));
+                               skin_file_url = VirtualPathUtility.Combine (virtualPath, Path.GetFileName (skin_files [i]));
                                PageThemeFileParser ptfp = new PageThemeFileParser (skin_file_url,
-                                                                                  skin_files[i],
-                                                                                  context);
+                                                                                   skin_files[i],
+                                                                                   context);
 
+                               ptp.AddDependency (skin_files [i]);
                                AspGenerator gen = new AspGenerator (ptfp);
+                               ptfp.RootBuilder.Foundry = shared_foundry;
                                gen.Parse ();
 
-                               foreach (object o in ptfp.RootBuilder.Children) {
-                                       if (!(o is ControlBuilder))
-                                               continue;
-                                       ptp.RootBuilder.AppendSubBuilder ((ControlBuilder)o);
-                               }
+                               if (ptfp.RootBuilder.Children != null)
+                                       foreach (object o in ptfp.RootBuilder.Children) {
+                                               if (!(o is ControlBuilder))
+                                                       continue;
+                                               ptp.RootBuilder.AppendSubBuilder ((ControlBuilder)o);
+                                       }
 
                                foreach (string ass in ptfp.Assemblies)
                                        if (!ptp.Assemblies.Contains (ass))