From dca6fc784cb76fc9c1ad34f58ea63c72d6bd82a8 Mon Sep 17 00:00:00 2001 From: Alan Date: Wed, 14 Feb 2024 17:57:24 +0800 Subject: [PATCH] Fix #8034 - structs as ctor properties - need adding as default properties. --- src/Palete/Gtk.vala | 53 ++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/src/Palete/Gtk.vala b/src/Palete/Gtk.vala index e29f259f5..4827b2b7a 100644 --- a/src/Palete/Gtk.vala +++ b/src/Palete/Gtk.vala @@ -75,10 +75,7 @@ namespace Palete { //return typeof(this.comments[ns][what]) == 'undefined' ? '' : this.comments[ns][what]; } - // does not handle implements... - public override GirObject? getClass(string ename) - { - + public GirObject? loadGir (string ename) { var es = ename.split("."); if (es.length < 2) { return null; @@ -87,39 +84,33 @@ namespace Palete { if (gir == null) { return null; } - return gir.classes.get(es[1]); - + return gir; + } + + // does not handle implements... + public override GirObject? getClass(string ename) + { + var es = ename.split("."); + var gir = this.loadGir(ename); + return gir == null ? null : gir.classes.get(es[1]); + } + public GirObject? getDelegate(string ename) { var es = ename.split("."); - if (es.length < 2) { - return null; - } - var gir = Gir.factory(this.project,es[0]); - if (gir == null) { - return null; - } - return gir.delegates.get(es[1]); - + var gir = this.loadGir(ename); + return gir == null ? null : gir.delegates.get(es[1]); } - + public GirObject? getClassOrEnum(string ename) { - var es = ename.split("."); - if (es.length < 2) { - return null; - } - var gir = Gir.factory(this.project,es[0]); - if (gir.classes.has_key(es[1])) { - return gir.classes.get(es[1]); - } - if (gir.consts.has_key(es[1])) { - return gir.consts.get(es[1]); - } - return null; + var gir = this.loadGir(ename); + return gir == null ? null : + (gir.classes.has_key(es[1]) ? gir.classes.get(es[1]) : gir.consts.get(es[1]) ); + } @@ -457,10 +448,14 @@ namespace Palete { // GLib.debug("adding property from ctor : %s, %s, %s [%s]", cname , prop.name, prop.type, sub == null ? "-" : sub.nodetype); if (sub != null) { // can't add child classes here... - + if (sub.nodetype == "Struct") { + this.node_defaults.get(cname).set(prop.name, new JsRender.NodeProp.raw(prop.name, prop.type, "")); + continue; + } GLib.debug("skipping ctor argument proprty is an object"); continue; } + sub = this.getDelegate(prop.type); if (sub != null) { // can't add child classes here... this.node_defaults.get(cname).set(prop.name, new JsRender.NodeProp.raw(prop.name, prop.type, sub.sig)); -- 2.39.2