]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
libvaladoc/html: fix missing links in "all known"-lists
authorFlorian Brosch <flo.brosch@gmail.com>
Wed, 5 May 2010 15:21:20 +0000 (17:21 +0200)
committerFlorian Brosch <flo.brosch@gmail.com>
Wed, 5 May 2010 15:21:20 +0000 (17:21 +0200)
src/libvaladoc/html/basicdoclet.vala

index 51459eaa31dd1813e0754ce770ba099539d8d8bf..9773b33f88376dea485c4155a8972a1c50315bae 100755 (executable)
@@ -442,57 +442,73 @@ public abstract class Valadoc.Html.BasicDoclet : Api.Visitor, Doclet {
                writer.end_tag ("div");
        }
 
-       private int html_id_counter = 0;
+       private uint html_id_counter = 0;
 
-       private void write_known_symbols_node (Gee.Collection<Api.Node> nodes, Api.Node container, string headline) {
-               if (nodes.size > 0) {
-                       var html_id = "box-content-" + html_id_counter.to_string ();
-                       html_id_counter++;
+       private inline Gee.Collection<Api.Node> get_accessible_nodes_from_list (Gee.Collection<Api.Node> nodes) {
+               var list = new Gee.ArrayList<Api.Node> ();
 
+               foreach (var node in nodes) {
+                       if (node.is_visitor_accessible(_settings)) {
+                               list.add (node);
+                       }
+               }
 
-                       writer.start_tag ("div", {"class", css_box});
+               return list;
+       }
 
-                       // headline:
-                       writer.start_tag ("div", {"class", css_box_headline});
-                       writer.start_tag ("div", {"class", css_box_headline_text}).text (headline).end_tag ("div");
-                       writer.start_tag ("div", {"class", css_box_headline_toggle});
-                       writer.start_tag ("img", {"onclick", "toggle_box  (this, '" + html_id + "')", "src", Path.build_filename (get_icon_directory (), "coll_open.png")});
-                       writer.raw_text ("&nbsp;");
-                       writer.end_tag ("div");
-                       writer.end_tag ("div");
+       private void write_known_symbols_node (Gee.Collection<Api.Node> nodes2, Api.Node container, string headline) {
+               var nodes = get_accessible_nodes_from_list (nodes2);
+               if (nodes.size == 0) {
+                       return ;
+               }
 
+               // Box:
+               var html_id = "box-content-" + html_id_counter.to_string ();
+               html_id_counter++;
 
-                       // content:
-                       int[] list_sizes = {0, 0, 0};
-                       list_sizes[0] = nodes.size;
-                       list_sizes[2] = list_sizes[0]/3;
-                       list_sizes[0] -= list_sizes[2];
-                       list_sizes[1] = list_sizes[0]/2;
-                       list_sizes[0] -= list_sizes[1];
 
-                       writer.start_tag ("div", {"class", css_box_content, "id", html_id});
+               writer.start_tag ("div", {"class", css_box});
 
-                       var iter = nodes.iterator ();
+               // headline:
+               writer.start_tag ("div", {"class", css_box_headline});
+               writer.start_tag ("div", {"class", css_box_headline_text}).text (headline).end_tag ("div");
+               writer.start_tag ("div", {"class", css_box_headline_toggle});
+               writer.start_tag ("img", {"onclick", "toggle_box  (this, '" + html_id + "')", "src", Path.build_filename (get_icon_directory (), "coll_open.png")});
+               writer.raw_text ("&nbsp;");
+               writer.end_tag ("div");
+               writer.end_tag ("div");
 
-                       for (int i = 0; i < list_sizes.length; i++) {
-                               writer.start_tag ("div", {"class", css_box_column});
-                               writer.start_tag ("ul", {"class", css_inline_navigation});
 
-                               for (int p = 0; p < list_sizes[i] && iter.next (); p++) {
-                                       var node = iter.get ();
-                                       writer.start_tag ("li", {"class", cssresolver.resolve (node)});
-                                       writer.link (get_link (node, container), node.name);
-                                       writer.end_tag ("li");
-                               }
+               // content:
+               int[] list_sizes = {0, 0, 0};
+               list_sizes[0] = nodes.size;
+               list_sizes[2] = list_sizes[0]/3;
+               list_sizes[0] -= list_sizes[2];
+               list_sizes[1] = list_sizes[0]/2;
+               list_sizes[0] -= list_sizes[1];
 
-                               writer.end_tag ("ul");
-                               writer.end_tag ("div");
-                       }
+               writer.start_tag ("div", {"class", css_box_content, "id", html_id});
+
+               var iter = nodes.iterator ();
 
-                       writer.end_tag ("div"); // end content
+               for (int i = 0; i < list_sizes.length; i++) {
+                       writer.start_tag ("div", {"class", css_box_column});
+                       writer.start_tag ("ul", {"class", css_inline_navigation});
+
+                       for (int p = 0; p < list_sizes[i] && iter.next (); p++) {
+                               var node = iter.get ();
+                               writer.start_tag ("li", {"class", cssresolver.resolve (node)});
+                               writer.link (get_link (node, container), node.name);
+                               writer.end_tag ("li");
+                       }
 
-                       writer.end_tag ("div"); // end box
+                       writer.end_tag ("ul");
+                       writer.end_tag ("div");
                }
+
+               writer.end_tag ("div"); // end content
+
+               writer.end_tag ("div"); // end box
        }
 
        public void write_symbol_content (Api.Node node) {