Fix #8028 - language server performance, fix warnings and critical errors
[roobuilder] / src / Builder4 / WindowLeftTree.bjs
index 194e360..fd97955 100644 (file)
            "| int nodeToRow" : [
             "(JsRender.Node node) ",
             "{",
-            "\tvar row = -1;",
+            " ",
             "\tvar s = _this.view.el.model as Gtk.SingleSelection;",
             "\tfor (var i = 0; i < s.n_items; i++) {",
             "\t\t//GLib.debug(\"check node %s\", s.get_item(i).get_type().name());",
             "\t\tvar lr = s.get_item(i) as Gtk.TreeListRow;",
             "\t\t//GLib.debug(\"check node %s\", lr.get_item().get_type().name());",
-            "\t\tif ((lr.get_item() as JsRender.Node).oid == node.oid) {",
+            "\t\tvar nn = (lr.get_item() as JsRender.Node);",
+            "\t\tif (nn != null && nn.oid == node.oid) {",
             "\t\t\treturn i;",
             "\t\t\t",
             "\t\t}",
             ""
            ],
            "| void selectNode" : [
-            "(JsRender.Node node) ",
+            "(JsRender.Node node) ",
             "{",
-            "\tvar row = this.nodeToRow(node);",
             "\tvar s = _this.view.el.model as Gtk.SingleSelection;",
+            "\tif (node == null) {",
+            "\t\ts.selected=Gtk.INVALID_LIST_POSITION;",
+            "\t\treturn;",
+            "\t}",
+            "\tvar row = this.nodeToRow(node);",
+            "",
             "\t ",
             "\tif (row < 0) {",
             "\t\t// select none?",
             "\t\tGLib.debug(\"Could not find node\");",
+            "\t\ts.selected=Gtk.INVALID_LIST_POSITION;",
             "\t\treturn;",
             "\t}",
             "\tGLib.debug(\"Select %d\", row);",
        "| int getRowAt" : [
         "(double x,  double  y, out string pos) {",
         "",
+        "\tpos = \"\";",
         "\tvar w = this.el.pick(x, y, Gtk.PickFlags.DEFAULT);",
         "\t//GLib.debug(\"got widget %s\", w == null ? \"nothing\" : w.get_type().name());",
         "\tif (w == null) {",