// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/class.StyleContext.html).
pub type StyleContext

///|
pub(open) trait IStyleContext {
  fn as_style_context(Self) -> StyleContext
}

///|
pub impl IStyleContext for StyleContext with fn as_style_context(self) {
  self
}

///|
/// Implementation contract for StyleContext.changed. Self is the retained MoonBit state; the second parameter is the invoked StyleContext object.
pub(open) trait VStyleContextChanged {
  fn changed(Self, StyleContext) -> Unit
}

///|
#borrow(display, provider)
extern "c" fn moonbit_gtk_style_context_add_provider_for_display(
  display : @gdk.Display,
  provider : StyleProvider,
  priority : UInt,
) = "moonbit_gtk_style_context_add_provider_for_display"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/type_func.StyleContext.add_provider_for_display.html).
pub fn StyleContext::add_provider_for_display(
  display : &@gdk.IDisplay,
  provider : &IStyleProvider,
  priority : UInt,
) -> Unit {
  moonbit_gtk_style_context_add_provider_for_display(
    display.as_display(),
    provider.as_style_provider(),
    priority,
  )
}

///|
#borrow(display, provider)
extern "c" fn moonbit_gtk_style_context_remove_provider_for_display(
  display : @gdk.Display,
  provider : StyleProvider,
) = "moonbit_gtk_style_context_remove_provider_for_display"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/type_func.StyleContext.remove_provider_for_display.html).
pub fn StyleContext::remove_provider_for_display(
  display : &@gdk.IDisplay,
  provider : &IStyleProvider,
) -> Unit {
  moonbit_gtk_style_context_remove_provider_for_display(
    display.as_display(),
    provider.as_style_provider(),
  )
}

///|
pub fn StyleContext::as_gobject_object(self : StyleContext) -> @gobject.Object = "%identity"

///|
pub impl @gobject.IObject for StyleContext with fn as_object(self) {
  self.as_gobject_object()
}