sig
  val cast : 'Gobject.obj -> Gtk.widget Gtk.obj
  module P :
    sig
      val app_paintable : ([> `widget ], bool) Gobject.property
      val can_default : ([> `widget ], bool) Gobject.property
      val can_focus : ([> `widget ], bool) Gobject.property
      val composite_child : ([> `widget ], bool) Gobject.property
      val events : ([> `widget ], GdkEnums.event_mask list) Gobject.property
      val extension_events :
        ([> `widget ], GdkEnums.extension_mode) Gobject.property
      val has_default : ([> `widget ], bool) Gobject.property
      val has_focus : ([> `widget ], bool) Gobject.property
      val height_request : ([> `widget ], int) Gobject.property
      val is_focus : ([> `widget ], bool) Gobject.property
      val name : ([> `widget ], string) Gobject.property
      val parent :
        ([> `widget ], Gtk.container Gtk.obj option) Gobject.property
      val receives_default : ([> `widget ], bool) Gobject.property
      val sensitive : ([> `widget ], bool) Gobject.property
      val style : ([> `widget ], Gtk.style) Gobject.property
      val visible : ([> `widget ], bool) Gobject.property
      val width_request : ([> `widget ], int) Gobject.property
    end
  module S :
    sig
      val show : ([> `widget ], unit -> unit) GtkSignal.t
      val hide : ([> `widget ], unit -> unit) GtkSignal.t
      val map : ([> `widget ], unit -> unit) GtkSignal.t
      val unmap : ([> `widget ], unit -> unit) GtkSignal.t
      val realize : ([> `widget ], unit -> unit) GtkSignal.t
      val unrealize : ([> `widget ], unit -> unit) GtkSignal.t
      val state_changed :
        ([> `widget ], GtkEnums.state_type -> unit) GtkSignal.t
      val parent_set :
        ([> `widget ], Gtk.widget Gtk.obj option -> unit) GtkSignal.t
      val size_allocate : ([> `widget ], Gtk.rectangle -> unit) GtkSignal.t
      val style_set : ([> `widget ], Gtk.style option -> unit) GtkSignal.t
      val selection_get :
        ([> `widget ], Gtk.selection_data -> info:int -> time:int32 -> unit)
        GtkSignal.t
      val selection_received :
        ([> `widget ], Gtk.selection_data -> time:int32 -> unit) GtkSignal.t
      val drag_begin : ([> `widget ], Gdk.drag_context -> unit) GtkSignal.t
      val drag_data_delete :
        ([> `widget ], Gdk.drag_context -> unit) GtkSignal.t
      val drag_data_get :
        ([> `widget ],
         Gdk.drag_context ->
         Gtk.selection_data -> info:int -> time:int32 -> unit)
        GtkSignal.t
      val drag_data_received :
        ([> `widget ],
         Gdk.drag_context ->
         x:int ->
         y:int -> Gtk.selection_data -> info:int -> time:int32 -> unit)
        GtkSignal.t
      val drag_drop :
        ([> `widget ],
         Gdk.drag_context -> x:int -> y:int -> time:int32 -> bool)
        GtkSignal.t
      val drag_end : ([> `widget ], Gdk.drag_context -> unit) GtkSignal.t
      val drag_leave :
        ([> `widget ], Gdk.drag_context -> time:int32 -> unit) GtkSignal.t
      val drag_motion :
        ([> `widget ],
         Gdk.drag_context -> x:int -> y:int -> time:int32 -> bool)
        GtkSignal.t
      val event : ([> `widget ], GdkEvent.any -> bool) GtkSignal.t
      val event_after : ([> `widget ], GdkEvent.any -> unit) GtkSignal.t
    end
  external set_double_buffered : [> `widget ] Gtk.obj -> bool -> unit
    = "ml_gtk_widget_set_double_buffered"
  external style_get_property :
    [> `widget ] Gtk.obj -> string -> Gobject.g_value
    = "ml_gtk_widget_style_get_property"
end