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);
}
ltree.view.setCursor(tp, "editor");
// ltree.view.el.set_cursor(new Gtk.TreePath.from_string(tp), null, false);
-
+ this.nodeSelected(node,false);
// scrolling is disabled... as node selection calls scroll 10ms after it changes.
GLib.Timeout.add_full(GLib.Priority.DEFAULT,100 , () => {
// highlight the node..
}
- public void nodeSelected (JsRender.Node? sel) {
+ public void nodeSelected (JsRender.Node? sel, bool scroll ) {
//if (cur_line > sel.line_start && cur_line < sel.line_end) {
//} else {
- if (this.allow_node_scroll) {
+ if (scroll) {
this.el.scroll_to_iter(iter, 0.1f, true, 0.0f, 0.5f);
}
}
+ // 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_end_iter.get_line() > end_line ||
+ sel_start_iter.get_line() > end_line || sel_end_iter.get_line() < start_line ) {
+ // save?
+ this.el.editable = false;
+ }
+
+ }
+
+
for (var i = 0; i < buf.get_line_count();i++) {
}
public void loadFile ( ) {
this.loading = true;
+
+
+ // get the cursor and scroll position....
+ var buf = this.el.get_buffer();
+
+ Gtk.TextIter cpos;
+ buf.get_iter_at_offset(out cpos, buf.cursor_position);
+
+
+
+
var buf = this.el.get_buffer();
buf.set_text("",0);
var sbuf = (Gtk.SourceBuffer) buf;