print("prop : %s", prop == null ? "???" : prop);
+
+
+
+
var ltree = _this.main_window.windowstate.left_tree;
var tp = ltree.model.treePathFromNode(node);
print("got tree path %s\n", tp);
var kv = prop.split(":");
if (kv[0] == "p") {
- var k = prop.get_key(kv[1]);
+ //var k = prop.get_key(kv[1]);
// fixme -- need to determine if it's an editable property...
this.propSelected = prop;
- } elseif (kv[0] == "l") {
+ } else if (kv[0] == "l") {
this.propSelected = prop;
}
}
-
- ltree.view.el.set_cursor(new Gtk.TreePath.from_string(tp), null, false);
-
+ ltree.view.setCursor(tp, "editor");
+ // ltree.view.el.set_cursor(new Gtk.TreePath.from_string(tp), null, false);
+ this.nodeSelected(node);
// scrolling is disabled... as node selection calls scroll 10ms after it changes.
GLib.Timeout.add_full(GLib.Priority.DEFAULT,100 , () => {
this.el.scroll_to_iter(iter, 0.1f, true, 0.0f, 0.5f);
}
- var start = sel.line_start;
- var end = sel.line_end;
+ var start_line = sel.line_start;
+ var end_line = sel.line_end;
+
+ this.el.editable = false;
// now if we have selected a property...
if (this.propSelected.length> 0 ) {
+
+ int nstart, nend;
+ if (sel.getPropertyRange(this.propSelected, out nstart, out nend) && nend > nstart) {
+ start_line = nstart;
+ end_line = nend;
+ this.el.editable = true;
+ }
+ print("propSelected = %s range %d -> %d\n", this.propSelected, nstart, nend);
}
+ // check selection - if it's out of 'bounds'
+ if (this.el.editable && sbuf.get_has_selection()) {
+ Gtk.TextIter sel_start_iter, sel_end_iter;
+ sbuf.get_selection_bounds(out sel_start_iter, out sel_end_iter);
+ if (sel_start_iter.get_line() < start_line || sel_start_iter.get_line() > end_line) {
+ // save?
+ this.el.editable = false;
+ }
+
+ }
+
+
for (var i = 0; i < buf.get_line_count();i++) {
- if (i < (start -1) || i > (end -1)) {
+ if (i < (start_line -1) || i > (end_line -1)) {
sbuf.get_iter_at_line(out iter, i);
sbuf.create_source_mark(null, "grey", iter);