X-Git-Url: http://git.roojs.org/?p=app.Builder.js;a=blobdiff_plain;f=src%2FBuilder4%2FWindowLeftTree.vala;h=983284b4f3abafec2d9e865bb87de7090dfb5e14;hp=4ab564ca5306c7a45be287d3cf32a8d47ad9f9c1;hb=HEAD;hpb=c7650f1f95b1379d71a392b3e54b42940a06704b diff --git a/src/Builder4/WindowLeftTree.vala b/src/Builder4/WindowLeftTree.vala index 4ab564ca5..983284b4f 100644 --- a/src/Builder4/WindowLeftTree.vala +++ b/src/Builder4/WindowLeftTree.vala @@ -18,9 +18,9 @@ public class Xcls_WindowLeftTree : Object public Xcls_LeftTreeMenu LeftTreeMenu; // my vars (def) - public signal bool before_node_change (JsRender.Node? node); + public signal bool before_node_change (); public signal void changed (); - public signal void node_selected (JsRender.Node? node); + public signal void node_selected (JsRender.Node? node, string source); public Xcls_MainWindow main_window; // ctor @@ -56,7 +56,7 @@ public class Xcls_WindowLeftTree : Object } public JsRender.JsRender getActiveFile () { - return this.model.file; + return this.main_window.windowstate.file; } public string getActivePath () { @@ -80,6 +80,7 @@ public class Xcls_WindowLeftTree : Object public int drag_x; public string[] dropList; public int drag_y; + public string lastEventSource; public bool drag_in_motion; public bool blockChanges; @@ -91,9 +92,11 @@ public class Xcls_WindowLeftTree : Object this.el = new Gtk.TreeView(); // my vars (dec) + this.lastEventSource = ""; this.blockChanges = false; // set gobject values + this.el.expand = true; this.el.tooltip_column = 1; this.el.enable_tree_lines = true; this.el.headers_visible = false; @@ -148,9 +151,12 @@ public class Xcls_WindowLeftTree : Object //listeners this.el.button_press_event.connect( ( ev) => { //console.log("button press?"); - if (! _this.before_node_change(null) ) { + this.lastEventSource = "tree"; + if (! _this.before_node_change() ) { + return true; } + if (ev.type != Gdk.EventType.BUTTON_PRESS || ev.button != 3) { @@ -224,13 +230,13 @@ public class Xcls_WindowLeftTree : Object if (this.blockChanges) { // probably not needed.. return ; } - if (!_this.before_node_change(null) ) { + if (!_this.before_node_change( ) ) { this.blockChanges = true; this.el.get_selection().unselect_all(); this.blockChanges = false; return; } - if (_this.model.file == null) { + if (_this.main_window.windowstate.file == null) { return; } @@ -239,7 +245,7 @@ public class Xcls_WindowLeftTree : Object // -- it appears that the selection is not updated. - + GLib.Timeout.add_full(GLib.Priority.DEFAULT,10 , () => { @@ -247,7 +253,7 @@ public class Xcls_WindowLeftTree : Object print("selected rows < 1\n"); //??this.model.load( false); - _this.node_selected(null); + _this.node_selected(null, this.lastEventSource); return false ; } @@ -265,10 +271,10 @@ public class Xcls_WindowLeftTree : Object _this.model.activePath = mod.get_path(iter).to_string(); var node = (JsRender.Node)value.dup_object(); - _this.node_selected(node); + _this.node_selected(node, this.lastEventSource); while (Gtk.events_pending()) { Gtk.main_iteration(); - } + } var cp = mod.get_path(iter); Gtk.TreePath sp, ep; this.el.get_visible_range(out sp, out ep); @@ -577,7 +583,7 @@ public class Xcls_WindowLeftTree : Object // dropList --- need to gather this ... print("get dropList for : %s\n",dropNodeType); - var dropList = _this.model.file.palete().getDropList(dropNodeType); + var dropList = _this.main_window.windowstate.file.palete().getDropList(dropNodeType); print("dropList: %s\n", string.joinv(" , ", dropList)); @@ -824,7 +830,16 @@ public class Xcls_WindowLeftTree : Object } } - public void selectNode (string treepath_str) { + public void setCursor (string treepath, string sourceEvent) { + this.lastEventSource = sourceEvent; + //this.blockChanges = true; << block changes prevents loading of 'node data' and firing of node_selected.. + this.el.set_cursor(new Gtk.TreePath.from_string(treepath), null, false); + // fire node_selected.. + //this.blockChanges = false; + this.lastEventSource = ""; + } + public void selectNode (string treepath_str, string source) { + this.lastEventSource = source; //this.selection.select_path(new Gtk.TreePath.from_string( treepath_str)); var tp = new Gtk.TreePath.from_string(treepath_str); @@ -892,7 +907,11 @@ public class Xcls_WindowLeftTree : Object if (f.tree == null) { - f.loadItems( ); + try { + f.loadItems( ); + } catch (Error e) { + return; + } } // if it's still null? if (f.tree == null) { @@ -1132,7 +1151,7 @@ public class Xcls_WindowLeftTree : Object var data = (JsRender.Node)(value.get_object()); print("removing node from Render\n"); if (data.parent == null) { - this.file.tree = null; + _this.main_window.windowstate.file.tree = null; } else { data.remove(); } @@ -1207,9 +1226,9 @@ public class Xcls_WindowLeftTree : Object var new_node = ts.show( _this.main_window, // (Gtk.Window) _this.el.get_toplevel (), - this.file.palete(), + _this.main_window.windowstate.file.palete(), node, - this.file.project); + _this.main_window.windowstate.project); if (new_node == null) { return; // do not add? @@ -1224,7 +1243,7 @@ public class Xcls_WindowLeftTree : Object if ( parent_str.length < 1) { this.el.append(out n_iter, null); // drop at top level.. node.parent = null; - this.file.tree = node; + _this.main_window.windowstate.file.tree = node; } else if (pos < 2) { @@ -1286,7 +1305,7 @@ public class Xcls_WindowLeftTree : Object // work out what kind of packing to use.. -- should be in if (!node.has("pack") && parent_str.length > 1) { - this.file.palete().fillPack(node,parentNode); + _this.main_window.windowstate.file.palete().fillPack(node,parentNode); } @@ -1496,7 +1515,7 @@ public class Xcls_WindowLeftTree : Object DialogSaveTemplate.singleton().show( (Gtk.Window) _this.el.get_toplevel (), - _this.model.file.palete(), + _this.main_window.windowstate.file.palete(), _this.getActiveElement() ); @@ -1531,7 +1550,7 @@ public class Xcls_WindowLeftTree : Object var node = _this.getActiveElement(); var name = DialogSaveModule.singleton().show( (Gtk.Window) _this.el.get_toplevel (), - _this.model.file.project, + _this.main_window.windowstate.project, node ); if (name.length < 1) { @@ -1563,7 +1582,7 @@ public class Xcls_WindowLeftTree : Object _this.model.el.remove(ref citer); } _this.changed(); - _this.node_selected(node); + _this.node_selected(node, "tree"); });