Fix #8032 - speed up add remove of errors from tree
[roobuilder] / src / Builder4 / WindowLeftTree.bjs
index fd97955..bab93d9 100644 (file)
@@ -3,6 +3,7 @@
  "gen_extended" : false,
  "items" : [
   {
+   "# Gee.ArrayList<Gtk.Widget>? error_widgets" : "null",
    "# Xcls_MainWindow? main_window" : "null",
    "# int last_error_counter" : "-1",
    "$ xns" : "Gtk",
    ],
    "| void removeErrors" : [
     "() {",
+    "\tif (this.error_widgets == null || this.error_widgets.size < 1) {",
+    " \t\treturn;",
+    "\t}",
+    "\tforeach(var child in this.error_widgets) {",
+    "\t",
+    "\t\tif (child.has_css_class(\"node-err\")) {",
+    "\t\t\tchild.remove_css_class(\"node-err\");",
+    "\t\t}",
+    "\t\tif (child.has_css_class(\"node-warn\")) {",
+    "\t\t\tchild.remove_css_class(\"node-warn\");",
+    "\t\t}",
+    "\t\t",
+    "\t\tif (child.has_css_class(\"node-depr\")) {",
+    "\t\t\tchild.remove_css_class(\"node-depr\");",
+    "\t\t}",
+    "\t}",
+    "\tthis.error_widgets  = null;",
+    "\treturn;",
+    "\t",
+    "\t/*",
     "\tvar  child = this.view.el.get_first_child(); ",
     " ",
     "\tvar reading_header = true;",
     "        child = child.get_next_sibling(); ",
     "\t}",
     "\t//GLib.debug(\"Rturning null\");",
+    "\t*/",
     "     ",
     "}"
    ],
     "\t\treturn;",
     "\t}",
     "\tthis.removeErrors();",
-    "\t",
+    "\tthis.error_widgets = new Gee.ArrayList<Gtk.Widget>();",
     "\tforeach(var diag in ar) { ",
     "\t",
     "\t\t ",
     "    \tif (w == null) {",
     "    \t\treturn;",
     "\t\t}",
+    "\t\tthis.error_widgets.add(w);",
     "\t\t// always show errors.",
     "\t\tvar ed = diag.category.down();",
     "\t\tif (ed != \"err\" && w.has_css_class(\"node-err\")) {",