 		gtk_widget_queue_draw(n_Widget)
 	}
 
-	/// This function is only for use in widget implementations. Flags a widget to have its size renegotiated; should be called when a widget for some reason has a new size request. For example, when you change the text in a GtkLabel, GtkLabel queues a resize to ensure there’s enough space for the new text.
+	/// This function is only for use in widget implementations. Flags a widget to have its size renegotiated;
+	/// should be called when a widget for some reason has a new size request. For example, when you change the text in a
+	/// GtkLabel, GtkLabel queues a resize to ensure there’s enough space for the new text.
 	func queueResize() {
 		gtk_widget_queue_resize(n_Widget)
 	}


	internal init(n_Widget: UnsafeMutablePointer<GtkWidget>) {
		self.n_Widget = n_Widget
		overrideGtkHandler()
	}

	internal init?(o_Widget: UnsafeMutablePointer<GtkWidget>) {
		guard o_Widget != nil else { return nil }
		self.n_Widget = o_Widget
		overrideGtkHandler()
	}

	func overrideGtkHandler() {
		WidgetNotificationCenter.sharedInstance.register(self, fromNativeWidget: n_Widget)
	}


	func destroy() {
		print(String(self.dynamicType))

		WidgetNotificationCenter.sharedInstance.registerTypes[String(self.dynamicType)]!.destroy(n_Widget)
	}

	// TODO: some for gtk_widget_in_destruction(), gtk_widget_destroyed()

import CGTK
import gobjectswift

typealias WidgetAccelClosuresChangedCallback = (Widget) -> Void
// TODO: some for “button-press-event”, “button-release-event”, need gdk-swift
// TODO: some for “can-activate-accel”, need understand this
// TODO: some for “child-notify”, need understand this
typealias WidgetCompositedChangedCallback = (Widget) -> Void
// TODO: some for “configure-event”, “damage-event”, “delete-event”, need gdk-swift
typealias WidgetDestroyCallback = (Widget) -> Void
// TODO: some for “destroy-event”, need gdk-swift
typealias WidgetTextDirectionChangedCallback = (Widget, TextDirection) -> Void
/* TODO: some for “drag-begin”, “drag-data-delete”, “drag-data-get”, “drag-data-received”, “drag-drop”, “drag-end”,
         “drag-failed”, “drag-leave”, “drag-motion”, need gdk-swift */
// TODO: some for “draw”, need cario-swift
// TODO: some for “enter-notify-event”, “event”, “event-after”, need gdk-swift
typealias WidgetFocusCallback = (Widget, TextDirection) -> Bool
// TODO: some for “focus-in-event”, “focus-out-event”, “grab-broken-event”, need gdk-swift
typealias WidgetGrabFocusCallback = (Widget) -> Void
typealias WidgetGrabNotifyCallback = (Widget, Bool) -> Void
typealias WidgetHideCallback = (Widget) -> Void
// TODO: need some ideas about 'The “hierarchy-changed” signal'
// TODO: some for “key-press-event”, “key-release-event”, need gdk-swift
typealias WidgetKeyboardNavigationFailedCallback = (Widget, TextDirection) -> Bool
// TODO: some for “leave-notify-event”, need gdk-swift
typealias WidgetMapCallback = (Widget) -> Void


class Widget: Object {

	class var n_Type: UInt {
		return 0
