 
 	private func doViewWillLayout() {
 		if let root = mRootView {
+			#if os(OSX)
+			if mHasPreferedContentSize {
+				if let win = root.window {
+					win.setContentSize(self.preferredContentSize)
+				}
+			}
+			#endif
 			if root.hasCoreView {
 				/* Layout components */
 				CNLog(logLevel: .debug, message: "- [Execute Layout] (root-size=\(root.frame.size.description)")

		}
	}

	private func doViewDidAppear() {
		#if os(OSX)
			if let window = self.view.window, let root = mRootView {
				//NSLog("doViewDidAppear")
				let decider = KCFirstResponderDecider(window: window)
				let _ = decider.decideFirstResponder(rootView: root)
				//dumpInfo(phase: "- [doViewDidAppear]", rootView: root)

	#endif

	#if os(OSX)
	open override func viewDidLayout() {
		super.viewDidLayout()
		doViewDidLayout()
	}
	#else
	open override func viewDidLayoutSubviews() {
		super.viewDidLayoutSubviews()
		doViewDidLayout()
	}
	#endif

	#if os(OSX)
	open override func viewDidAppear() {
		super.viewDidAppear()
		doViewDidAppear()
