Fix #8044 - fixing varous crashes, correct tree drop location and empty nodes after...
[roobuilder] / src / Builder4 / WindowLeftProps.vala
index b53de34..eae35e4 100644 (file)
@@ -12,7 +12,7 @@ public class Xcls_LeftProps : Object
                }
                return _LeftProps;
        }
-       public Xcls_AddPropertyPopup AddPropertyPopup;
+       public Xcls_addpop addpop;
        public Xcls_EditProps EditProps;
        public Xcls_view view;
        public Xcls_deletemenu deletemenu;
@@ -33,6 +33,7 @@ public class Xcls_LeftProps : Object
        public JsRender.JsRender file;
        public JsRender.Node node;
        public signal void show_editor (JsRender.JsRender file, JsRender.Node node, JsRender.NodeProp prop);
+       public Gee.ArrayList<Gtk.Widget>? error_widgets;
 
        // ctor
        public Xcls_LeftProps()
@@ -45,12 +46,13 @@ public class Xcls_LeftProps : Object
                this.allow_edit = false;
                this.main_window = null;
                this.last_error_counter = -1;
+               this.error_widgets = null;
 
                // set gobject values
                this.el.homogeneous = false   ;
                this.el.hexpand = true;
                this.el.vexpand = true;
-               var child_1 = new Xcls_Box2( _this );
+               var child_1 = new Xcls_Box1( _this );
                child_1.ref();
                this.el.append( child_1.el );
                new Xcls_EditProps( _this );
@@ -88,9 +90,15 @@ public class Xcls_LeftProps : Object
        }
        public void updateErrors () {
                var file = this.file;
+               if (file == null) {
+                       return;
+               }
                var ar = file.getErrors();
-               if (ar.size < 1) {
-                       this.removeErrors();
+               if (ar == null || ar.size < 1) {
+                       if (this.last_error_counter != file.error_counter) {
+                               this.removeErrors();
+                       }
+       
                        this.last_error_counter = file.error_counter ;
        
                        return;
@@ -99,17 +107,19 @@ public class Xcls_LeftProps : Object
                        return;
                }
                this.removeErrors();
-               
+               this.error_widgets = new Gee.ArrayList<Gtk.Widget>();
                foreach(var diag in ar) { 
                
                         
        //        print("get inter\n");
-                   var node= file.lineToNode( (int)diag.range.start.line) ;
-                   if (node == null || node.oid != this.node.oid) {
+                   var node = file.lineToNode( (int)diag.range.start.line) ;
+                   if (node == null || this.node == null || node.oid != this.node.oid) {
                        continue;
                }
                var prop = node.lineToProp( (int)diag.range.start.line) ;
-               
+               if (prop == null) {
+                       continue;
+                       }
                var row = _this.selmodel.propToRow(prop);
                if (row < 0) {
                        continue;
@@ -118,10 +128,13 @@ public class Xcls_LeftProps : Object
                if (w == null) {
                        return;
                        }
-                               var ed = diag.category.down();
+       
+                       
+                       var ed = diag.category.down();
                        if (ed != "err" && w.has_css_class("node-err")) {
                                continue;
                        }
+                       this.error_widgets.add(w);              
                        if (ed == "err" && w.has_css_class("node-warn")) {
                                w.remove_css_class("node-warn");
                        }
@@ -237,78 +250,26 @@ public class Xcls_LeftProps : Object
                */
        }
        public void removeErrors () {
-               var  child = this.view.el.get_first_child(); 
-        
-               var reading_header = true;
-        
-               while (child != null) {
-                       GLib.debug("Got %s", child.get_type().name());
-                  
-                  if (reading_header) {
-                               
-       
-                               if (child.get_type().name() != "GtkColumnListView") {
-                                  
-                                       child = child.get_next_sibling();
-                                       continue;
-                               }
-                               // should be columnlistview
-                               child = child.get_first_child(); 
-                        
-                        
-                               
-                               reading_header = false;
-                                
-                   }
-                   
-                       if (!child.has_css_class("node-err")) {
+                       if (this.error_widgets == null || this.error_widgets.size < 1) {
+                       return;
+               }
+               foreach(var child in this.error_widgets) {
+               
+                       if (child.has_css_class("node-err")) {
                                child.remove_css_class("node-err");
                        }
-                       if (!child.has_css_class("node-warn")) {
+                       if (child.has_css_class("node-warn")) {
                                child.remove_css_class("node-warn");
                        }
                        
-                       if (!child.has_css_class("node-depr")) {
+                       if (child.has_css_class("node-depr")) {
                                child.remove_css_class("node-depr");
                        }
-                       
-               child = child.get_next_sibling(); 
                }
+               this.error_widgets  = null;
+               return;
                //GLib.debug("Rturning null");
             
-       }
-       public void a_addProp (JsRender.NodeProp prop) {
-             // info includes key, val, skel, etype..
-             //console.dump(info);
-               //type = info.type.toLowerCase();
-               //var data = this.toJS();
-                 
-                     
-           if (prop.ptype == JsRender.NodePropType.LISTENER) {
-               if (this.node.listeners.has_key(prop.name)) {
-                   return;
-               }
-               this.node.listeners.set(prop.name,prop);
-           } else  {
-                assert(this.node != null);
-                assert(this.node.props != null);
-               if (this.node.props.has_key(prop.to_index_key())) {
-                   return;
-               }
-               this.node.props.set(prop.to_index_key(),prop);
-           }
-                   
-             
-           // add a row???
-           this.load(this.file, this.node);
-           
-           
-            
-           
-           GLib.debug("trying to find new iter");
-        
-           
-                     
        }
        public void load (JsRender.JsRender file, JsRender.Node? node) 
        {
@@ -326,7 +287,7 @@ public class Xcls_LeftProps : Object
                
            }
            
-           GLib.debug("load leftprops\n");
+           GLib.debug("load leftprops");
        
            this.node = node;
            this.file = file;
@@ -336,9 +297,11 @@ public class Xcls_LeftProps : Object
                      
            //this.get('/RightEditor').el.hide();
            if (node ==null) {
+               GLib.debug("node is null return");
                return ;
            }
-           node.loadProps(this.model.el); 
+       
+           node.loadProps(this.model.el, _this.main_window.windowstate.project); 
            
            
           //GLib.debug("clear selection\n");
@@ -355,7 +318,7 @@ public class Xcls_LeftProps : Object
          // _this.valcol.el.set_max_width(_this.EditProps.el.get_allocated_width()/ 2);
           
        }
-       public class Xcls_Box2 : Object
+       public class Xcls_Box1 : Object
        {
                public Gtk.Box el;
                private Xcls_LeftProps  _this;
@@ -364,7 +327,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Box2(Xcls_LeftProps _owner )
+               public Xcls_Box1(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Box( Gtk.Orientation.HORIZONTAL, 0 );
@@ -373,23 +336,23 @@ public class Xcls_LeftProps : Object
 
                        // set gobject values
                        this.el.hexpand = true;
-                       var child_1 = new Xcls_Label3( _this );
+                       var child_1 = new Xcls_Label2( _this );
                        child_1.ref();
                        this.el.append( child_1.el );
-                       var child_2 = new Xcls_Button4( _this );
+                       var child_2 = new Xcls_Button3( _this );
                        child_2.ref();
                        this.el.append( child_2.el );
-                       var child_3 = new Xcls_Button5( _this );
+                       var child_3 = new Xcls_Button4( _this );
                        child_3.ref();
                        this.el.append( child_3.el );
-                       var child_4 = new Xcls_Button6( _this );
+                       var child_4 = new Xcls_MenuButton5( _this );
                        child_4.ref();
                        this.el.append( child_4.el );
                }
 
                // user defined functions
        }
-       public class Xcls_Label3 : Object
+       public class Xcls_Label2 : Object
        {
                public Gtk.Label el;
                private Xcls_LeftProps  _this;
@@ -398,7 +361,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Label3(Xcls_LeftProps _owner )
+               public Xcls_Label2(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Label( "Add:" );
@@ -413,7 +376,7 @@ public class Xcls_LeftProps : Object
                // user defined functions
        }
 
-       public class Xcls_Button4 : Object
+       public class Xcls_Button3 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -423,7 +386,7 @@ public class Xcls_LeftProps : Object
                public bool always_show_image;
 
                // ctor
-               public Xcls_Button4(Xcls_LeftProps _owner )
+               public Xcls_Button3(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -451,7 +414,7 @@ public class Xcls_LeftProps : Object
                // user defined functions
        }
 
-       public class Xcls_Button5 : Object
+       public class Xcls_Button4 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -461,7 +424,7 @@ public class Xcls_LeftProps : Object
                public bool always_show_image;
 
                // ctor
-               public Xcls_Button5(Xcls_LeftProps _owner )
+               public Xcls_Button4(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -491,54 +454,31 @@ public class Xcls_LeftProps : Object
                // user defined functions
        }
 
-       public class Xcls_Button6 : Object
+       public class Xcls_MenuButton5 : Object
        {
-               public Gtk.Button el;
+               public Gtk.MenuButton el;
                private Xcls_LeftProps  _this;
 
 
                        // my vars (def)
-               public bool always_show_image;
 
                // ctor
-               public Xcls_Button6(Xcls_LeftProps _owner )
+               public Xcls_MenuButton5(Xcls_LeftProps _owner )
                {
                        _this = _owner;
-                       this.el = new Gtk.Button();
+                       this.el = new Gtk.MenuButton();
 
                        // my vars (dec)
-                       this.always_show_image = true;
 
                        // set gobject values
-                       this.el.icon_name = "list-add";
-                       this.el.hexpand = true;
                        this.el.label = "Other";
-                       new Xcls_AddPropertyPopup( _this );
-
-                       //listeners
-                       this.el.clicked.connect( ( ) => {
-                         //_this.before_edit();
-                         
-                               
-                           var p = _this.AddPropertyPopup;
-                           
-                        //     Gtk.Allocation rect;
-                               //this.el.get_allocation(out rect);
-                               if (p.el.parent == null) {
-                                        p.el.set_parent(this.el);
-                                }
-                           //p.el.set_pointing_to(rect);
-                               p.el.show();
-                               p.el.set_position(Gtk.PositionType.BOTTOM);
-                               p.el.autohide = true;
-                            return;
-                       
-                       });
+                       new Xcls_addpop( _this );
+                       this.el.popover = _this.addpop.el;
                }
 
                // user defined functions
        }
-       public class Xcls_AddPropertyPopup : Object
+       public class Xcls_addpop : Object
        {
                public Gtk.Popover el;
                private Xcls_LeftProps  _this;
@@ -547,23 +487,23 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_AddPropertyPopup(Xcls_LeftProps _owner )
+               public Xcls_addpop(Xcls_LeftProps _owner )
                {
                        _this = _owner;
-                       _this.AddPropertyPopup = this;
+                       _this.addpop = this;
                        this.el = new Gtk.Popover();
 
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.autohide = true;
-                       var child_1 = new Xcls_Box8( _this );
+                       var child_1 = new Xcls_Box7( _this );
+                       child_1.ref();
                        this.el.child = child_1.el;
                }
 
                // user defined functions
        }
-       public class Xcls_Box8 : Object
+       public class Xcls_Box7 : Object
        {
                public Gtk.Box el;
                private Xcls_LeftProps  _this;
@@ -572,7 +512,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Box8(Xcls_LeftProps _owner )
+               public Xcls_Box7(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
@@ -580,62 +520,62 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       var child_1 = new Xcls_Button9( _this );
+                       var child_1 = new Xcls_Button8( _this );
                        child_1.ref();
                        this.el.append( child_1.el );
                        var child_2 = new Xcls_Button10( _this );
                        child_2.ref();
                        this.el.append( child_2.el );
-                       var child_3 = new Xcls_Button11( _this );
+                       var child_3 = new Xcls_Button12( _this );
                        child_3.ref();
                        this.el.append( child_3.el );
-                       var child_4 = new Xcls_Button12( _this );
+                       var child_4 = new Xcls_Button14( _this );
                        child_4.ref();
                        this.el.append( child_4.el );
-                       var child_5 = new Xcls_Button13( _this );
+                       var child_5 = new Xcls_Button16( _this );
                        child_5.ref();
                        this.el.append( child_5.el );
-                       var child_6 = new Xcls_Separator14( _this );
+                       var child_6 = new Xcls_Separator18( _this );
                        child_6.ref();
                        this.el.append( child_6.el );
-                       var child_7 = new Xcls_Button15( _this );
+                       var child_7 = new Xcls_Button19( _this );
                        child_7.ref();
                        this.el.append( child_7.el );
-                       var child_8 = new Xcls_Button16( _this );
+                       var child_8 = new Xcls_Button21( _this );
                        child_8.ref();
                        this.el.append( child_8.el );
-                       var child_9 = new Xcls_Button17( _this );
+                       var child_9 = new Xcls_Button23( _this );
                        child_9.ref();
                        this.el.append( child_9.el );
-                       var child_10 = new Xcls_Separator18( _this );
+                       var child_10 = new Xcls_Separator25( _this );
                        child_10.ref();
                        this.el.append( child_10.el );
-                       var child_11 = new Xcls_Button19( _this );
+                       var child_11 = new Xcls_Button26( _this );
                        child_11.ref();
                        this.el.append( child_11.el );
-                       var child_12 = new Xcls_Button20( _this );
+                       var child_12 = new Xcls_Button28( _this );
                        child_12.ref();
                        this.el.append( child_12.el );
-                       var child_13 = new Xcls_Button21( _this );
+                       var child_13 = new Xcls_Button30( _this );
                        child_13.ref();
                        this.el.append( child_13.el );
-                       var child_14 = new Xcls_Separator22( _this );
+                       var child_14 = new Xcls_Separator32( _this );
                        child_14.ref();
                        this.el.append( child_14.el );
-                       var child_15 = new Xcls_Button23( _this );
+                       var child_15 = new Xcls_Button33( _this );
                        child_15.ref();
                        this.el.append( child_15.el );
-                       var child_16 = new Xcls_Button24( _this );
+                       var child_16 = new Xcls_Button35( _this );
                        child_16.ref();
                        this.el.append( child_16.el );
-                       var child_17 = new Xcls_Button25( _this );
+                       var child_17 = new Xcls_Button37( _this );
                        child_17.ref();
                        this.el.append( child_17.el );
                }
 
                // user defined functions
        }
-       public class Xcls_Button9 : Object
+       public class Xcls_Button8 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -644,7 +584,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button9(Xcls_LeftProps _owner )
+               public Xcls_Button8(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -652,12 +592,14 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "Using _this.{ID} will map to this element";
-                       this.el.label = "id: _this.{ID} (Vala)";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label9( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ()  => {
-                               _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide();
                                // is this userdef or special??
                                var add = new JsRender.NodeProp.prop("id");
                                if (_this.node.has_prop_key(add)) {
@@ -668,12 +610,35 @@ public class Xcls_LeftProps : Object
                                
                                _this.view.editProp( add );
                                
-                               
                        });
                }
 
                // user defined functions
        }
+       public class Xcls_Label9 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label9(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "id: _this.{ID} (Vala)" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "Using _this.{ID} will map to this element";
+               }
+
+               // user defined functions
+       }
+
 
        public class Xcls_Button10 : Object
        {
@@ -692,14 +657,16 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "how to pack this element onto parent, (method, 2nd arg, 3rd arg) .. the 1st argument is filled by the element";
-                       this.el.label = "pack: Pack method (Vala)";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label11( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) => {
                         
                        
-                               _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide();
                                // is this userdef or special??
                                var add = new JsRender.NodeProp.special("pack", "add");
                                if (_this.node.has_prop_key(add)) {
@@ -716,8 +683,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label11 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label11(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "pack: Pack method (Vala)" );
+
+                       // my vars (dec)
 
-       public class Xcls_Button11 : Object
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "how to pack this element onto parent, (method, 2nd arg, 3rd arg) .. the 1st argument is filled by the element";
+               }
+
+               // user defined functions
+       }
+
+
+       public class Xcls_Button12 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -726,7 +717,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button11(Xcls_LeftProps _owner )
+               public Xcls_Button12(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -734,13 +725,15 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "eg. \n\nnew Clutter.Image.from_file(.....)";
-                       this.el.label = "ctor: Alterative to default contructor (Vala)";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label13( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) => {
                           
-                        _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide();
                                // is this userdef or special??
                                var add = new JsRender.NodeProp.special("ctor");
                                if (_this.node.has_prop_key(add)) {
@@ -756,8 +749,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label13 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
 
-       public class Xcls_Button12 : Object
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label13(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "ctor: Alterative to default contructor (Vala)" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "eg. \n\nnew Clutter.Image.from_file(.....)";
+               }
+
+               // user defined functions
+       }
+
+
+       public class Xcls_Button14 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -766,7 +783,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button12(Xcls_LeftProps _owner )
+               public Xcls_Button14(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -774,13 +791,15 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "This code is called after the ctor";
-                       this.el.label = "init: initialziation code (vala)";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label15( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) => {
                            
-                        _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide();
                                // is this userdef or special??
                                var add =  new JsRender.NodeProp.special("init","{\n\n}\n" ) ;
                                if (_this.node.has_prop_key(add)) {
@@ -795,8 +814,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label15 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label15(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "init: initialziation code (vala)" );
+
+                       // my vars (dec)
 
-       public class Xcls_Button13 : Object
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "This code is called after the ctor";
+               }
+
+               // user defined functions
+       }
+
+
+       public class Xcls_Button16 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -805,7 +848,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button13(Xcls_LeftProps _owner )
+               public Xcls_Button16(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -813,13 +856,15 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "set the cms-id for this element, when converted to javascript, the html value will be wrapped with Pman.Cms.content({cms-id},{original-html})\n";
-                       this.el.label = "cms-id: (Roo JS/Pman library)";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label17( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ()  => {
-                          
-                        _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide();
+                        
                                // is this userdef or special??
                                var add =   new JsRender.NodeProp.prop("cms-id","string", "" ) ;
                                if (_this.node.has_prop_key(add)) {
@@ -835,8 +880,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label17 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label17(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "cms-id: (Roo JS/Pman library)" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "set the cms-id for this element, when converted to javascript, the html value will be wrapped with Pman.Cms.content({cms-id},{original-html})\n";
+               }
+
+               // user defined functions
+       }
+
 
-       public class Xcls_Separator14 : Object
+       public class Xcls_Separator18 : Object
        {
                public Gtk.Separator el;
                private Xcls_LeftProps  _this;
@@ -845,7 +914,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Separator14(Xcls_LeftProps _owner )
+               public Xcls_Separator18(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Separator( Gtk.Orientation.HORIZONTAL );
@@ -858,7 +927,7 @@ public class Xcls_LeftProps : Object
                // user defined functions
        }
 
-       public class Xcls_Button15 : Object
+       public class Xcls_Button19 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -867,7 +936,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button15(Xcls_LeftProps _owner )
+               public Xcls_Button19(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -875,16 +944,18 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "Add a user defined string property";
-                       this.el.label = "String";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label20( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( (self) => {
-                            _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide();
                                _this.view.popover.show(
                                        _this.view.el, 
                                        _this.node, 
-                                        new JsRender.NodeProp.prop("", "string", "") ,
+                                        new JsRender.NodeProp.user("", "string", "") ,
                                        -1,  
                                        true
                                );
@@ -894,8 +965,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label20 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
 
-       public class Xcls_Button16 : Object
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label20(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "String" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "Add a user defined string property";
+               }
+
+               // user defined functions
+       }
+
+
+       public class Xcls_Button21 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -904,7 +999,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button16(Xcls_LeftProps _owner )
+               public Xcls_Button21(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -912,17 +1007,19 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "Add a user defined number property";
-                       this.el.label = "Number";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label22( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) =>{
-                             _this.AddPropertyPopup.el.hide();
-                             
+                        
+                               _this.addpop.el.hide();
                               _this.view.popover.show(
                                        _this.view.el, 
                                        _this.node, 
-                                        new JsRender.NodeProp.prop("", "int", "0") ,
+                                        new JsRender.NodeProp.user("", "int", "0") ,
                                        -1,  
                                        true
                                );
@@ -932,8 +1029,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label22 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label22(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "Number" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "Add a user defined number property";
+               }
+
+               // user defined functions
+       }
 
-       public class Xcls_Button17 : Object
+
+       public class Xcls_Button23 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -942,7 +1063,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button17(Xcls_LeftProps _owner )
+               public Xcls_Button23(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -950,17 +1071,19 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "Add a user defined boolean property";
-                       this.el.label = "Boolean";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label24( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) =>{
                          
-                                    _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide();
                           _this.view.popover.show(
                                        _this.view.el, 
                                        _this.node, 
-                                        new JsRender.NodeProp.prop("", "bool", "true") ,
+                                        new JsRender.NodeProp.user("", "bool", "true") ,
                                        -1,  
                                        true
                                ); 
@@ -970,8 +1093,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label24 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
 
-       public class Xcls_Separator18 : Object
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label24(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "Boolean" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "Add a user defined boolean property";
+               }
+
+               // user defined functions
+       }
+
+
+       public class Xcls_Separator25 : Object
        {
                public Gtk.Separator el;
                private Xcls_LeftProps  _this;
@@ -980,7 +1127,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Separator18(Xcls_LeftProps _owner )
+               public Xcls_Separator25(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Separator( Gtk.Orientation.HORIZONTAL );
@@ -993,7 +1140,7 @@ public class Xcls_LeftProps : Object
                // user defined functions
        }
 
-       public class Xcls_Button19 : Object
+       public class Xcls_Button26 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -1002,7 +1149,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button19(Xcls_LeftProps _owner )
+               public Xcls_Button26(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -1010,12 +1157,14 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "Add a user function boolean property";
-                       this.el.label = "Javascript Function";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label27( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) =>{
-                         _this.AddPropertyPopup.el.hide(); 
+                               _this.addpop.el.hide();
                           _this.view.popover.show(
                                        _this.view.el, 
                                        _this.node, 
@@ -1030,8 +1179,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label27 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
+
 
-       public class Xcls_Button20 : Object
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label27(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "Javascript Function" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "Add a javascript  function";
+               }
+
+               // user defined functions
+       }
+
+
+       public class Xcls_Button28 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -1040,7 +1213,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button20(Xcls_LeftProps _owner )
+               public Xcls_Button28(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -1048,12 +1221,14 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "Add a user function boolean property";
-                       this.el.label = "Vala Method";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label29( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) =>{
-                       _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide();
                            _this.view.popover.show(
                                        _this.view.el, 
                                        _this.node, 
@@ -1066,8 +1241,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label29 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
 
-       public class Xcls_Button21 : Object
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label29(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "Vala Method" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "Add a user defined method to a object";
+               }
+
+               // user defined functions
+       }
+
+
+       public class Xcls_Button30 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -1076,7 +1275,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button21(Xcls_LeftProps _owner )
+               public Xcls_Button30(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -1084,12 +1283,14 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "Add a vala signal";
-                       this.el.label = "Vala Signal";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label31( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) =>{
-                         _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide(); 
                          _this.view.popover.show(
                                        _this.view.el, 
                                        _this.node, 
@@ -1102,8 +1303,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label31 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label31(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "Vala Signal" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "Add a user defined signal to a object";
+               }
+
+               // user defined functions
+       }
+
 
-       public class Xcls_Separator22 : Object
+       public class Xcls_Separator32 : Object
        {
                public Gtk.Separator el;
                private Xcls_LeftProps  _this;
@@ -1112,7 +1337,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Separator22(Xcls_LeftProps _owner )
+               public Xcls_Separator32(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Separator( Gtk.Orientation.HORIZONTAL );
@@ -1125,7 +1350,7 @@ public class Xcls_LeftProps : Object
                // user defined functions
        }
 
-       public class Xcls_Button23 : Object
+       public class Xcls_Button33 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -1134,7 +1359,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button23(Xcls_LeftProps _owner )
+               public Xcls_Button33(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -1142,12 +1367,14 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "Add a flexy if (for HTML templates)";
-                       this.el.label = "Flexy - If";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label34( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) =>{
-                               _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide();
                                _this.view.popover.show(
                                        _this.view.el, 
                                        _this.node, 
@@ -1162,8 +1389,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label34 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label34(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "Flexy - If" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "Add a flexy if (for HTML templates)";
+               }
 
-       public class Xcls_Button24 : Object
+               // user defined functions
+       }
+
+
+       public class Xcls_Button35 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -1172,7 +1423,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button24(Xcls_LeftProps _owner )
+               public Xcls_Button35(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -1180,12 +1431,14 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       this.el.tooltip_markup = "Add a flexy include (for HTML templates)";
-                       this.el.label = "Flexy - Include";
+                       this.el.has_frame = false;
+                       var child_1 = new Xcls_Label36( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) =>{
-                               _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide();
                                _this.view.popover.show(
                                        _this.view.el, 
                                        _this.node, 
@@ -1200,8 +1453,32 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label36 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label36(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "Flexy - Include" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "Add a flexy include (for HTML templates)";
+               }
+
+               // user defined functions
+       }
 
-       public class Xcls_Button25 : Object
+
+       public class Xcls_Button37 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -1210,7 +1487,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button25(Xcls_LeftProps _owner )
+               public Xcls_Button37(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -1218,12 +1495,15 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
+                       this.el.has_frame = false;
                        this.el.tooltip_markup = "Add a flexy include (for HTML templates)";
-                       this.el.label = "Flexy - Foreach";
+                       var child_1 = new Xcls_Label38( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) =>{
-                               _this.AddPropertyPopup.el.hide();
+                               _this.addpop.el.hide();
                                _this.view.popover.show(
                                        _this.view.el, 
                                        _this.node, 
@@ -1237,6 +1517,30 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label38 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label38(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "Flexy - Foreach" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+                       this.el.tooltip_text = "Add a flexy foreach (for HTML templates)";
+               }
+
+               // user defined functions
+       }
+
 
 
 
@@ -1284,7 +1588,6 @@ public class Xcls_LeftProps : Object
 
 
                        // my vars (def)
-               public Gtk.CssProvider css;
                public Xcls_PopoverProperty popover;
 
                // ctor
@@ -1305,10 +1608,10 @@ public class Xcls_LeftProps : Object
                        this.el.vexpand = true;
                        this.el.show_row_separators = true;
                        new Xcls_deletemenu( _this );
-                       var child_3 = new Xcls_GestureClick31( _this );
+                       var child_3 = new Xcls_GestureClick45( _this );
                        child_3.ref();
                        this.el.add_controller(  child_3.el );
-                       var child_4 = new Xcls_GestureClick32( _this );
+                       var child_4 = new Xcls_GestureClick46( _this );
                        child_4.ref();
                        this.el.add_controller(  child_4.el );
                        new Xcls_keycol( _this );
@@ -1316,41 +1619,6 @@ public class Xcls_LeftProps : Object
                        new Xcls_valcol( _this );
                        this.el.append_column ( _this.valcol.el  );
                        new Xcls_ContextMenu( _this );
-
-                       // init method
-
-                       {
-                        
-                               this.css = new Gtk.CssProvider();
-                                
-                                       this.css.load_from_string("
-                       #leftprops-view { font-size: 12px;}
-                                
-                       #leftprops-view  dropdown button { 
-                                               min-height: 16px;                        
-                                               outline-offset : 0;
-                                       }
-                       #leftprops-view cell dropdown label  {
-                                       padding-top:0px;
-                                       padding-bottom:0px;
-                       }
-                       #leftprops-view cell   { 
-                                       padding-top:2px;
-                                       padding-bottom:2px;
-                                       }
-                       #leftprops-view cell label,  #leftprops-view cell editablelable {
-                                       padding-top:4px;
-                                       padding-bottom:4px;
-                       }");
-                        
-                                       Gtk.StyleContext.add_provider_for_display(
-                                       this.el.get_display(),
-                                       this.css,
-                                       Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
-                               );
-                                       
-                          
-                       }
                }
 
                // user defined functions
@@ -1365,13 +1633,13 @@ public class Xcls_LeftProps : Object
                                 
                        }
                        */
-                               GLib.debug("Get Widget At Row %d", (int)row);
+                               //GLib.debug("Get Widget At Row %d", (int)row);
                        var  child = this.el.get_first_child(); 
                        var line_no = -1; 
                        var reading_header = true;
                
                        while (child != null) {
-                                       GLib.debug("Got %s", child.get_type().name());
+                                       //GLib.debug("Got %s", child.get_type().name());
                            if (reading_header) {
                                         
                                           
@@ -1389,12 +1657,12 @@ public class Xcls_LeftProps : Object
                                    }
                                    line_no++;
                                        if (line_no == row) {
-                                               GLib.debug("Returning widget %s", child.get_type().name());
+                                               //GLib.debug("Returning widget %s", child.get_type().name());
                                            return (Gtk.Widget)child;
                                    }
                                child = child.get_next_sibling(); 
                        }
-                               GLib.debug("Rturning null");
+                               //GLib.debug("Rturning null");
                        return null;
                
                 }
@@ -1446,6 +1714,9 @@ public class Xcls_LeftProps : Object
                                }
                                if (l.get_visible()) {
                                        _this.stop_editor();
+                                       if (prop.parent == null) {
+                                               return;
+                                       }
                                _this.show_editor(_this.file, prop.parent, prop);
                                
                                }
@@ -1492,90 +1763,51 @@ public class Xcls_LeftProps : Object
                        return -1;
                
                 }
-               public int getRowAt (double x,  double in_y, out string pos) {
-               
+               public int getRowAt (double x,  double  y, out string pos) {
                
+                       pos = "";
+                       var w = this.el.pick(x, y, Gtk.PickFlags.DEFAULT);
+                       //GLib.debug("got widget %s", w == null ? "nothing" : w.get_type().name());
+                       if (w == null) {
+                               return -1;
+                       }
+                       
+                       var row= w.get_ancestor(GLib.Type.from_name("GtkColumnViewRowWidget"));
+                       if (row == null) {
+                               return -1;
+                       }
+                       
+                       //GLib.debug("got colview %s", row == null ? "nothing" : row.get_type().name());
                         
-               
-               /*
-                       
-               from            https://discourse.gnome.org/t/gtk4-finding-a-row-data-on-gtkcolumnview/8465
-                       var colview = gesture.widget;
-                       var line_no = check_list_widget(colview, x,y);
-                        if (line_no > -1) {
-                               var item = colview.model.get_item(line_no);
-                                
-                       }
-                       */
-                                
-                               
-                               //GLib.debug("offset = %d  y = %d", (int) voff, (int) in_y);
-                       var y = in_y + _this.EditProps.el.vadjustment.value; 
-                       var  child = this.el.get_first_child(); 
-                       //Gtk.Allocation alloc = { 0, 0, 0, 0 };
-                       var line_no = -1; 
-                       var reading_header = true;
-                       var real_y = 0;
-                       var header_height  = 0;
-                       pos = "none";
-                       var h = 0;
-                       while (child != null) {
-                                       //GLib.debug("Got %s", child.get_type().name());
-                           if (reading_header) {
-                                               
-               
-                                               if (child.get_type().name() != "GtkColumnListView") {
-                                               h += child.get_height();
-                                                       child = child.get_next_sibling();
-                                                       continue;
-                                               }
-                                               // should be columnlistview
-                                               child = child.get_first_child(); 
-                                           GLib.debug("header height=%d", h);
-                                               header_height =  h;
-                                               
-                                               reading_header = false;
-                                               
-                               }
-                               
-                                   if (child.get_type().name() != "GtkColumnViewRowWidget") {
-                                   child = child.get_next_sibling();
-                                   continue;
-                                   }
-                                   
-                                       if (y < header_height) {
-                                       return -1;
-                               }
-                                   
-                                   line_no++;
-                                       var hh = child.get_height();
-                                       //child.get_allocation(out alloc);
-                                       //GLib.debug("got cell xy = %d,%d  w,h= %d,%d", alloc.x, alloc.y, alloc.width, alloc.height);
-                                       //GLib.debug("row %d y= %d %s", line_no, (int) (header_height + alloc.y),
-                                       
-                                       //      child.visible ? "VIS" : "hidden");
-               
-                                   if (y >  (header_height + real_y) && y <= (header_height +  real_y + hh) ) {
-                                       if (y > ( header_height + real_y + (hh * 0.8))) {
-                                               pos = "below";
-                                       } else if (y > ( header_height + real_y + (hh * 0.2))) {
-                                               pos = "over";
-                                       } else {
-                                               pos = "above";
-                                               }
-                                        GLib.debug("getRowAt return : %d, %s", line_no, pos);
-                                           return line_no;
-                                   }
-                
-               
-                                   if (real_y + hh > y) {
-                                       return -1;
-                               }
-                               real_y += hh;
-                               child = child.get_next_sibling(); 
-                       }
-                       return -1;
-               
+                       var rn = 0;
+                       var cr = row;
+                        
+                       while (cr.get_prev_sibling() != null) {
+                               rn++;
+                               cr = cr.get_prev_sibling();
+                       }
+                       
+                       //GLib.debug("row number is %d", rn);
+                       //GLib.debug("click %d, %d", (int)x, (int)y);
+                       // above or belw
+                       Graphene.Rect  bounds;
+                       row.compute_bounds(this.el, out bounds);
+                       //GLib.debug("click x=%d, y=%d, w=%d, h=%d", 
+                       //      (int)bounds.get_x(), (int)bounds.get_y(),
+                       //      (int)bounds.get_width(), (int)bounds.get_height()
+                       //      );
+                       var ypos = y - bounds.get_y();
+                       //GLib.debug("rel ypos = %d", (int)ypos);       
+                       var rpos = 100.0 * (ypos / bounds.get_height());
+                       //GLib.debug("rel pos = %d %%", (int)rpos);
+                       pos = "over";
+                       
+                       if (rpos > 80) {
+                               pos = "below";
+                       } else if (rpos < 20) {
+                               pos = "above";
+                       } 
+                       return rn;
                 }
        }
        public class Xcls_deletemenu : Object
@@ -1596,13 +1828,14 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       var child_1 = new Xcls_Box29( _this );
+                       var child_1 = new Xcls_Box42( _this );
+                       child_1.ref();
                        this.el.child = child_1.el;
                }
 
                // user defined functions
        }
-       public class Xcls_Box29 : Object
+       public class Xcls_Box42 : Object
        {
                public Gtk.Box el;
                private Xcls_LeftProps  _this;
@@ -1611,7 +1844,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Box29(Xcls_LeftProps _owner )
+               public Xcls_Box42(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
@@ -1619,14 +1852,14 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       var child_1 = new Xcls_Button30( _this );
+                       var child_1 = new Xcls_Button43( _this );
                        child_1.ref();
                        this.el.append( child_1.el );
                }
 
                // user defined functions
        }
-       public class Xcls_Button30 : Object
+       public class Xcls_Button43 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -1635,7 +1868,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button30(Xcls_LeftProps _owner )
+               public Xcls_Button43(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();
@@ -1643,7 +1876,11 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
+                       this.el.has_frame = false;
                        this.el.label = "Delete";
+                       var child_1 = new Xcls_Label44( _this );
+                       child_1.ref();
+                       this.el.child = child_1.el;
 
                        //listeners
                        this.el.clicked.connect( ( ) => {
@@ -1658,10 +1895,33 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
+       public class Xcls_Label44 : Object
+       {
+               public Gtk.Label el;
+               private Xcls_LeftProps  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Label44(Xcls_LeftProps _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Label( "Delete Property / Method" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.halign = Gtk.Align.START;
+               }
+
+               // user defined functions
+       }
 
 
 
-       public class Xcls_GestureClick31 : Object
+
+       public class Xcls_GestureClick45 : Object
        {
                public Gtk.GestureClick el;
                private Xcls_LeftProps  _this;
@@ -1670,7 +1930,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_GestureClick31(Xcls_LeftProps _owner )
+               public Xcls_GestureClick45(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.GestureClick();
@@ -1718,7 +1978,7 @@ public class Xcls_LeftProps : Object
                // user defined functions
        }
 
-       public class Xcls_GestureClick32 : Object
+       public class Xcls_GestureClick46 : Object
        {
                public Gtk.GestureClick el;
                private Xcls_LeftProps  _this;
@@ -1727,7 +1987,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_GestureClick32(Xcls_LeftProps _owner )
+               public Xcls_GestureClick46(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.GestureClick();
@@ -1870,7 +2130,7 @@ public class Xcls_LeftProps : Object
                {
                        _this = _owner;
                        _this.keycol = this;
-                       var child_1 = new Xcls_SignalListItemFactory36( _this );
+                       var child_1 = new Xcls_SignalListItemFactory50( _this );
                        child_1.ref();
                        this.el = new Gtk.ColumnViewColumn( "Property", child_1.el );
 
@@ -1884,7 +2144,7 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
-       public class Xcls_SignalListItemFactory36 : Object
+       public class Xcls_SignalListItemFactory50 : Object
        {
                public Gtk.SignalListItemFactory el;
                private Xcls_LeftProps  _this;
@@ -1893,7 +2153,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_SignalListItemFactory36(Xcls_LeftProps _owner )
+               public Xcls_SignalListItemFactory50(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.SignalListItemFactory();
@@ -1925,7 +2185,9 @@ public class Xcls_LeftProps : Object
                         var lb = (Gtk.Label) ((Gtk.ListItem)listitem).get_child();
                         var item = (JsRender.NodeProp) ((Gtk.ListItem)listitem).get_item();
                        
-                       
+                        if (item == null) {
+                               return;
+                       }
                        item.bind_property("to_display_name_prop",
                                            lb, "label",
                                           GLib.BindingFlags.SYNC_CREATE);
@@ -1955,7 +2217,7 @@ public class Xcls_LeftProps : Object
                {
                        _this = _owner;
                        _this.valcol = this;
-                       var child_1 = new Xcls_SignalListItemFactory38( _this );
+                       var child_1 = new Xcls_SignalListItemFactory52( _this );
                        child_1.ref();
                        this.el = new Gtk.ColumnViewColumn( "Value", child_1.el );
 
@@ -1969,7 +2231,7 @@ public class Xcls_LeftProps : Object
 
                // user defined functions
        }
-       public class Xcls_SignalListItemFactory38 : Object
+       public class Xcls_SignalListItemFactory52 : Object
        {
                public Gtk.SignalListItemFactory el;
                private Xcls_LeftProps  _this;
@@ -1979,7 +2241,7 @@ public class Xcls_LeftProps : Object
                public bool is_setting;
 
                // ctor
-               public Xcls_SignalListItemFactory38(Xcls_LeftProps _owner )
+               public Xcls_SignalListItemFactory52(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.SignalListItemFactory();
@@ -2093,6 +2355,15 @@ public class Xcls_LeftProps : Object
                                cb.hide();
                                
                                var prop = (JsRender.NodeProp) ((Gtk.ListItem)listitem).get_item();
+                               if (prop == null || _this.node == null ) {
+                                       GLib.error("something is wrong");
+                                       return;
+                               }
+                               if ( _this.node.fqn() == "") {
+                                       GLib.debug("node is missing fqn");
+                                       return;
+                               }
+                               
                                //GLib.debug("prop = %s", prop.get_type().name());
                                //GLib.debug("prop.val = %s", prop.val);
                                //GLib.debug("prop.key = %s", prop.to_display_name());
@@ -2187,13 +2458,14 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       var child_1 = new Xcls_Box40( _this );
+                       var child_1 = new Xcls_Box54( _this );
+                       child_1.ref();
                        this.el.child = child_1.el;
                }
 
                // user defined functions
        }
-       public class Xcls_Box40 : Object
+       public class Xcls_Box54 : Object
        {
                public Gtk.Box el;
                private Xcls_LeftProps  _this;
@@ -2202,7 +2474,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Box40(Xcls_LeftProps _owner )
+               public Xcls_Box54(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
@@ -2210,14 +2482,14 @@ public class Xcls_LeftProps : Object
                        // my vars (dec)
 
                        // set gobject values
-                       var child_1 = new Xcls_Button41( _this );
+                       var child_1 = new Xcls_Button55( _this );
                        child_1.ref();
                        this.el.append( child_1.el );
                }
 
                // user defined functions
        }
-       public class Xcls_Button41 : Object
+       public class Xcls_Button55 : Object
        {
                public Gtk.Button el;
                private Xcls_LeftProps  _this;
@@ -2226,7 +2498,7 @@ public class Xcls_LeftProps : Object
                        // my vars (def)
 
                // ctor
-               public Xcls_Button41(Xcls_LeftProps _owner )
+               public Xcls_Button55(Xcls_LeftProps _owner )
                {
                        _this = _owner;
                        this.el = new Gtk.Button();