Cocos编辑器创建文件时竟然不能选择让根节点是ui::Widget或Layout 真是麻烦重重啊!!

Cocos编辑器v2.1, v2.2
各种不方便,目前被迫采用修改cocos代码、加入有风险的hack代码来曲线救国地让我那些UI界面正常工作

建议Cocos编辑器,在新建文件时,
能让我选择创建一个 以cocos2d::ui::Layout 为根节点的“UI界面” 类型,
而不是只提供cocos2d::Node或cocos2d::Layer为根节点的“场景”“图层”“节点”类型

额,有什么不方便的?能详细说明一下吗,还有为什么要加入有风险的hack代码才能让你那些UI界面正常工作 ?

重现步骤:
编辑器制作界面Page1.csd,内有一个列表容器ListView;
编辑器制作子界面Widget1.csd,内有一些有交互性的控件、例如按钮;
程序运行时对Page1的ListView进行push了多个Widget1子界面;

问题现象:
拖动touch若位于Widget1的交互性的控件、例如按钮上时,无法正常滚动滑动列表容器ListView;
ListView中点击某个widget后getCurSelectedIndex()得到的总是第一个widget的index

另外制作UI界面的话,根节点使用ui::Layout,相应的也就应该让美术可以方便直接设定根节点的 contentSize、是否使用pin, sizing, 百分比大小等,
美术就可以指定好了是不是全屏界面、百分比大小、是不是一块可复用的面板子界面、是不是固定大小。。。
而不用像现在这样读出来后,还得代码中设置contentSize和调用一遍ui::Helper::doLayout,全屏界面还得自己去读出并使用director中的visibleSize去设置后才能让这个界面适配到不同分辨率。
何况,我就是制作UI界面的情况下,我的里面的ui控件也都是cocos2d::ui::Widget的子类的东西,我不是要制作一个场景,咋个根节点就不是个cocos2d::ui里的类呢

而且现在的Cocos编辑器做出的根节点是普通Node,
而cocos2d::ui的代码中有不少出现这样的代码:
dynamic_cast<Widget*>(parent->getParent())
dynamic_cast<Widget*>(getParent())
,当Cocos编辑器做出的界面A中add了另一个Cocos编辑器做出的界面B后,不少代码就不正常工作了,
例如关于touch,由于被add的界面B的根节点是Node,不是Widget,里面发生的touch事件就不会被继续propagate上抛到界面A中去继续处理了
后果就是上面所说的ListView、PageView中拖动问题、ListView中点击某项后getCurSelectedIndex问题。

我也试过给目前的编辑器中的根节点,设置高级属性、自定义类,设置成Layout,确实能被LayoutReader读,但是由于导出的资源数据内容与LayoutReader预期的不一致,没法这么用。
至于说我也可以选择另写一个MyNodeAsLayoutReader,用它来创建ui::Layout后读入Node属性数据,当然也是能做,可是,这不正是槽点么。。。