sig
  val cast : 'Gobject.obj -> Gtk.menu Gtk.obj
  module P :
    sig val tearoff_title : ([> `menu ], string) Gobject.property end
  module S :
    sig
      val move_scroll :
        ([> `menu ], GtkEnums.scroll_type -> unit) GtkSignal.t
    end
  val create : Gtk.menu Gobject.param list -> Gtk.menu Gtk.obj
  external popup :
    [> `menu ] Gtk.obj ->
    [> `menushell ] Gtk.optobj ->
    [> `menuitem ] Gtk.optobj -> button:int -> time:int32 -> unit
    = "ml_gtk_menu_popup"
  external popup_at :
    [> `menu ] Gtk.obj ->
    ?button:int ->
    ?time:int32 ->
    (x:int -> y:int -> pushed_in:bool -> int * int * bool) -> unit
    = "ml_gtk_menu_popup_at"
  external popdown : [> `menu ] Gtk.obj -> unit = "ml_gtk_menu_popdown"
  external get_active : [> `menu ] Gtk.obj -> Gtk.widget Gtk.obj
    = "ml_gtk_menu_get_active"
  external set_active : [> `menu ] Gtk.obj -> int -> unit
    = "ml_gtk_menu_set_active"
  external set_accel_group : [> `menu ] Gtk.obj -> Gtk.accel_group -> unit
    = "ml_gtk_menu_set_accel_group"
  external get_accel_group : [> `menu ] Gtk.obj -> Gtk.accel_group
    = "ml_gtk_menu_get_accel_group"
  external set_accel_path : [> `menu ] Gtk.obj -> string -> unit
    = "ml_gtk_menu_set_accel_path"
  external attach_to_widget :
    [> `menu ] Gtk.obj -> [> `widget ] Gtk.obj -> unit
    = "ml_gtk_menu_attach_to_widget"
  external get_attach_widget : [> `menu ] Gtk.obj -> Gtk.widget Gtk.obj
    = "ml_gtk_menu_get_attach_widget"
  external detach : [> `menu ] Gtk.obj -> unit = "ml_gtk_menu_detach"
  val popup :
    ?parent_menu:[> `menushell ] Gobject.obj ->
    ?parent_item:[> `menuitem ] Gobject.obj ->
    [> `menu ] Gtk.obj -> button:int -> time:int32 -> unit
  val set :
    ?active:int -> ?accel_group:Gtk.accel_group -> [> `menu ] Gtk.obj -> unit
end