Fix #7367 - only show add child on addable objects
[roobuilder] / src / Builder4 / WindowLeftTree.bjs
index ac791d6..7ff79cc 100644 (file)
           "    \tpix = ic.load_icon(\"emblem-new\", 16,0);",
           "    }",
           "    ",
+          "    var fqn = node.fqn();",
+          "    var cn = _this.main_window.windowstate.project.palete.getChildList(fqn);",
+          "    ",
           "    this.el.set(",
           "    \t\titer, ",
           "    \t\t0, node.nodeTitle(),",
           "    );",
           "    this.el.set_value(iter, 2,o);",
           "    this.el.set_value(iter, 3,pix);    ",
-          "  \tthis.el.set_value(iter, 4,addi);   ",
+          "  \tthis.el.set_value(iter, 4, cn.length > 0 ? addi : null);   ",
           "    ",
           "",
           "}"
          "    }",
          "    ",
          "    if (col.title == \"Add\") {",
+         " \t\tGLib.Value value;",
+         " \t\tGtk.TreeIter iter;",
+         "",
+         "\t\t_this.model.el.get_iter (out  iter, res);",
+         "        _this.model.el.get_value(iter, 2, out value);\t\t",
+         "            // why dup_ - gets and and inc's ref count (which in theory should be freed at the end.?",
+         "            ",
+         "        var node = (JsRender.Node)value.dup_object();",
+         "        var fqn = node.fqn();",
+         "    \tvar cn = _this.main_window.windowstate.project.palete.getChildList(fqn);",
+         "  \t\tif (cn.length < 1) {",
+         "  \t\t\treturn true;",
+         "\t\t}",
+         "    ",
          "         _this.main_window.windowstate.leftTreeBeforeChange();",
          "         this.el.get_selection().select_path(res);",
          "     \t_this.main_window.windowstate.showAddObject(this.el);",
          "            _this.model.el.get_value(iter, 2, out value);",
          "            _this.model.activePath = mod.get_path(iter).to_string();",
          "            ",
+         "            // why dup_?",
+         "            ",
          "            var node = (JsRender.Node)value.dup_object();",
          "            print (\"calling left_tree.node_selected\\n\");",
          "            _this.node_selected(node, this.lastEventSource);",