// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT

#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
#![allow(
    clippy::approx_constant,
    clippy::type_complexity,
    clippy::unreadable_literal,
    clippy::upper_case_acronyms
)]
#![cfg_attr(docsrs, feature(doc_cfg))]

mod manual;

pub use manual::*;

#[allow(unused_imports)]
use libc::{
    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
    intptr_t, size_t, ssize_t, uintptr_t, FILE,
};

#[allow(unused_imports)]
use glib::{gboolean, gconstpointer, gpointer, GType};

pub const GTK_ENTRY_BUFFER_MAX_SIZE: u16 = ::std::u16::MAX;

// Aliases
pub type GtkAllocation = gdk::GdkRectangle;
pub type GtkStock = *mut c_char;

// Enums
pub type GtkAlign = c_int;
pub const GTK_ALIGN_FILL: GtkAlign = 0;
pub const GTK_ALIGN_START: GtkAlign = 1;
pub const GTK_ALIGN_END: GtkAlign = 2;
pub const GTK_ALIGN_CENTER: GtkAlign = 3;
pub const GTK_ALIGN_BASELINE: GtkAlign = 4;

pub type GtkArrowPlacement = c_int;
pub const GTK_ARROWS_BOTH: GtkArrowPlacement = 0;
pub const GTK_ARROWS_START: GtkArrowPlacement = 1;
pub const GTK_ARROWS_END: GtkArrowPlacement = 2;

pub type GtkArrowType = c_int;
pub const GTK_ARROW_UP: GtkArrowType = 0;
pub const GTK_ARROW_DOWN: GtkArrowType = 1;
pub const GTK_ARROW_LEFT: GtkArrowType = 2;
pub const GTK_ARROW_RIGHT: GtkArrowType = 3;
pub const GTK_ARROW_NONE: GtkArrowType = 4;

pub type GtkAssistantPageType = c_int;
pub const GTK_ASSISTANT_PAGE_CONTENT: GtkAssistantPageType = 0;
pub const GTK_ASSISTANT_PAGE_INTRO: GtkAssistantPageType = 1;
pub const GTK_ASSISTANT_PAGE_CONFIRM: GtkAssistantPageType = 2;
pub const GTK_ASSISTANT_PAGE_SUMMARY: GtkAssistantPageType = 3;
pub const GTK_ASSISTANT_PAGE_PROGRESS: GtkAssistantPageType = 4;
pub const GTK_ASSISTANT_PAGE_CUSTOM: GtkAssistantPageType = 5;

pub type GtkBaselinePosition = c_int;
pub const GTK_BASELINE_POSITION_TOP: GtkBaselinePosition = 0;
pub const GTK_BASELINE_POSITION_CENTER: GtkBaselinePosition = 1;
pub const GTK_BASELINE_POSITION_BOTTOM: GtkBaselinePosition = 2;

pub type GtkBorderStyle = c_int;
pub const GTK_BORDER_STYLE_NONE: GtkBorderStyle = 0;
pub const GTK_BORDER_STYLE_SOLID: GtkBorderStyle = 1;
pub const GTK_BORDER_STYLE_INSET: GtkBorderStyle = 2;
pub const GTK_BORDER_STYLE_OUTSET: GtkBorderStyle = 3;
pub const GTK_BORDER_STYLE_HIDDEN: GtkBorderStyle = 4;
pub const GTK_BORDER_STYLE_DOTTED: GtkBorderStyle = 5;
pub const GTK_BORDER_STYLE_DASHED: GtkBorderStyle = 6;
pub const GTK_BORDER_STYLE_DOUBLE: GtkBorderStyle = 7;
pub const GTK_BORDER_STYLE_GROOVE: GtkBorderStyle = 8;
pub const GTK_BORDER_STYLE_RIDGE: GtkBorderStyle = 9;

pub type GtkBuilderError = c_int;
pub const GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION: GtkBuilderError = 0;
pub const GTK_BUILDER_ERROR_UNHANDLED_TAG: GtkBuilderError = 1;
pub const GTK_BUILDER_ERROR_MISSING_ATTRIBUTE: GtkBuilderError = 2;
pub const GTK_BUILDER_ERROR_INVALID_ATTRIBUTE: GtkBuilderError = 3;
pub const GTK_BUILDER_ERROR_INVALID_TAG: GtkBuilderError = 4;
pub const GTK_BUILDER_ERROR_MISSING_PROPERTY_VALUE: GtkBuilderError = 5;
pub const GTK_BUILDER_ERROR_INVALID_VALUE: GtkBuilderError = 6;
pub const GTK_BUILDER_ERROR_VERSION_MISMATCH: GtkBuilderError = 7;
pub const GTK_BUILDER_ERROR_DUPLICATE_ID: GtkBuilderError = 8;
pub const GTK_BUILDER_ERROR_OBJECT_TYPE_REFUSED: GtkBuilderError = 9;
pub const GTK_BUILDER_ERROR_TEMPLATE_MISMATCH: GtkBuilderError = 10;
pub const GTK_BUILDER_ERROR_INVALID_PROPERTY: GtkBuilderError = 11;
pub const GTK_BUILDER_ERROR_INVALID_SIGNAL: GtkBuilderError = 12;
pub const GTK_BUILDER_ERROR_INVALID_ID: GtkBuilderError = 13;

pub type GtkButtonBoxStyle = c_int;
pub const GTK_BUTTONBOX_SPREAD: GtkButtonBoxStyle = 1;
pub const GTK_BUTTONBOX_EDGE: GtkButtonBoxStyle = 2;
pub const GTK_BUTTONBOX_START: GtkButtonBoxStyle = 3;
pub const GTK_BUTTONBOX_END: GtkButtonBoxStyle = 4;
pub const GTK_BUTTONBOX_CENTER: GtkButtonBoxStyle = 5;
pub const GTK_BUTTONBOX_EXPAND: GtkButtonBoxStyle = 6;

pub type GtkButtonRole = c_int;
pub const GTK_BUTTON_ROLE_NORMAL: GtkButtonRole = 0;
pub const GTK_BUTTON_ROLE_CHECK: GtkButtonRole = 1;
pub const GTK_BUTTON_ROLE_RADIO: GtkButtonRole = 2;

pub type GtkButtonsType = c_int;
pub const GTK_BUTTONS_NONE: GtkButtonsType = 0;
pub const GTK_BUTTONS_OK: GtkButtonsType = 1;
pub const GTK_BUTTONS_CLOSE: GtkButtonsType = 2;
pub const GTK_BUTTONS_CANCEL: GtkButtonsType = 3;
pub const GTK_BUTTONS_YES_NO: GtkButtonsType = 4;
pub const GTK_BUTTONS_OK_CANCEL: GtkButtonsType = 5;

pub type GtkCellRendererAccelMode = c_int;
pub const GTK_CELL_RENDERER_ACCEL_MODE_GTK: GtkCellRendererAccelMode = 0;
pub const GTK_CELL_RENDERER_ACCEL_MODE_OTHER: GtkCellRendererAccelMode = 1;

pub type GtkCellRendererMode = c_int;
pub const GTK_CELL_RENDERER_MODE_INERT: GtkCellRendererMode = 0;
pub const GTK_CELL_RENDERER_MODE_ACTIVATABLE: GtkCellRendererMode = 1;
pub const GTK_CELL_RENDERER_MODE_EDITABLE: GtkCellRendererMode = 2;

pub type GtkCornerType = c_int;
pub const GTK_CORNER_TOP_LEFT: GtkCornerType = 0;
pub const GTK_CORNER_BOTTOM_LEFT: GtkCornerType = 1;
pub const GTK_CORNER_TOP_RIGHT: GtkCornerType = 2;
pub const GTK_CORNER_BOTTOM_RIGHT: GtkCornerType = 3;

pub type GtkCssProviderError = c_int;
pub const GTK_CSS_PROVIDER_ERROR_FAILED: GtkCssProviderError = 0;
pub const GTK_CSS_PROVIDER_ERROR_SYNTAX: GtkCssProviderError = 1;
pub const GTK_CSS_PROVIDER_ERROR_IMPORT: GtkCssProviderError = 2;
pub const GTK_CSS_PROVIDER_ERROR_NAME: GtkCssProviderError = 3;
pub const GTK_CSS_PROVIDER_ERROR_DEPRECATED: GtkCssProviderError = 4;
pub const GTK_CSS_PROVIDER_ERROR_UNKNOWN_VALUE: GtkCssProviderError = 5;

pub type GtkCssSectionType = c_int;
pub const GTK_CSS_SECTION_DOCUMENT: GtkCssSectionType = 0;
pub const GTK_CSS_SECTION_IMPORT: GtkCssSectionType = 1;
pub const GTK_CSS_SECTION_COLOR_DEFINITION: GtkCssSectionType = 2;
pub const GTK_CSS_SECTION_BINDING_SET: GtkCssSectionType = 3;
pub const GTK_CSS_SECTION_RULESET: GtkCssSectionType = 4;
pub const GTK_CSS_SECTION_SELECTOR: GtkCssSectionType = 5;
pub const GTK_CSS_SECTION_DECLARATION: GtkCssSectionType = 6;
pub const GTK_CSS_SECTION_VALUE: GtkCssSectionType = 7;
pub const GTK_CSS_SECTION_KEYFRAMES: GtkCssSectionType = 8;

pub type GtkDeleteType = c_int;
pub const GTK_DELETE_CHARS: GtkDeleteType = 0;
pub const GTK_DELETE_WORD_ENDS: GtkDeleteType = 1;
pub const GTK_DELETE_WORDS: GtkDeleteType = 2;
pub const GTK_DELETE_DISPLAY_LINES: GtkDeleteType = 3;
pub const GTK_DELETE_DISPLAY_LINE_ENDS: GtkDeleteType = 4;
pub const GTK_DELETE_PARAGRAPH_ENDS: GtkDeleteType = 5;
pub const GTK_DELETE_PARAGRAPHS: GtkDeleteType = 6;
pub const GTK_DELETE_WHITESPACE: GtkDeleteType = 7;

pub type GtkDirectionType = c_int;
pub const GTK_DIR_TAB_FORWARD: GtkDirectionType = 0;
pub const GTK_DIR_TAB_BACKWARD: GtkDirectionType = 1;
pub const GTK_DIR_UP: GtkDirectionType = 2;
pub const GTK_DIR_DOWN: GtkDirectionType = 3;
pub const GTK_DIR_LEFT: GtkDirectionType = 4;
pub const GTK_DIR_RIGHT: GtkDirectionType = 5;

pub type GtkDragResult = c_int;
pub const GTK_DRAG_RESULT_SUCCESS: GtkDragResult = 0;
pub const GTK_DRAG_RESULT_NO_TARGET: GtkDragResult = 1;
pub const GTK_DRAG_RESULT_USER_CANCELLED: GtkDragResult = 2;
pub const GTK_DRAG_RESULT_TIMEOUT_EXPIRED: GtkDragResult = 3;
pub const GTK_DRAG_RESULT_GRAB_BROKEN: GtkDragResult = 4;
pub const GTK_DRAG_RESULT_ERROR: GtkDragResult = 5;

pub type GtkEntryIconPosition = c_int;
pub const GTK_ENTRY_ICON_PRIMARY: GtkEntryIconPosition = 0;
pub const GTK_ENTRY_ICON_SECONDARY: GtkEntryIconPosition = 1;

pub type GtkEventSequenceState = c_int;
pub const GTK_EVENT_SEQUENCE_NONE: GtkEventSequenceState = 0;
pub const GTK_EVENT_SEQUENCE_CLAIMED: GtkEventSequenceState = 1;
pub const GTK_EVENT_SEQUENCE_DENIED: GtkEventSequenceState = 2;

pub type GtkExpanderStyle = c_int;
pub const GTK_EXPANDER_COLLAPSED: GtkExpanderStyle = 0;
pub const GTK_EXPANDER_SEMI_COLLAPSED: GtkExpanderStyle = 1;
pub const GTK_EXPANDER_SEMI_EXPANDED: GtkExpanderStyle = 2;
pub const GTK_EXPANDER_EXPANDED: GtkExpanderStyle = 3;

pub type GtkFileChooserAction = c_int;
pub const GTK_FILE_CHOOSER_ACTION_OPEN: GtkFileChooserAction = 0;
pub const GTK_FILE_CHOOSER_ACTION_SAVE: GtkFileChooserAction = 1;
pub const GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER: GtkFileChooserAction = 2;
pub const GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER: GtkFileChooserAction = 3;

pub type GtkFileChooserConfirmation = c_int;
pub const GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM: GtkFileChooserConfirmation = 0;
pub const GTK_FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME: GtkFileChooserConfirmation = 1;
pub const GTK_FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN: GtkFileChooserConfirmation = 2;

pub type GtkFileChooserError = c_int;
pub const GTK_FILE_CHOOSER_ERROR_NONEXISTENT: GtkFileChooserError = 0;
pub const GTK_FILE_CHOOSER_ERROR_BAD_FILENAME: GtkFileChooserError = 1;
pub const GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS: GtkFileChooserError = 2;
pub const GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME: GtkFileChooserError = 3;

pub type GtkIMPreeditStyle = c_int;
pub const GTK_IM_PREEDIT_NOTHING: GtkIMPreeditStyle = 0;
pub const GTK_IM_PREEDIT_CALLBACK: GtkIMPreeditStyle = 1;
pub const GTK_IM_PREEDIT_NONE: GtkIMPreeditStyle = 2;

pub type GtkIMStatusStyle = c_int;
pub const GTK_IM_STATUS_NOTHING: GtkIMStatusStyle = 0;
pub const GTK_IM_STATUS_CALLBACK: GtkIMStatusStyle = 1;
pub const GTK_IM_STATUS_NONE: GtkIMStatusStyle = 2;

pub type GtkIconSize = c_int;
pub const GTK_ICON_SIZE_INVALID: GtkIconSize = 0;
pub const GTK_ICON_SIZE_MENU: GtkIconSize = 1;
pub const GTK_ICON_SIZE_SMALL_TOOLBAR: GtkIconSize = 2;
pub const GTK_ICON_SIZE_LARGE_TOOLBAR: GtkIconSize = 3;
pub const GTK_ICON_SIZE_BUTTON: GtkIconSize = 4;
pub const GTK_ICON_SIZE_DND: GtkIconSize = 5;
pub const GTK_ICON_SIZE_DIALOG: GtkIconSize = 6;

pub type GtkIconThemeError = c_int;
pub const GTK_ICON_THEME_NOT_FOUND: GtkIconThemeError = 0;
pub const GTK_ICON_THEME_FAILED: GtkIconThemeError = 1;

pub type GtkIconViewDropPosition = c_int;
pub const GTK_ICON_VIEW_NO_DROP: GtkIconViewDropPosition = 0;
pub const GTK_ICON_VIEW_DROP_INTO: GtkIconViewDropPosition = 1;
pub const GTK_ICON_VIEW_DROP_LEFT: GtkIconViewDropPosition = 2;
pub const GTK_ICON_VIEW_DROP_RIGHT: GtkIconViewDropPosition = 3;
pub const GTK_ICON_VIEW_DROP_ABOVE: GtkIconViewDropPosition = 4;
pub const GTK_ICON_VIEW_DROP_BELOW: GtkIconViewDropPosition = 5;

pub type GtkImageType = c_int;
pub const GTK_IMAGE_EMPTY: GtkImageType = 0;
pub const GTK_IMAGE_PIXBUF: GtkImageType = 1;
pub const GTK_IMAGE_STOCK: GtkImageType = 2;
pub const GTK_IMAGE_ICON_SET: GtkImageType = 3;
pub const GTK_IMAGE_ANIMATION: GtkImageType = 4;
pub const GTK_IMAGE_ICON_NAME: GtkImageType = 5;
pub const GTK_IMAGE_GICON: GtkImageType = 6;
pub const GTK_IMAGE_SURFACE: GtkImageType = 7;

pub type GtkInputPurpose = c_int;
pub const GTK_INPUT_PURPOSE_FREE_FORM: GtkInputPurpose = 0;
pub const GTK_INPUT_PURPOSE_ALPHA: GtkInputPurpose = 1;
pub const GTK_INPUT_PURPOSE_DIGITS: GtkInputPurpose = 2;
pub const GTK_INPUT_PURPOSE_NUMBER: GtkInputPurpose = 3;
pub const GTK_INPUT_PURPOSE_PHONE: GtkInputPurpose = 4;
pub const GTK_INPUT_PURPOSE_URL: GtkInputPurpose = 5;
pub const GTK_INPUT_PURPOSE_EMAIL: GtkInputPurpose = 6;
pub const GTK_INPUT_PURPOSE_NAME: GtkInputPurpose = 7;
pub const GTK_INPUT_PURPOSE_PASSWORD: GtkInputPurpose = 8;
pub const GTK_INPUT_PURPOSE_PIN: GtkInputPurpose = 9;
pub const GTK_INPUT_PURPOSE_TERMINAL: GtkInputPurpose = 10;

pub type GtkJustification = c_int;
pub const GTK_JUSTIFY_LEFT: GtkJustification = 0;
pub const GTK_JUSTIFY_RIGHT: GtkJustification = 1;
pub const GTK_JUSTIFY_CENTER: GtkJustification = 2;
pub const GTK_JUSTIFY_FILL: GtkJustification = 3;

pub type GtkLevelBarMode = c_int;
pub const GTK_LEVEL_BAR_MODE_CONTINUOUS: GtkLevelBarMode = 0;
pub const GTK_LEVEL_BAR_MODE_DISCRETE: GtkLevelBarMode = 1;

pub type GtkLicense = c_int;
pub const GTK_LICENSE_UNKNOWN: GtkLicense = 0;
pub const GTK_LICENSE_CUSTOM: GtkLicense = 1;
pub const GTK_LICENSE_GPL_2_0: GtkLicense = 2;
pub const GTK_LICENSE_GPL_3_0: GtkLicense = 3;
pub const GTK_LICENSE_LGPL_2_1: GtkLicense = 4;
pub const GTK_LICENSE_LGPL_3_0: GtkLicense = 5;
pub const GTK_LICENSE_BSD: GtkLicense = 6;
pub const GTK_LICENSE_MIT_X11: GtkLicense = 7;
pub const GTK_LICENSE_ARTISTIC: GtkLicense = 8;
pub const GTK_LICENSE_GPL_2_0_ONLY: GtkLicense = 9;
pub const GTK_LICENSE_GPL_3_0_ONLY: GtkLicense = 10;
pub const GTK_LICENSE_LGPL_2_1_ONLY: GtkLicense = 11;
pub const GTK_LICENSE_LGPL_3_0_ONLY: GtkLicense = 12;
pub const GTK_LICENSE_AGPL_3_0: GtkLicense = 13;
pub const GTK_LICENSE_AGPL_3_0_ONLY: GtkLicense = 14;
pub const GTK_LICENSE_BSD_3: GtkLicense = 15;
pub const GTK_LICENSE_APACHE_2_0: GtkLicense = 16;
pub const GTK_LICENSE_MPL_2_0: GtkLicense = 17;

pub type GtkMenuDirectionType = c_int;
pub const GTK_MENU_DIR_PARENT: GtkMenuDirectionType = 0;
pub const GTK_MENU_DIR_CHILD: GtkMenuDirectionType = 1;
pub const GTK_MENU_DIR_NEXT: GtkMenuDirectionType = 2;
pub const GTK_MENU_DIR_PREV: GtkMenuDirectionType = 3;

pub type GtkMessageType = c_int;
pub const GTK_MESSAGE_INFO: GtkMessageType = 0;
pub const GTK_MESSAGE_WARNING: GtkMessageType = 1;
pub const GTK_MESSAGE_QUESTION: GtkMessageType = 2;
pub const GTK_MESSAGE_ERROR: GtkMessageType = 3;
pub const GTK_MESSAGE_OTHER: GtkMessageType = 4;

pub type GtkMovementStep = c_int;
pub const GTK_MOVEMENT_LOGICAL_POSITIONS: GtkMovementStep = 0;
pub const GTK_MOVEMENT_VISUAL_POSITIONS: GtkMovementStep = 1;
pub const GTK_MOVEMENT_WORDS: GtkMovementStep = 2;
pub const GTK_MOVEMENT_DISPLAY_LINES: GtkMovementStep = 3;
pub const GTK_MOVEMENT_DISPLAY_LINE_ENDS: GtkMovementStep = 4;
pub const GTK_MOVEMENT_PARAGRAPHS: GtkMovementStep = 5;
pub const GTK_MOVEMENT_PARAGRAPH_ENDS: GtkMovementStep = 6;
pub const GTK_MOVEMENT_PAGES: GtkMovementStep = 7;
pub const GTK_MOVEMENT_BUFFER_ENDS: GtkMovementStep = 8;
pub const GTK_MOVEMENT_HORIZONTAL_PAGES: GtkMovementStep = 9;

pub type GtkNotebookTab = c_int;
pub const GTK_NOTEBOOK_TAB_FIRST: GtkNotebookTab = 0;
pub const GTK_NOTEBOOK_TAB_LAST: GtkNotebookTab = 1;

pub type GtkNumberUpLayout = c_int;
pub const GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_TOP_TO_BOTTOM: GtkNumberUpLayout = 0;
pub const GTK_NUMBER_UP_LAYOUT_LEFT_TO_RIGHT_BOTTOM_TO_TOP: GtkNumberUpLayout = 1;
pub const GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_TOP_TO_BOTTOM: GtkNumberUpLayout = 2;
pub const GTK_NUMBER_UP_LAYOUT_RIGHT_TO_LEFT_BOTTOM_TO_TOP: GtkNumberUpLayout = 3;
pub const GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_LEFT_TO_RIGHT: GtkNumberUpLayout = 4;
pub const GTK_NUMBER_UP_LAYOUT_TOP_TO_BOTTOM_RIGHT_TO_LEFT: GtkNumberUpLayout = 5;
pub const GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_LEFT_TO_RIGHT: GtkNumberUpLayout = 6;
pub const GTK_NUMBER_UP_LAYOUT_BOTTOM_TO_TOP_RIGHT_TO_LEFT: GtkNumberUpLayout = 7;

pub type GtkOrientation = c_int;
pub const GTK_ORIENTATION_HORIZONTAL: GtkOrientation = 0;
pub const GTK_ORIENTATION_VERTICAL: GtkOrientation = 1;

pub type GtkPackDirection = c_int;
pub const GTK_PACK_DIRECTION_LTR: GtkPackDirection = 0;
pub const GTK_PACK_DIRECTION_RTL: GtkPackDirection = 1;
pub const GTK_PACK_DIRECTION_TTB: GtkPackDirection = 2;
pub const GTK_PACK_DIRECTION_BTT: GtkPackDirection = 3;

pub type GtkPackType = c_int;
pub const GTK_PACK_START: GtkPackType = 0;
pub const GTK_PACK_END: GtkPackType = 1;

pub type GtkPadActionType = c_int;
pub const GTK_PAD_ACTION_BUTTON: GtkPadActionType = 0;
pub const GTK_PAD_ACTION_RING: GtkPadActionType = 1;
pub const GTK_PAD_ACTION_STRIP: GtkPadActionType = 2;

pub type GtkPageOrientation = c_int;
pub const GTK_PAGE_ORIENTATION_PORTRAIT: GtkPageOrientation = 0;
pub const GTK_PAGE_ORIENTATION_LANDSCAPE: GtkPageOrientation = 1;
pub const GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT: GtkPageOrientation = 2;
pub const GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE: GtkPageOrientation = 3;

pub type GtkPageSet = c_int;
pub const GTK_PAGE_SET_ALL: GtkPageSet = 0;
pub const GTK_PAGE_SET_EVEN: GtkPageSet = 1;
pub const GTK_PAGE_SET_ODD: GtkPageSet = 2;

pub type GtkPanDirection = c_int;
pub const GTK_PAN_DIRECTION_LEFT: GtkPanDirection = 0;
pub const GTK_PAN_DIRECTION_RIGHT: GtkPanDirection = 1;
pub const GTK_PAN_DIRECTION_UP: GtkPanDirection = 2;
pub const GTK_PAN_DIRECTION_DOWN: GtkPanDirection = 3;

pub type GtkPathPriorityType = c_int;
pub const GTK_PATH_PRIO_LOWEST: GtkPathPriorityType = 0;
pub const GTK_PATH_PRIO_GTK: GtkPathPriorityType = 4;
pub const GTK_PATH_PRIO_APPLICATION: GtkPathPriorityType = 8;
pub const GTK_PATH_PRIO_THEME: GtkPathPriorityType = 10;
pub const GTK_PATH_PRIO_RC: GtkPathPriorityType = 12;
pub const GTK_PATH_PRIO_HIGHEST: GtkPathPriorityType = 15;

pub type GtkPathType = c_int;
pub const GTK_PATH_WIDGET: GtkPathType = 0;
pub const GTK_PATH_WIDGET_CLASS: GtkPathType = 1;
pub const GTK_PATH_CLASS: GtkPathType = 2;

pub type GtkPolicyType = c_int;
pub const GTK_POLICY_ALWAYS: GtkPolicyType = 0;
pub const GTK_POLICY_AUTOMATIC: GtkPolicyType = 1;
pub const GTK_POLICY_NEVER: GtkPolicyType = 2;
pub const GTK_POLICY_EXTERNAL: GtkPolicyType = 3;

pub type GtkPopoverConstraint = c_int;
pub const GTK_POPOVER_CONSTRAINT_NONE: GtkPopoverConstraint = 0;
pub const GTK_POPOVER_CONSTRAINT_WINDOW: GtkPopoverConstraint = 1;

pub type GtkPositionType = c_int;
pub const GTK_POS_LEFT: GtkPositionType = 0;
pub const GTK_POS_RIGHT: GtkPositionType = 1;
pub const GTK_POS_TOP: GtkPositionType = 2;
pub const GTK_POS_BOTTOM: GtkPositionType = 3;

pub type GtkPrintDuplex = c_int;
pub const GTK_PRINT_DUPLEX_SIMPLEX: GtkPrintDuplex = 0;
pub const GTK_PRINT_DUPLEX_HORIZONTAL: GtkPrintDuplex = 1;
pub const GTK_PRINT_DUPLEX_VERTICAL: GtkPrintDuplex = 2;

pub type GtkPrintError = c_int;
pub const GTK_PRINT_ERROR_GENERAL: GtkPrintError = 0;
pub const GTK_PRINT_ERROR_INTERNAL_ERROR: GtkPrintError = 1;
pub const GTK_PRINT_ERROR_NOMEM: GtkPrintError = 2;
pub const GTK_PRINT_ERROR_INVALID_FILE: GtkPrintError = 3;

pub type GtkPrintOperationAction = c_int;
pub const GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG: GtkPrintOperationAction = 0;
pub const GTK_PRINT_OPERATION_ACTION_PRINT: GtkPrintOperationAction = 1;
pub const GTK_PRINT_OPERATION_ACTION_PREVIEW: GtkPrintOperationAction = 2;
pub const GTK_PRINT_OPERATION_ACTION_EXPORT: GtkPrintOperationAction = 3;

pub type GtkPrintOperationResult = c_int;
pub const GTK_PRINT_OPERATION_RESULT_ERROR: GtkPrintOperationResult = 0;
pub const GTK_PRINT_OPERATION_RESULT_APPLY: GtkPrintOperationResult = 1;
pub const GTK_PRINT_OPERATION_RESULT_CANCEL: GtkPrintOperationResult = 2;
pub const GTK_PRINT_OPERATION_RESULT_IN_PROGRESS: GtkPrintOperationResult = 3;

pub type GtkPrintPages = c_int;
pub const GTK_PRINT_PAGES_ALL: GtkPrintPages = 0;
pub const GTK_PRINT_PAGES_CURRENT: GtkPrintPages = 1;
pub const GTK_PRINT_PAGES_RANGES: GtkPrintPages = 2;
pub const GTK_PRINT_PAGES_SELECTION: GtkPrintPages = 3;

pub type GtkPrintQuality = c_int;
pub const GTK_PRINT_QUALITY_LOW: GtkPrintQuality = 0;
pub const GTK_PRINT_QUALITY_NORMAL: GtkPrintQuality = 1;
pub const GTK_PRINT_QUALITY_HIGH: GtkPrintQuality = 2;
pub const GTK_PRINT_QUALITY_DRAFT: GtkPrintQuality = 3;

pub type GtkPrintStatus = c_int;
pub const GTK_PRINT_STATUS_INITIAL: GtkPrintStatus = 0;
pub const GTK_PRINT_STATUS_PREPARING: GtkPrintStatus = 1;
pub const GTK_PRINT_STATUS_GENERATING_DATA: GtkPrintStatus = 2;
pub const GTK_PRINT_STATUS_SENDING_DATA: GtkPrintStatus = 3;
pub const GTK_PRINT_STATUS_PENDING: GtkPrintStatus = 4;
pub const GTK_PRINT_STATUS_PENDING_ISSUE: GtkPrintStatus = 5;
pub const GTK_PRINT_STATUS_PRINTING: GtkPrintStatus = 6;
pub const GTK_PRINT_STATUS_FINISHED: GtkPrintStatus = 7;
pub const GTK_PRINT_STATUS_FINISHED_ABORTED: GtkPrintStatus = 8;

pub type GtkPropagationPhase = c_int;
pub const GTK_PHASE_NONE: GtkPropagationPhase = 0;
pub const GTK_PHASE_CAPTURE: GtkPropagationPhase = 1;
pub const GTK_PHASE_BUBBLE: GtkPropagationPhase = 2;
pub const GTK_PHASE_TARGET: GtkPropagationPhase = 3;

pub type GtkRcTokenType = c_int;
pub const GTK_RC_TOKEN_INVALID: GtkRcTokenType = 270;
pub const GTK_RC_TOKEN_INCLUDE: GtkRcTokenType = 271;
pub const GTK_RC_TOKEN_NORMAL: GtkRcTokenType = 272;
pub const GTK_RC_TOKEN_ACTIVE: GtkRcTokenType = 273;
pub const GTK_RC_TOKEN_PRELIGHT: GtkRcTokenType = 274;
pub const GTK_RC_TOKEN_SELECTED: GtkRcTokenType = 275;
pub const GTK_RC_TOKEN_INSENSITIVE: GtkRcTokenType = 276;
pub const GTK_RC_TOKEN_FG: GtkRcTokenType = 277;
pub const GTK_RC_TOKEN_BG: GtkRcTokenType = 278;
pub const GTK_RC_TOKEN_TEXT: GtkRcTokenType = 279;
pub const GTK_RC_TOKEN_BASE: GtkRcTokenType = 280;
pub const GTK_RC_TOKEN_XTHICKNESS: GtkRcTokenType = 281;
pub const GTK_RC_TOKEN_YTHICKNESS: GtkRcTokenType = 282;
pub const GTK_RC_TOKEN_FONT: GtkRcTokenType = 283;
pub const GTK_RC_TOKEN_FONTSET: GtkRcTokenType = 284;
pub const GTK_RC_TOKEN_FONT_NAME: GtkRcTokenType = 285;
pub const GTK_RC_TOKEN_BG_PIXMAP: GtkRcTokenType = 286;
pub const GTK_RC_TOKEN_PIXMAP_PATH: GtkRcTokenType = 287;
pub const GTK_RC_TOKEN_STYLE: GtkRcTokenType = 288;
pub const GTK_RC_TOKEN_BINDING: GtkRcTokenType = 289;
pub const GTK_RC_TOKEN_BIND: GtkRcTokenType = 290;
pub const GTK_RC_TOKEN_WIDGET: GtkRcTokenType = 291;
pub const GTK_RC_TOKEN_WIDGET_CLASS: GtkRcTokenType = 292;
pub const GTK_RC_TOKEN_CLASS: GtkRcTokenType = 293;
pub const GTK_RC_TOKEN_LOWEST: GtkRcTokenType = 294;
pub const GTK_RC_TOKEN_GTK: GtkRcTokenType = 295;
pub const GTK_RC_TOKEN_APPLICATION: GtkRcTokenType = 296;
pub const GTK_RC_TOKEN_THEME: GtkRcTokenType = 297;
pub const GTK_RC_TOKEN_RC: GtkRcTokenType = 298;
pub const GTK_RC_TOKEN_HIGHEST: GtkRcTokenType = 299;
pub const GTK_RC_TOKEN_ENGINE: GtkRcTokenType = 300;
pub const GTK_RC_TOKEN_MODULE_PATH: GtkRcTokenType = 301;
pub const GTK_RC_TOKEN_IM_MODULE_PATH: GtkRcTokenType = 302;
pub const GTK_RC_TOKEN_IM_MODULE_FILE: GtkRcTokenType = 303;
pub const GTK_RC_TOKEN_STOCK: GtkRcTokenType = 304;
pub const GTK_RC_TOKEN_LTR: GtkRcTokenType = 305;
pub const GTK_RC_TOKEN_RTL: GtkRcTokenType = 306;
pub const GTK_RC_TOKEN_COLOR: GtkRcTokenType = 307;
pub const GTK_RC_TOKEN_UNBIND: GtkRcTokenType = 308;
pub const GTK_RC_TOKEN_LAST: GtkRcTokenType = 309;

pub type GtkRecentChooserError = c_int;
pub const GTK_RECENT_CHOOSER_ERROR_NOT_FOUND: GtkRecentChooserError = 0;
pub const GTK_RECENT_CHOOSER_ERROR_INVALID_URI: GtkRecentChooserError = 1;

pub type GtkRecentManagerError = c_int;
pub const GTK_RECENT_MANAGER_ERROR_NOT_FOUND: GtkRecentManagerError = 0;
pub const GTK_RECENT_MANAGER_ERROR_INVALID_URI: GtkRecentManagerError = 1;
pub const GTK_RECENT_MANAGER_ERROR_INVALID_ENCODING: GtkRecentManagerError = 2;
pub const GTK_RECENT_MANAGER_ERROR_NOT_REGISTERED: GtkRecentManagerError = 3;
pub const GTK_RECENT_MANAGER_ERROR_READ: GtkRecentManagerError = 4;
pub const GTK_RECENT_MANAGER_ERROR_WRITE: GtkRecentManagerError = 5;
pub const GTK_RECENT_MANAGER_ERROR_UNKNOWN: GtkRecentManagerError = 6;

pub type GtkRecentSortType = c_int;
pub const GTK_RECENT_SORT_NONE: GtkRecentSortType = 0;
pub const GTK_RECENT_SORT_MRU: GtkRecentSortType = 1;
pub const GTK_RECENT_SORT_LRU: GtkRecentSortType = 2;
pub const GTK_RECENT_SORT_CUSTOM: GtkRecentSortType = 3;

pub type GtkReliefStyle = c_int;
pub const GTK_RELIEF_NORMAL: GtkReliefStyle = 0;
pub const GTK_RELIEF_HALF: GtkReliefStyle = 1;
pub const GTK_RELIEF_NONE: GtkReliefStyle = 2;

pub type GtkResizeMode = c_int;
pub const GTK_RESIZE_PARENT: GtkResizeMode = 0;
pub const GTK_RESIZE_QUEUE: GtkResizeMode = 1;
pub const GTK_RESIZE_IMMEDIATE: GtkResizeMode = 2;

pub type GtkResponseType = c_int;
pub const GTK_RESPONSE_NONE: GtkResponseType = -1;
pub const GTK_RESPONSE_REJECT: GtkResponseType = -2;
pub const GTK_RESPONSE_ACCEPT: GtkResponseType = -3;
pub const GTK_RESPONSE_DELETE_EVENT: GtkResponseType = -4;
pub const GTK_RESPONSE_OK: GtkResponseType = -5;
pub const GTK_RESPONSE_CANCEL: GtkResponseType = -6;
pub const GTK_RESPONSE_CLOSE: GtkResponseType = -7;
pub const GTK_RESPONSE_YES: GtkResponseType = -8;
pub const GTK_RESPONSE_NO: GtkResponseType = -9;
pub const GTK_RESPONSE_APPLY: GtkResponseType = -10;
pub const GTK_RESPONSE_HELP: GtkResponseType = -11;

pub type GtkRevealerTransitionType = c_int;
pub const GTK_REVEALER_TRANSITION_TYPE_NONE: GtkRevealerTransitionType = 0;
pub const GTK_REVEALER_TRANSITION_TYPE_CROSSFADE: GtkRevealerTransitionType = 1;
pub const GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT: GtkRevealerTransitionType = 2;
pub const GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT: GtkRevealerTransitionType = 3;
pub const GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP: GtkRevealerTransitionType = 4;
pub const GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN: GtkRevealerTransitionType = 5;

pub type GtkScrollStep = c_int;
pub const GTK_SCROLL_STEPS: GtkScrollStep = 0;
pub const GTK_SCROLL_PAGES: GtkScrollStep = 1;
pub const GTK_SCROLL_ENDS: GtkScrollStep = 2;
pub const GTK_SCROLL_HORIZONTAL_STEPS: GtkScrollStep = 3;
pub const GTK_SCROLL_HORIZONTAL_PAGES: GtkScrollStep = 4;
pub const GTK_SCROLL_HORIZONTAL_ENDS: GtkScrollStep = 5;

pub type GtkScrollType = c_int;
pub const GTK_SCROLL_NONE: GtkScrollType = 0;
pub const GTK_SCROLL_JUMP: GtkScrollType = 1;
pub const GTK_SCROLL_STEP_BACKWARD: GtkScrollType = 2;
pub const GTK_SCROLL_STEP_FORWARD: GtkScrollType = 3;
pub const GTK_SCROLL_PAGE_BACKWARD: GtkScrollType = 4;
pub const GTK_SCROLL_PAGE_FORWARD: GtkScrollType = 5;
pub const GTK_SCROLL_STEP_UP: GtkScrollType = 6;
pub const GTK_SCROLL_STEP_DOWN: GtkScrollType = 7;
pub const GTK_SCROLL_PAGE_UP: GtkScrollType = 8;
pub const GTK_SCROLL_PAGE_DOWN: GtkScrollType = 9;
pub const GTK_SCROLL_STEP_LEFT: GtkScrollType = 10;
pub const GTK_SCROLL_STEP_RIGHT: GtkScrollType = 11;
pub const GTK_SCROLL_PAGE_LEFT: GtkScrollType = 12;
pub const GTK_SCROLL_PAGE_RIGHT: GtkScrollType = 13;
pub const GTK_SCROLL_START: GtkScrollType = 14;
pub const GTK_SCROLL_END: GtkScrollType = 15;

pub type GtkScrollablePolicy = c_int;
pub const GTK_SCROLL_MINIMUM: GtkScrollablePolicy = 0;
pub const GTK_SCROLL_NATURAL: GtkScrollablePolicy = 1;

pub type GtkSelectionMode = c_int;
pub const GTK_SELECTION_NONE: GtkSelectionMode = 0;
pub const GTK_SELECTION_SINGLE: GtkSelectionMode = 1;
pub const GTK_SELECTION_BROWSE: GtkSelectionMode = 2;
pub const GTK_SELECTION_MULTIPLE: GtkSelectionMode = 3;

pub type GtkSensitivityType = c_int;
pub const GTK_SENSITIVITY_AUTO: GtkSensitivityType = 0;
pub const GTK_SENSITIVITY_ON: GtkSensitivityType = 1;
pub const GTK_SENSITIVITY_OFF: GtkSensitivityType = 2;

pub type GtkShadowType = c_int;
pub const GTK_SHADOW_NONE: GtkShadowType = 0;
pub const GTK_SHADOW_IN: GtkShadowType = 1;
pub const GTK_SHADOW_OUT: GtkShadowType = 2;
pub const GTK_SHADOW_ETCHED_IN: GtkShadowType = 3;
pub const GTK_SHADOW_ETCHED_OUT: GtkShadowType = 4;

pub type GtkShortcutType = c_int;
pub const GTK_SHORTCUT_ACCELERATOR: GtkShortcutType = 0;
pub const GTK_SHORTCUT_GESTURE_PINCH: GtkShortcutType = 1;
pub const GTK_SHORTCUT_GESTURE_STRETCH: GtkShortcutType = 2;
pub const GTK_SHORTCUT_GESTURE_ROTATE_CLOCKWISE: GtkShortcutType = 3;
pub const GTK_SHORTCUT_GESTURE_ROTATE_COUNTERCLOCKWISE: GtkShortcutType = 4;
pub const GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_LEFT: GtkShortcutType = 5;
pub const GTK_SHORTCUT_GESTURE_TWO_FINGER_SWIPE_RIGHT: GtkShortcutType = 6;
pub const GTK_SHORTCUT_GESTURE: GtkShortcutType = 7;

pub type GtkSizeGroupMode = c_int;
pub const GTK_SIZE_GROUP_NONE: GtkSizeGroupMode = 0;
pub const GTK_SIZE_GROUP_HORIZONTAL: GtkSizeGroupMode = 1;
pub const GTK_SIZE_GROUP_VERTICAL: GtkSizeGroupMode = 2;
pub const GTK_SIZE_GROUP_BOTH: GtkSizeGroupMode = 3;

pub type GtkSizeRequestMode = c_int;
pub const GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH: GtkSizeRequestMode = 0;
pub const GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT: GtkSizeRequestMode = 1;
pub const GTK_SIZE_REQUEST_CONSTANT_SIZE: GtkSizeRequestMode = 2;

pub type GtkSortType = c_int;
pub const GTK_SORT_ASCENDING: GtkSortType = 0;
pub const GTK_SORT_DESCENDING: GtkSortType = 1;

pub type GtkSpinButtonUpdatePolicy = c_int;
pub const GTK_UPDATE_ALWAYS: GtkSpinButtonUpdatePolicy = 0;
pub const GTK_UPDATE_IF_VALID: GtkSpinButtonUpdatePolicy = 1;

pub type GtkSpinType = c_int;
pub const GTK_SPIN_STEP_FORWARD: GtkSpinType = 0;
pub const GTK_SPIN_STEP_BACKWARD: GtkSpinType = 1;
pub const GTK_SPIN_PAGE_FORWARD: GtkSpinType = 2;
pub const GTK_SPIN_PAGE_BACKWARD: GtkSpinType = 3;
pub const GTK_SPIN_HOME: GtkSpinType = 4;
pub const GTK_SPIN_END: GtkSpinType = 5;
pub const GTK_SPIN_USER_DEFINED: GtkSpinType = 6;

pub type GtkStackTransitionType = c_int;
pub const GTK_STACK_TRANSITION_TYPE_NONE: GtkStackTransitionType = 0;
pub const GTK_STACK_TRANSITION_TYPE_CROSSFADE: GtkStackTransitionType = 1;
pub const GTK_STACK_TRANSITION_TYPE_SLIDE_RIGHT: GtkStackTransitionType = 2;
pub const GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT: GtkStackTransitionType = 3;
pub const GTK_STACK_TRANSITION_TYPE_SLIDE_UP: GtkStackTransitionType = 4;
pub const GTK_STACK_TRANSITION_TYPE_SLIDE_DOWN: GtkStackTransitionType = 5;
pub const GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT: GtkStackTransitionType = 6;
pub const GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN: GtkStackTransitionType = 7;
pub const GTK_STACK_TRANSITION_TYPE_OVER_UP: GtkStackTransitionType = 8;
pub const GTK_STACK_TRANSITION_TYPE_OVER_DOWN: GtkStackTransitionType = 9;
pub const GTK_STACK_TRANSITION_TYPE_OVER_LEFT: GtkStackTransitionType = 10;
pub const GTK_STACK_TRANSITION_TYPE_OVER_RIGHT: GtkStackTransitionType = 11;
pub const GTK_STACK_TRANSITION_TYPE_UNDER_UP: GtkStackTransitionType = 12;
pub const GTK_STACK_TRANSITION_TYPE_UNDER_DOWN: GtkStackTransitionType = 13;
pub const GTK_STACK_TRANSITION_TYPE_UNDER_LEFT: GtkStackTransitionType = 14;
pub const GTK_STACK_TRANSITION_TYPE_UNDER_RIGHT: GtkStackTransitionType = 15;
pub const GTK_STACK_TRANSITION_TYPE_OVER_UP_DOWN: GtkStackTransitionType = 16;
pub const GTK_STACK_TRANSITION_TYPE_OVER_DOWN_UP: GtkStackTransitionType = 17;
pub const GTK_STACK_TRANSITION_TYPE_OVER_LEFT_RIGHT: GtkStackTransitionType = 18;
pub const GTK_STACK_TRANSITION_TYPE_OVER_RIGHT_LEFT: GtkStackTransitionType = 19;

pub type GtkStateType = c_int;
pub const GTK_STATE_NORMAL: GtkStateType = 0;
pub const GTK_STATE_ACTIVE: GtkStateType = 1;
pub const GTK_STATE_PRELIGHT: GtkStateType = 2;
pub const GTK_STATE_SELECTED: GtkStateType = 3;
pub const GTK_STATE_INSENSITIVE: GtkStateType = 4;
pub const GTK_STATE_INCONSISTENT: GtkStateType = 5;
pub const GTK_STATE_FOCUSED: GtkStateType = 6;

pub type GtkTextBufferTargetInfo = c_int;
pub const GTK_TEXT_BUFFER_TARGET_INFO_BUFFER_CONTENTS: GtkTextBufferTargetInfo = -1;
pub const GTK_TEXT_BUFFER_TARGET_INFO_RICH_TEXT: GtkTextBufferTargetInfo = -2;
pub const GTK_TEXT_BUFFER_TARGET_INFO_TEXT: GtkTextBufferTargetInfo = -3;

pub type GtkTextDirection = c_int;
pub const GTK_TEXT_DIR_NONE: GtkTextDirection = 0;
pub const GTK_TEXT_DIR_LTR: GtkTextDirection = 1;
pub const GTK_TEXT_DIR_RTL: GtkTextDirection = 2;

pub type GtkTextExtendSelection = c_int;
pub const GTK_TEXT_EXTEND_SELECTION_WORD: GtkTextExtendSelection = 0;
pub const GTK_TEXT_EXTEND_SELECTION_LINE: GtkTextExtendSelection = 1;

pub type GtkTextViewLayer = c_int;
pub const GTK_TEXT_VIEW_LAYER_BELOW: GtkTextViewLayer = 0;
pub const GTK_TEXT_VIEW_LAYER_ABOVE: GtkTextViewLayer = 1;
pub const GTK_TEXT_VIEW_LAYER_BELOW_TEXT: GtkTextViewLayer = 2;
pub const GTK_TEXT_VIEW_LAYER_ABOVE_TEXT: GtkTextViewLayer = 3;

pub type GtkTextWindowType = c_int;
pub const GTK_TEXT_WINDOW_PRIVATE: GtkTextWindowType = 0;
pub const GTK_TEXT_WINDOW_WIDGET: GtkTextWindowType = 1;
pub const GTK_TEXT_WINDOW_TEXT: GtkTextWindowType = 2;
pub const GTK_TEXT_WINDOW_LEFT: GtkTextWindowType = 3;
pub const GTK_TEXT_WINDOW_RIGHT: GtkTextWindowType = 4;
pub const GTK_TEXT_WINDOW_TOP: GtkTextWindowType = 5;
pub const GTK_TEXT_WINDOW_BOTTOM: GtkTextWindowType = 6;

pub type GtkToolbarSpaceStyle = c_int;
pub const GTK_TOOLBAR_SPACE_EMPTY: GtkToolbarSpaceStyle = 0;
pub const GTK_TOOLBAR_SPACE_LINE: GtkToolbarSpaceStyle = 1;

pub type GtkToolbarStyle = c_int;
pub const GTK_TOOLBAR_ICONS: GtkToolbarStyle = 0;
pub const GTK_TOOLBAR_TEXT: GtkToolbarStyle = 1;
pub const GTK_TOOLBAR_BOTH: GtkToolbarStyle = 2;
pub const GTK_TOOLBAR_BOTH_HORIZ: GtkToolbarStyle = 3;

pub type GtkTreeViewColumnSizing = c_int;
pub const GTK_TREE_VIEW_COLUMN_GROW_ONLY: GtkTreeViewColumnSizing = 0;
pub const GTK_TREE_VIEW_COLUMN_AUTOSIZE: GtkTreeViewColumnSizing = 1;
pub const GTK_TREE_VIEW_COLUMN_FIXED: GtkTreeViewColumnSizing = 2;

pub type GtkTreeViewDropPosition = c_int;
pub const GTK_TREE_VIEW_DROP_BEFORE: GtkTreeViewDropPosition = 0;
pub const GTK_TREE_VIEW_DROP_AFTER: GtkTreeViewDropPosition = 1;
pub const GTK_TREE_VIEW_DROP_INTO_OR_BEFORE: GtkTreeViewDropPosition = 2;
pub const GTK_TREE_VIEW_DROP_INTO_OR_AFTER: GtkTreeViewDropPosition = 3;

pub type GtkTreeViewGridLines = c_int;
pub const GTK_TREE_VIEW_GRID_LINES_NONE: GtkTreeViewGridLines = 0;
pub const GTK_TREE_VIEW_GRID_LINES_HORIZONTAL: GtkTreeViewGridLines = 1;
pub const GTK_TREE_VIEW_GRID_LINES_VERTICAL: GtkTreeViewGridLines = 2;
pub const GTK_TREE_VIEW_GRID_LINES_BOTH: GtkTreeViewGridLines = 3;

pub type GtkUnit = c_int;
pub const GTK_UNIT_NONE: GtkUnit = 0;
pub const GTK_UNIT_POINTS: GtkUnit = 1;
pub const GTK_UNIT_INCH: GtkUnit = 2;
pub const GTK_UNIT_MM: GtkUnit = 3;

pub type GtkWidgetHelpType = c_int;
pub const GTK_WIDGET_HELP_TOOLTIP: GtkWidgetHelpType = 0;
pub const GTK_WIDGET_HELP_WHATS_THIS: GtkWidgetHelpType = 1;

pub type GtkWindowPosition = c_int;
pub const GTK_WIN_POS_NONE: GtkWindowPosition = 0;
pub const GTK_WIN_POS_CENTER: GtkWindowPosition = 1;
pub const GTK_WIN_POS_MOUSE: GtkWindowPosition = 2;
pub const GTK_WIN_POS_CENTER_ALWAYS: GtkWindowPosition = 3;
pub const GTK_WIN_POS_CENTER_ON_PARENT: GtkWindowPosition = 4;

pub type GtkWindowType = c_int;
pub const GTK_WINDOW_TOPLEVEL: GtkWindowType = 0;
pub const GTK_WINDOW_POPUP: GtkWindowType = 1;

pub type GtkWrapMode = c_int;
pub const GTK_WRAP_NONE: GtkWrapMode = 0;
pub const GTK_WRAP_CHAR: GtkWrapMode = 1;
pub const GTK_WRAP_WORD: GtkWrapMode = 2;
pub const GTK_WRAP_WORD_CHAR: GtkWrapMode = 3;

// Constants
pub const GTK_INPUT_ERROR: c_int = -1;
pub const GTK_LEVEL_BAR_OFFSET_FULL: &[u8] = b"full\0";
pub const GTK_LEVEL_BAR_OFFSET_HIGH: &[u8] = b"high\0";
pub const GTK_LEVEL_BAR_OFFSET_LOW: &[u8] = b"low\0";
pub const GTK_MAX_COMPOSE_LEN: c_int = 7;
pub const GTK_PAPER_NAME_A3: &[u8] = b"iso_a3\0";
pub const GTK_PAPER_NAME_A4: &[u8] = b"iso_a4\0";
pub const GTK_PAPER_NAME_A5: &[u8] = b"iso_a5\0";
pub const GTK_PAPER_NAME_B5: &[u8] = b"iso_b5\0";
pub const GTK_PAPER_NAME_EXECUTIVE: &[u8] = b"na_executive\0";
pub const GTK_PAPER_NAME_LEGAL: &[u8] = b"na_legal\0";
pub const GTK_PAPER_NAME_LETTER: &[u8] = b"na_letter\0";
pub const GTK_PATH_PRIO_MASK: c_int = 15;
pub const GTK_PRINT_SETTINGS_COLLATE: &[u8] = b"collate\0";
pub const GTK_PRINT_SETTINGS_DEFAULT_SOURCE: &[u8] = b"default-source\0";
pub const GTK_PRINT_SETTINGS_DITHER: &[u8] = b"dither\0";
pub const GTK_PRINT_SETTINGS_DUPLEX: &[u8] = b"duplex\0";
pub const GTK_PRINT_SETTINGS_FINISHINGS: &[u8] = b"finishings\0";
pub const GTK_PRINT_SETTINGS_MEDIA_TYPE: &[u8] = b"media-type\0";
pub const GTK_PRINT_SETTINGS_NUMBER_UP: &[u8] = b"number-up\0";
pub const GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT: &[u8] = b"number-up-layout\0";
pub const GTK_PRINT_SETTINGS_N_COPIES: &[u8] = b"n-copies\0";
pub const GTK_PRINT_SETTINGS_ORIENTATION: &[u8] = b"orientation\0";
pub const GTK_PRINT_SETTINGS_OUTPUT_BASENAME: &[u8] = b"output-basename\0";
pub const GTK_PRINT_SETTINGS_OUTPUT_BIN: &[u8] = b"output-bin\0";
pub const GTK_PRINT_SETTINGS_OUTPUT_DIR: &[u8] = b"output-dir\0";
pub const GTK_PRINT_SETTINGS_OUTPUT_FILE_FORMAT: &[u8] = b"output-file-format\0";
pub const GTK_PRINT_SETTINGS_OUTPUT_URI: &[u8] = b"output-uri\0";
pub const GTK_PRINT_SETTINGS_PAGE_RANGES: &[u8] = b"page-ranges\0";
pub const GTK_PRINT_SETTINGS_PAGE_SET: &[u8] = b"page-set\0";
pub const GTK_PRINT_SETTINGS_PAPER_FORMAT: &[u8] = b"paper-format\0";
pub const GTK_PRINT_SETTINGS_PAPER_HEIGHT: &[u8] = b"paper-height\0";
pub const GTK_PRINT_SETTINGS_PAPER_WIDTH: &[u8] = b"paper-width\0";
pub const GTK_PRINT_SETTINGS_PRINTER: &[u8] = b"printer\0";
pub const GTK_PRINT_SETTINGS_PRINTER_LPI: &[u8] = b"printer-lpi\0";
pub const GTK_PRINT_SETTINGS_PRINT_PAGES: &[u8] = b"print-pages\0";
pub const GTK_PRINT_SETTINGS_QUALITY: &[u8] = b"quality\0";
pub const GTK_PRINT_SETTINGS_RESOLUTION: &[u8] = b"resolution\0";
pub const GTK_PRINT_SETTINGS_RESOLUTION_X: &[u8] = b"resolution-x\0";
pub const GTK_PRINT_SETTINGS_RESOLUTION_Y: &[u8] = b"resolution-y\0";
pub const GTK_PRINT_SETTINGS_REVERSE: &[u8] = b"reverse\0";
pub const GTK_PRINT_SETTINGS_SCALE: &[u8] = b"scale\0";
pub const GTK_PRINT_SETTINGS_USE_COLOR: &[u8] = b"use-color\0";
pub const GTK_PRINT_SETTINGS_WIN32_DRIVER_EXTRA: &[u8] = b"win32-driver-extra\0";
pub const GTK_PRINT_SETTINGS_WIN32_DRIVER_VERSION: &[u8] = b"win32-driver-version\0";
pub const GTK_PRIORITY_RESIZE: c_int = 110;
pub const GTK_STOCK_ABOUT: &[u8] = b"gtk-about\0";
pub const GTK_STOCK_ADD: &[u8] = b"gtk-add\0";
pub const GTK_STOCK_APPLY: &[u8] = b"gtk-apply\0";
pub const GTK_STOCK_BOLD: &[u8] = b"gtk-bold\0";
pub const GTK_STOCK_CANCEL: &[u8] = b"gtk-cancel\0";
pub const GTK_STOCK_CAPS_LOCK_WARNING: &[u8] = b"gtk-caps-lock-warning\0";
pub const GTK_STOCK_CDROM: &[u8] = b"gtk-cdrom\0";
pub const GTK_STOCK_CLEAR: &[u8] = b"gtk-clear\0";
pub const GTK_STOCK_CLOSE: &[u8] = b"gtk-close\0";
pub const GTK_STOCK_COLOR_PICKER: &[u8] = b"gtk-color-picker\0";
pub const GTK_STOCK_CONNECT: &[u8] = b"gtk-connect\0";
pub const GTK_STOCK_CONVERT: &[u8] = b"gtk-convert\0";
pub const GTK_STOCK_COPY: &[u8] = b"gtk-copy\0";
pub const GTK_STOCK_CUT: &[u8] = b"gtk-cut\0";
pub const GTK_STOCK_DELETE: &[u8] = b"gtk-delete\0";
pub const GTK_STOCK_DIALOG_AUTHENTICATION: &[u8] = b"gtk-dialog-authentication\0";
pub const GTK_STOCK_DIALOG_ERROR: &[u8] = b"gtk-dialog-error\0";
pub const GTK_STOCK_DIALOG_INFO: &[u8] = b"gtk-dialog-info\0";
pub const GTK_STOCK_DIALOG_QUESTION: &[u8] = b"gtk-dialog-question\0";
pub const GTK_STOCK_DIALOG_WARNING: &[u8] = b"gtk-dialog-warning\0";
pub const GTK_STOCK_DIRECTORY: &[u8] = b"gtk-directory\0";
pub const GTK_STOCK_DISCARD: &[u8] = b"gtk-discard\0";
pub const GTK_STOCK_DISCONNECT: &[u8] = b"gtk-disconnect\0";
pub const GTK_STOCK_DND: &[u8] = b"gtk-dnd\0";
pub const GTK_STOCK_DND_MULTIPLE: &[u8] = b"gtk-dnd-multiple\0";
pub const GTK_STOCK_EDIT: &[u8] = b"gtk-edit\0";
pub const GTK_STOCK_EXECUTE: &[u8] = b"gtk-execute\0";
pub const GTK_STOCK_FILE: &[u8] = b"gtk-file\0";
pub const GTK_STOCK_FIND: &[u8] = b"gtk-find\0";
pub const GTK_STOCK_FIND_AND_REPLACE: &[u8] = b"gtk-find-and-replace\0";
pub const GTK_STOCK_FLOPPY: &[u8] = b"gtk-floppy\0";
pub const GTK_STOCK_FULLSCREEN: &[u8] = b"gtk-fullscreen\0";
pub const GTK_STOCK_GOTO_BOTTOM: &[u8] = b"gtk-goto-bottom\0";
pub const GTK_STOCK_GOTO_FIRST: &[u8] = b"gtk-goto-first\0";
pub const GTK_STOCK_GOTO_LAST: &[u8] = b"gtk-goto-last\0";
pub const GTK_STOCK_GOTO_TOP: &[u8] = b"gtk-goto-top\0";
pub const GTK_STOCK_GO_BACK: &[u8] = b"gtk-go-back\0";
pub const GTK_STOCK_GO_DOWN: &[u8] = b"gtk-go-down\0";
pub const GTK_STOCK_GO_FORWARD: &[u8] = b"gtk-go-forward\0";
pub const GTK_STOCK_GO_UP: &[u8] = b"gtk-go-up\0";
pub const GTK_STOCK_HARDDISK: &[u8] = b"gtk-harddisk\0";
pub const GTK_STOCK_HELP: &[u8] = b"gtk-help\0";
pub const GTK_STOCK_HOME: &[u8] = b"gtk-home\0";
pub const GTK_STOCK_INDENT: &[u8] = b"gtk-indent\0";
pub const GTK_STOCK_INDEX: &[u8] = b"gtk-index\0";
pub const GTK_STOCK_INFO: &[u8] = b"gtk-info\0";
pub const GTK_STOCK_ITALIC: &[u8] = b"gtk-italic\0";
pub const GTK_STOCK_JUMP_TO: &[u8] = b"gtk-jump-to\0";
pub const GTK_STOCK_JUSTIFY_CENTER: &[u8] = b"gtk-justify-center\0";
pub const GTK_STOCK_JUSTIFY_FILL: &[u8] = b"gtk-justify-fill\0";
pub const GTK_STOCK_JUSTIFY_LEFT: &[u8] = b"gtk-justify-left\0";
pub const GTK_STOCK_JUSTIFY_RIGHT: &[u8] = b"gtk-justify-right\0";
pub const GTK_STOCK_LEAVE_FULLSCREEN: &[u8] = b"gtk-leave-fullscreen\0";
pub const GTK_STOCK_MEDIA_FORWARD: &[u8] = b"gtk-media-forward\0";
pub const GTK_STOCK_MEDIA_NEXT: &[u8] = b"gtk-media-next\0";
pub const GTK_STOCK_MEDIA_PAUSE: &[u8] = b"gtk-media-pause\0";
pub const GTK_STOCK_MEDIA_PLAY: &[u8] = b"gtk-media-play\0";
pub const GTK_STOCK_MEDIA_PREVIOUS: &[u8] = b"gtk-media-previous\0";
pub const GTK_STOCK_MEDIA_RECORD: &[u8] = b"gtk-media-record\0";
pub const GTK_STOCK_MEDIA_REWIND: &[u8] = b"gtk-media-rewind\0";
pub const GTK_STOCK_MEDIA_STOP: &[u8] = b"gtk-media-stop\0";
pub const GTK_STOCK_MISSING_IMAGE: &[u8] = b"gtk-missing-image\0";
pub const GTK_STOCK_NETWORK: &[u8] = b"gtk-network\0";
pub const GTK_STOCK_NEW: &[u8] = b"gtk-new\0";
pub const GTK_STOCK_NO: &[u8] = b"gtk-no\0";
pub const GTK_STOCK_OK: &[u8] = b"gtk-ok\0";
pub const GTK_STOCK_OPEN: &[u8] = b"gtk-open\0";
pub const GTK_STOCK_ORIENTATION_LANDSCAPE: &[u8] = b"gtk-orientation-landscape\0";
pub const GTK_STOCK_ORIENTATION_PORTRAIT: &[u8] = b"gtk-orientation-portrait\0";
pub const GTK_STOCK_ORIENTATION_REVERSE_LANDSCAPE: &[u8] = b"gtk-orientation-reverse-landscape\0";
pub const GTK_STOCK_ORIENTATION_REVERSE_PORTRAIT: &[u8] = b"gtk-orientation-reverse-portrait\0";
pub const GTK_STOCK_PAGE_SETUP: &[u8] = b"gtk-page-setup\0";
pub const GTK_STOCK_PASTE: &[u8] = b"gtk-paste\0";
pub const GTK_STOCK_PREFERENCES: &[u8] = b"gtk-preferences\0";
pub const GTK_STOCK_PRINT: &[u8] = b"gtk-print\0";
pub const GTK_STOCK_PRINT_ERROR: &[u8] = b"gtk-print-error\0";
pub const GTK_STOCK_PRINT_PAUSED: &[u8] = b"gtk-print-paused\0";
pub const GTK_STOCK_PRINT_PREVIEW: &[u8] = b"gtk-print-preview\0";
pub const GTK_STOCK_PRINT_REPORT: &[u8] = b"gtk-print-report\0";
pub const GTK_STOCK_PRINT_WARNING: &[u8] = b"gtk-print-warning\0";
pub const GTK_STOCK_PROPERTIES: &[u8] = b"gtk-properties\0";
pub const GTK_STOCK_QUIT: &[u8] = b"gtk-quit\0";
pub const GTK_STOCK_REDO: &[u8] = b"gtk-redo\0";
pub const GTK_STOCK_REFRESH: &[u8] = b"gtk-refresh\0";
pub const GTK_STOCK_REMOVE: &[u8] = b"gtk-remove\0";
pub const GTK_STOCK_REVERT_TO_SAVED: &[u8] = b"gtk-revert-to-saved\0";
pub const GTK_STOCK_SAVE: &[u8] = b"gtk-save\0";
pub const GTK_STOCK_SAVE_AS: &[u8] = b"gtk-save-as\0";
pub const GTK_STOCK_SELECT_ALL: &[u8] = b"gtk-select-all\0";
pub const GTK_STOCK_SELECT_COLOR: &[u8] = b"gtk-select-color\0";
pub const GTK_STOCK_SELECT_FONT: &[u8] = b"gtk-select-font\0";
pub const GTK_STOCK_SORT_ASCENDING: &[u8] = b"gtk-sort-ascending\0";
pub const GTK_STOCK_SORT_DESCENDING: &[u8] = b"gtk-sort-descending\0";
pub const GTK_STOCK_SPELL_CHECK: &[u8] = b"gtk-spell-check\0";
pub const GTK_STOCK_STOP: &[u8] = b"gtk-stop\0";
pub const GTK_STOCK_STRIKETHROUGH: &[u8] = b"gtk-strikethrough\0";
pub const GTK_STOCK_UNDELETE: &[u8] = b"gtk-undelete\0";
pub const GTK_STOCK_UNDERLINE: &[u8] = b"gtk-underline\0";
pub const GTK_STOCK_UNDO: &[u8] = b"gtk-undo\0";
pub const GTK_STOCK_UNINDENT: &[u8] = b"gtk-unindent\0";
pub const GTK_STOCK_YES: &[u8] = b"gtk-yes\0";
pub const GTK_STOCK_ZOOM_100: &[u8] = b"gtk-zoom-100\0";
pub const GTK_STOCK_ZOOM_FIT: &[u8] = b"gtk-zoom-fit\0";
pub const GTK_STOCK_ZOOM_IN: &[u8] = b"gtk-zoom-in\0";
pub const GTK_STOCK_ZOOM_OUT: &[u8] = b"gtk-zoom-out\0";
pub const GTK_STYLE_CLASS_ACCELERATOR: &[u8] = b"accelerator\0";
pub const GTK_STYLE_CLASS_ARROW: &[u8] = b"arrow\0";
pub const GTK_STYLE_CLASS_BACKGROUND: &[u8] = b"background\0";
pub const GTK_STYLE_CLASS_BOTTOM: &[u8] = b"bottom\0";
pub const GTK_STYLE_CLASS_BUTTON: &[u8] = b"button\0";
pub const GTK_STYLE_CLASS_CALENDAR: &[u8] = b"calendar\0";
pub const GTK_STYLE_CLASS_CELL: &[u8] = b"cell\0";
pub const GTK_STYLE_CLASS_CHECK: &[u8] = b"check\0";
pub const GTK_STYLE_CLASS_COMBOBOX_ENTRY: &[u8] = b"combobox-entry\0";
pub const GTK_STYLE_CLASS_CONTEXT_MENU: &[u8] = b"context-menu\0";
pub const GTK_STYLE_CLASS_CSD: &[u8] = b"csd\0";
pub const GTK_STYLE_CLASS_CURSOR_HANDLE: &[u8] = b"cursor-handle\0";
pub const GTK_STYLE_CLASS_DEFAULT: &[u8] = b"default\0";
pub const GTK_STYLE_CLASS_DESTRUCTIVE_ACTION: &[u8] = b"destructive-action\0";
pub const GTK_STYLE_CLASS_DIM_LABEL: &[u8] = b"dim-label\0";
pub const GTK_STYLE_CLASS_DND: &[u8] = b"dnd\0";
pub const GTK_STYLE_CLASS_DOCK: &[u8] = b"dock\0";
pub const GTK_STYLE_CLASS_ENTRY: &[u8] = b"entry\0";
pub const GTK_STYLE_CLASS_ERROR: &[u8] = b"error\0";
pub const GTK_STYLE_CLASS_EXPANDER: &[u8] = b"expander\0";
pub const GTK_STYLE_CLASS_FLAT: &[u8] = b"flat\0";
pub const GTK_STYLE_CLASS_FRAME: &[u8] = b"frame\0";
pub const GTK_STYLE_CLASS_GRIP: &[u8] = b"grip\0";
pub const GTK_STYLE_CLASS_HEADER: &[u8] = b"header\0";
pub const GTK_STYLE_CLASS_HIGHLIGHT: &[u8] = b"highlight\0";
pub const GTK_STYLE_CLASS_HORIZONTAL: &[u8] = b"horizontal\0";
pub const GTK_STYLE_CLASS_IMAGE: &[u8] = b"image\0";
pub const GTK_STYLE_CLASS_INFO: &[u8] = b"info\0";
pub const GTK_STYLE_CLASS_INLINE_TOOLBAR: &[u8] = b"inline-toolbar\0";
pub const GTK_STYLE_CLASS_INSERTION_CURSOR: &[u8] = b"insertion-cursor\0";
pub const GTK_STYLE_CLASS_LABEL: &[u8] = b"label\0";
pub const GTK_STYLE_CLASS_LEFT: &[u8] = b"left\0";
pub const GTK_STYLE_CLASS_LEVEL_BAR: &[u8] = b"level-bar\0";
pub const GTK_STYLE_CLASS_LINKED: &[u8] = b"linked\0";
pub const GTK_STYLE_CLASS_LIST: &[u8] = b"list\0";
pub const GTK_STYLE_CLASS_LIST_ROW: &[u8] = b"list-row\0";
pub const GTK_STYLE_CLASS_MARK: &[u8] = b"mark\0";
pub const GTK_STYLE_CLASS_MENU: &[u8] = b"menu\0";
pub const GTK_STYLE_CLASS_MENUBAR: &[u8] = b"menubar\0";
pub const GTK_STYLE_CLASS_MENUITEM: &[u8] = b"menuitem\0";
pub const GTK_STYLE_CLASS_MESSAGE_DIALOG: &[u8] = b"message-dialog\0";
pub const GTK_STYLE_CLASS_MONOSPACE: &[u8] = b"monospace\0";
pub const GTK_STYLE_CLASS_NEEDS_ATTENTION: &[u8] = b"needs-attention\0";
pub const GTK_STYLE_CLASS_NOTEBOOK: &[u8] = b"notebook\0";
pub const GTK_STYLE_CLASS_OSD: &[u8] = b"osd\0";
pub const GTK_STYLE_CLASS_OVERSHOOT: &[u8] = b"overshoot\0";
pub const GTK_STYLE_CLASS_PANE_SEPARATOR: &[u8] = b"pane-separator\0";
pub const GTK_STYLE_CLASS_PAPER: &[u8] = b"paper\0";
pub const GTK_STYLE_CLASS_POPOVER: &[u8] = b"popover\0";
pub const GTK_STYLE_CLASS_POPUP: &[u8] = b"popup\0";
pub const GTK_STYLE_CLASS_PRIMARY_TOOLBAR: &[u8] = b"primary-toolbar\0";
pub const GTK_STYLE_CLASS_PROGRESSBAR: &[u8] = b"progressbar\0";
pub const GTK_STYLE_CLASS_PULSE: &[u8] = b"pulse\0";
pub const GTK_STYLE_CLASS_QUESTION: &[u8] = b"question\0";
pub const GTK_STYLE_CLASS_RADIO: &[u8] = b"radio\0";
pub const GTK_STYLE_CLASS_RAISED: &[u8] = b"raised\0";
pub const GTK_STYLE_CLASS_READ_ONLY: &[u8] = b"read-only\0";
pub const GTK_STYLE_CLASS_RIGHT: &[u8] = b"right\0";
pub const GTK_STYLE_CLASS_RUBBERBAND: &[u8] = b"rubberband\0";
pub const GTK_STYLE_CLASS_SCALE: &[u8] = b"scale\0";
pub const GTK_STYLE_CLASS_SCALE_HAS_MARKS_ABOVE: &[u8] = b"scale-has-marks-above\0";
pub const GTK_STYLE_CLASS_SCALE_HAS_MARKS_BELOW: &[u8] = b"scale-has-marks-below\0";
pub const GTK_STYLE_CLASS_SCROLLBAR: &[u8] = b"scrollbar\0";
pub const GTK_STYLE_CLASS_SCROLLBARS_JUNCTION: &[u8] = b"scrollbars-junction\0";
pub const GTK_STYLE_CLASS_SEPARATOR: &[u8] = b"separator\0";
pub const GTK_STYLE_CLASS_SIDEBAR: &[u8] = b"sidebar\0";
pub const GTK_STYLE_CLASS_SLIDER: &[u8] = b"slider\0";
pub const GTK_STYLE_CLASS_SPINBUTTON: &[u8] = b"spinbutton\0";
pub const GTK_STYLE_CLASS_SPINNER: &[u8] = b"spinner\0";
pub const GTK_STYLE_CLASS_STATUSBAR: &[u8] = b"statusbar\0";
pub const GTK_STYLE_CLASS_SUBTITLE: &[u8] = b"subtitle\0";
pub const GTK_STYLE_CLASS_SUGGESTED_ACTION: &[u8] = b"suggested-action\0";
pub const GTK_STYLE_CLASS_TITLE: &[u8] = b"title\0";
pub const GTK_STYLE_CLASS_TITLEBAR: &[u8] = b"titlebar\0";
pub const GTK_STYLE_CLASS_TOOLBAR: &[u8] = b"toolbar\0";
pub const GTK_STYLE_CLASS_TOOLTIP: &[u8] = b"tooltip\0";
pub const GTK_STYLE_CLASS_TOP: &[u8] = b"top\0";
pub const GTK_STYLE_CLASS_TOUCH_SELECTION: &[u8] = b"touch-selection\0";
pub const GTK_STYLE_CLASS_TROUGH: &[u8] = b"trough\0";
pub const GTK_STYLE_CLASS_UNDERSHOOT: &[u8] = b"undershoot\0";
pub const GTK_STYLE_CLASS_VERTICAL: &[u8] = b"vertical\0";
pub const GTK_STYLE_CLASS_VIEW: &[u8] = b"view\0";
pub const GTK_STYLE_CLASS_WARNING: &[u8] = b"warning\0";
pub const GTK_STYLE_CLASS_WIDE: &[u8] = b"wide\0";
pub const GTK_STYLE_PROPERTY_BACKGROUND_COLOR: &[u8] = b"background-color\0";
pub const GTK_STYLE_PROPERTY_BACKGROUND_IMAGE: &[u8] = b"background-image\0";
pub const GTK_STYLE_PROPERTY_BORDER_COLOR: &[u8] = b"border-color\0";
pub const GTK_STYLE_PROPERTY_BORDER_RADIUS: &[u8] = b"border-radius\0";
pub const GTK_STYLE_PROPERTY_BORDER_STYLE: &[u8] = b"border-style\0";
pub const GTK_STYLE_PROPERTY_BORDER_WIDTH: &[u8] = b"border-width\0";
pub const GTK_STYLE_PROPERTY_COLOR: &[u8] = b"color\0";
pub const GTK_STYLE_PROPERTY_FONT: &[u8] = b"font\0";
pub const GTK_STYLE_PROPERTY_MARGIN: &[u8] = b"margin\0";
pub const GTK_STYLE_PROPERTY_PADDING: &[u8] = b"padding\0";
pub const GTK_STYLE_PROVIDER_PRIORITY_APPLICATION: c_int = 600;
pub const GTK_STYLE_PROVIDER_PRIORITY_FALLBACK: c_int = 1;
pub const GTK_STYLE_PROVIDER_PRIORITY_SETTINGS: c_int = 400;
pub const GTK_STYLE_PROVIDER_PRIORITY_THEME: c_int = 200;
pub const GTK_STYLE_PROVIDER_PRIORITY_USER: c_int = 800;
pub const GTK_STYLE_REGION_COLUMN: &[u8] = b"column\0";
pub const GTK_STYLE_REGION_COLUMN_HEADER: &[u8] = b"column-header\0";
pub const GTK_STYLE_REGION_ROW: &[u8] = b"row\0";
pub const GTK_STYLE_REGION_TAB: &[u8] = b"tab\0";
pub const GTK_TEXT_VIEW_PRIORITY_VALIDATE: c_int = 125;
pub const GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID: c_int = -1;
pub const GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID: c_int = -2;

// Flags
pub type GtkAccelFlags = c_uint;
pub const GTK_ACCEL_VISIBLE: GtkAccelFlags = 1;
pub const GTK_ACCEL_LOCKED: GtkAccelFlags = 2;
pub const GTK_ACCEL_MASK: GtkAccelFlags = 7;

pub type GtkApplicationInhibitFlags = c_uint;
pub const GTK_APPLICATION_INHIBIT_LOGOUT: GtkApplicationInhibitFlags = 1;
pub const GTK_APPLICATION_INHIBIT_SWITCH: GtkApplicationInhibitFlags = 2;
pub const GTK_APPLICATION_INHIBIT_SUSPEND: GtkApplicationInhibitFlags = 4;
pub const GTK_APPLICATION_INHIBIT_IDLE: GtkApplicationInhibitFlags = 8;

pub type GtkAttachOptions = c_uint;
pub const GTK_EXPAND: GtkAttachOptions = 1;
pub const GTK_SHRINK: GtkAttachOptions = 2;
pub const GTK_FILL: GtkAttachOptions = 4;

pub type GtkCalendarDisplayOptions = c_uint;
pub const GTK_CALENDAR_SHOW_HEADING: GtkCalendarDisplayOptions = 1;
pub const GTK_CALENDAR_SHOW_DAY_NAMES: GtkCalendarDisplayOptions = 2;
pub const GTK_CALENDAR_NO_MONTH_CHANGE: GtkCalendarDisplayOptions = 4;
pub const GTK_CALENDAR_SHOW_WEEK_NUMBERS: GtkCalendarDisplayOptions = 8;
pub const GTK_CALENDAR_SHOW_DETAILS: GtkCalendarDisplayOptions = 32;

pub type GtkCellRendererState = c_uint;
pub const GTK_CELL_RENDERER_SELECTED: GtkCellRendererState = 1;
pub const GTK_CELL_RENDERER_PRELIT: GtkCellRendererState = 2;
pub const GTK_CELL_RENDERER_INSENSITIVE: GtkCellRendererState = 4;
pub const GTK_CELL_RENDERER_SORTED: GtkCellRendererState = 8;
pub const GTK_CELL_RENDERER_FOCUSED: GtkCellRendererState = 16;
pub const GTK_CELL_RENDERER_EXPANDABLE: GtkCellRendererState = 32;
pub const GTK_CELL_RENDERER_EXPANDED: GtkCellRendererState = 64;

pub type GtkDebugFlag = c_uint;
pub const GTK_DEBUG_MISC: GtkDebugFlag = 1;
pub const GTK_DEBUG_PLUGSOCKET: GtkDebugFlag = 2;
pub const GTK_DEBUG_TEXT: GtkDebugFlag = 4;
pub const GTK_DEBUG_TREE: GtkDebugFlag = 8;
pub const GTK_DEBUG_UPDATES: GtkDebugFlag = 16;
pub const GTK_DEBUG_KEYBINDINGS: GtkDebugFlag = 32;
pub const GTK_DEBUG_MULTIHEAD: GtkDebugFlag = 64;
pub const GTK_DEBUG_MODULES: GtkDebugFlag = 128;
pub const GTK_DEBUG_GEOMETRY: GtkDebugFlag = 256;
pub const GTK_DEBUG_ICONTHEME: GtkDebugFlag = 512;
pub const GTK_DEBUG_PRINTING: GtkDebugFlag = 1024;
pub const GTK_DEBUG_BUILDER: GtkDebugFlag = 2048;
pub const GTK_DEBUG_SIZE_REQUEST: GtkDebugFlag = 4096;
pub const GTK_DEBUG_NO_CSS_CACHE: GtkDebugFlag = 8192;
pub const GTK_DEBUG_BASELINES: GtkDebugFlag = 16384;
pub const GTK_DEBUG_PIXEL_CACHE: GtkDebugFlag = 32768;
pub const GTK_DEBUG_NO_PIXEL_CACHE: GtkDebugFlag = 65536;
pub const GTK_DEBUG_INTERACTIVE: GtkDebugFlag = 131072;
pub const GTK_DEBUG_TOUCHSCREEN: GtkDebugFlag = 262144;
pub const GTK_DEBUG_ACTIONS: GtkDebugFlag = 524288;
pub const GTK_DEBUG_RESIZE: GtkDebugFlag = 1048576;
pub const GTK_DEBUG_LAYOUT: GtkDebugFlag = 2097152;

pub type GtkDestDefaults = c_uint;
pub const GTK_DEST_DEFAULT_MOTION: GtkDestDefaults = 1;
pub const GTK_DEST_DEFAULT_HIGHLIGHT: GtkDestDefaults = 2;
pub const GTK_DEST_DEFAULT_DROP: GtkDestDefaults = 4;
pub const GTK_DEST_DEFAULT_ALL: GtkDestDefaults = 7;

pub type GtkDialogFlags = c_uint;
pub const GTK_DIALOG_MODAL: GtkDialogFlags = 1;
pub const GTK_DIALOG_DESTROY_WITH_PARENT: GtkDialogFlags = 2;
pub const GTK_DIALOG_USE_HEADER_BAR: GtkDialogFlags = 4;

pub type GtkEventControllerScrollFlags = c_uint;
pub const GTK_EVENT_CONTROLLER_SCROLL_NONE: GtkEventControllerScrollFlags = 0;
pub const GTK_EVENT_CONTROLLER_SCROLL_VERTICAL: GtkEventControllerScrollFlags = 1;
pub const GTK_EVENT_CONTROLLER_SCROLL_HORIZONTAL: GtkEventControllerScrollFlags = 2;
pub const GTK_EVENT_CONTROLLER_SCROLL_DISCRETE: GtkEventControllerScrollFlags = 4;
pub const GTK_EVENT_CONTROLLER_SCROLL_KINETIC: GtkEventControllerScrollFlags = 8;
pub const GTK_EVENT_CONTROLLER_SCROLL_BOTH_AXES: GtkEventControllerScrollFlags = 3;

pub type GtkFileFilterFlags = c_uint;
pub const GTK_FILE_FILTER_FILENAME: GtkFileFilterFlags = 1;
pub const GTK_FILE_FILTER_URI: GtkFileFilterFlags = 2;
pub const GTK_FILE_FILTER_DISPLAY_NAME: GtkFileFilterFlags = 4;
pub const GTK_FILE_FILTER_MIME_TYPE: GtkFileFilterFlags = 8;

pub type GtkFontChooserLevel = c_uint;
pub const GTK_FONT_CHOOSER_LEVEL_FAMILY: GtkFontChooserLevel = 0;
pub const GTK_FONT_CHOOSER_LEVEL_STYLE: GtkFontChooserLevel = 1;
pub const GTK_FONT_CHOOSER_LEVEL_SIZE: GtkFontChooserLevel = 2;
pub const GTK_FONT_CHOOSER_LEVEL_VARIATIONS: GtkFontChooserLevel = 4;
pub const GTK_FONT_CHOOSER_LEVEL_FEATURES: GtkFontChooserLevel = 8;

pub type GtkIconLookupFlags = c_uint;
pub const GTK_ICON_LOOKUP_NO_SVG: GtkIconLookupFlags = 1;
pub const GTK_ICON_LOOKUP_FORCE_SVG: GtkIconLookupFlags = 2;
pub const GTK_ICON_LOOKUP_USE_BUILTIN: GtkIconLookupFlags = 4;
pub const GTK_ICON_LOOKUP_GENERIC_FALLBACK: GtkIconLookupFlags = 8;
pub const GTK_ICON_LOOKUP_FORCE_SIZE: GtkIconLookupFlags = 16;
pub const GTK_ICON_LOOKUP_FORCE_REGULAR: GtkIconLookupFlags = 32;
pub const GTK_ICON_LOOKUP_FORCE_SYMBOLIC: GtkIconLookupFlags = 64;
pub const GTK_ICON_LOOKUP_DIR_LTR: GtkIconLookupFlags = 128;
pub const GTK_ICON_LOOKUP_DIR_RTL: GtkIconLookupFlags = 256;

pub type GtkInputHints = c_uint;
pub const GTK_INPUT_HINT_NONE: GtkInputHints = 0;
pub const GTK_INPUT_HINT_SPELLCHECK: GtkInputHints = 1;
pub const GTK_INPUT_HINT_NO_SPELLCHECK: GtkInputHints = 2;
pub const GTK_INPUT_HINT_WORD_COMPLETION: GtkInputHints = 4;
pub const GTK_INPUT_HINT_LOWERCASE: GtkInputHints = 8;
pub const GTK_INPUT_HINT_UPPERCASE_CHARS: GtkInputHints = 16;
pub const GTK_INPUT_HINT_UPPERCASE_WORDS: GtkInputHints = 32;
pub const GTK_INPUT_HINT_UPPERCASE_SENTENCES: GtkInputHints = 64;
pub const GTK_INPUT_HINT_INHIBIT_OSK: GtkInputHints = 128;
pub const GTK_INPUT_HINT_VERTICAL_WRITING: GtkInputHints = 256;
pub const GTK_INPUT_HINT_EMOJI: GtkInputHints = 512;
pub const GTK_INPUT_HINT_NO_EMOJI: GtkInputHints = 1024;

pub type GtkJunctionSides = c_uint;
pub const GTK_JUNCTION_NONE: GtkJunctionSides = 0;
pub const GTK_JUNCTION_CORNER_TOPLEFT: GtkJunctionSides = 1;
pub const GTK_JUNCTION_CORNER_TOPRIGHT: GtkJunctionSides = 2;
pub const GTK_JUNCTION_CORNER_BOTTOMLEFT: GtkJunctionSides = 4;
pub const GTK_JUNCTION_CORNER_BOTTOMRIGHT: GtkJunctionSides = 8;
pub const GTK_JUNCTION_TOP: GtkJunctionSides = 3;
pub const GTK_JUNCTION_BOTTOM: GtkJunctionSides = 12;
pub const GTK_JUNCTION_LEFT: GtkJunctionSides = 5;
pub const GTK_JUNCTION_RIGHT: GtkJunctionSides = 10;

pub type GtkPlacesOpenFlags = c_uint;
pub const GTK_PLACES_OPEN_NORMAL: GtkPlacesOpenFlags = 1;
pub const GTK_PLACES_OPEN_NEW_TAB: GtkPlacesOpenFlags = 2;
pub const GTK_PLACES_OPEN_NEW_WINDOW: GtkPlacesOpenFlags = 4;

pub type GtkRcFlags = c_uint;
pub const GTK_RC_FG: GtkRcFlags = 1;
pub const GTK_RC_BG: GtkRcFlags = 2;
pub const GTK_RC_TEXT: GtkRcFlags = 4;
pub const GTK_RC_BASE: GtkRcFlags = 8;

pub type GtkRecentFilterFlags = c_uint;
pub const GTK_RECENT_FILTER_URI: GtkRecentFilterFlags = 1;
pub const GTK_RECENT_FILTER_DISPLAY_NAME: GtkRecentFilterFlags = 2;
pub const GTK_RECENT_FILTER_MIME_TYPE: GtkRecentFilterFlags = 4;
pub const GTK_RECENT_FILTER_APPLICATION: GtkRecentFilterFlags = 8;
pub const GTK_RECENT_FILTER_GROUP: GtkRecentFilterFlags = 16;
pub const GTK_RECENT_FILTER_AGE: GtkRecentFilterFlags = 32;

pub type GtkRegionFlags = c_uint;
pub const GTK_REGION_EVEN: GtkRegionFlags = 1;
pub const GTK_REGION_ODD: GtkRegionFlags = 2;
pub const GTK_REGION_FIRST: GtkRegionFlags = 4;
pub const GTK_REGION_LAST: GtkRegionFlags = 8;
pub const GTK_REGION_ONLY: GtkRegionFlags = 16;
pub const GTK_REGION_SORTED: GtkRegionFlags = 32;

pub type GtkStateFlags = c_uint;
pub const GTK_STATE_FLAG_NORMAL: GtkStateFlags = 0;
pub const GTK_STATE_FLAG_ACTIVE: GtkStateFlags = 1;
pub const GTK_STATE_FLAG_PRELIGHT: GtkStateFlags = 2;
pub const GTK_STATE_FLAG_SELECTED: GtkStateFlags = 4;
pub const GTK_STATE_FLAG_INSENSITIVE: GtkStateFlags = 8;
pub const GTK_STATE_FLAG_INCONSISTENT: GtkStateFlags = 16;
pub const GTK_STATE_FLAG_FOCUSED: GtkStateFlags = 32;
pub const GTK_STATE_FLAG_BACKDROP: GtkStateFlags = 64;
pub const GTK_STATE_FLAG_DIR_LTR: GtkStateFlags = 128;
pub const GTK_STATE_FLAG_DIR_RTL: GtkStateFlags = 256;
pub const GTK_STATE_FLAG_LINK: GtkStateFlags = 512;
pub const GTK_STATE_FLAG_VISITED: GtkStateFlags = 1024;
pub const GTK_STATE_FLAG_CHECKED: GtkStateFlags = 2048;
pub const GTK_STATE_FLAG_DROP_ACTIVE: GtkStateFlags = 4096;

pub type GtkStyleContextPrintFlags = c_uint;
pub const GTK_STYLE_CONTEXT_PRINT_NONE: GtkStyleContextPrintFlags = 0;
pub const GTK_STYLE_CONTEXT_PRINT_RECURSE: GtkStyleContextPrintFlags = 1;
pub const GTK_STYLE_CONTEXT_PRINT_SHOW_STYLE: GtkStyleContextPrintFlags = 2;

pub type GtkTargetFlags = c_uint;
pub const GTK_TARGET_SAME_APP: GtkTargetFlags = 1;
pub const GTK_TARGET_SAME_WIDGET: GtkTargetFlags = 2;
pub const GTK_TARGET_OTHER_APP: GtkTargetFlags = 4;
pub const GTK_TARGET_OTHER_WIDGET: GtkTargetFlags = 8;

pub type GtkTextSearchFlags = c_uint;
pub const GTK_TEXT_SEARCH_VISIBLE_ONLY: GtkTextSearchFlags = 1;
pub const GTK_TEXT_SEARCH_TEXT_ONLY: GtkTextSearchFlags = 2;
pub const GTK_TEXT_SEARCH_CASE_INSENSITIVE: GtkTextSearchFlags = 4;

pub type GtkToolPaletteDragTargets = c_uint;
pub const GTK_TOOL_PALETTE_DRAG_ITEMS: GtkToolPaletteDragTargets = 1;
pub const GTK_TOOL_PALETTE_DRAG_GROUPS: GtkToolPaletteDragTargets = 2;

pub type GtkTreeModelFlags = c_uint;
pub const GTK_TREE_MODEL_ITERS_PERSIST: GtkTreeModelFlags = 1;
pub const GTK_TREE_MODEL_LIST_ONLY: GtkTreeModelFlags = 2;

pub type GtkUIManagerItemType = c_uint;
pub const GTK_UI_MANAGER_AUTO: GtkUIManagerItemType = 0;
pub const GTK_UI_MANAGER_MENUBAR: GtkUIManagerItemType = 1;
pub const GTK_UI_MANAGER_MENU: GtkUIManagerItemType = 2;
pub const GTK_UI_MANAGER_TOOLBAR: GtkUIManagerItemType = 4;
pub const GTK_UI_MANAGER_PLACEHOLDER: GtkUIManagerItemType = 8;
pub const GTK_UI_MANAGER_POPUP: GtkUIManagerItemType = 16;
pub const GTK_UI_MANAGER_MENUITEM: GtkUIManagerItemType = 32;
pub const GTK_UI_MANAGER_TOOLITEM: GtkUIManagerItemType = 64;
pub const GTK_UI_MANAGER_SEPARATOR: GtkUIManagerItemType = 128;
pub const GTK_UI_MANAGER_ACCELERATOR: GtkUIManagerItemType = 256;
pub const GTK_UI_MANAGER_POPUP_WITH_ACCELS: GtkUIManagerItemType = 512;

// Unions
#[derive(Copy, Clone)]
#[repr(C)]
pub union GtkBindingArg_d {
    pub long_data: c_long,
    pub double_data: c_double,
    pub string_data: *mut c_char,
}

impl ::std::fmt::Debug for GtkBindingArg_d {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBindingArg_d @ {self:p}"))
            .field("long_data", unsafe { &self.long_data })
            .field("double_data", unsafe { &self.double_data })
            .field("string_data", unsafe { &self.string_data })
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub union GtkTextAppearance_u1 {
    pub rgba: [*mut gdk::GdkRGBA; 2],
    pub padding: [c_uint; 4],
}

impl ::std::fmt::Debug for GtkTextAppearance_u1 {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextAppearance_u1 @ {self:p}"))
            .field("rgba", unsafe { &self.rgba })
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub union GtkTextAttributes_u1 {
    pub font_features: *mut c_char,
    pub padding: [c_uint; 2],
}

impl ::std::fmt::Debug for GtkTextAttributes_u1 {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextAttributes_u1 @ {self:p}"))
            .field("font_features", unsafe { &self.font_features })
            .finish()
    }
}

// Callbacks
pub type GtkAccelGroupActivate = Option<
    unsafe extern "C" fn(
        *mut GtkAccelGroup,
        *mut gobject::GObject,
        c_uint,
        gdk::GdkModifierType,
    ) -> gboolean,
>;
pub type GtkAccelGroupFindFunc =
    Option<unsafe extern "C" fn(*mut GtkAccelKey, *mut gobject::GClosure, gpointer) -> gboolean>;
pub type GtkAccelMapForeach =
    Option<unsafe extern "C" fn(gpointer, *const c_char, c_uint, gdk::GdkModifierType, gboolean)>;
pub type GtkAssistantPageFunc = Option<unsafe extern "C" fn(c_int, gpointer) -> c_int>;
pub type GtkBuilderConnectFunc = Option<
    unsafe extern "C" fn(
        *mut GtkBuilder,
        *mut gobject::GObject,
        *const c_char,
        *const c_char,
        *mut gobject::GObject,
        gobject::GConnectFlags,
        gpointer,
    ),
>;
pub type GtkCalendarDetailFunc =
    Option<unsafe extern "C" fn(*mut GtkCalendar, c_uint, c_uint, c_uint, gpointer) -> *mut c_char>;
pub type GtkCallback = Option<unsafe extern "C" fn(*mut GtkWidget, gpointer)>;
pub type GtkCellAllocCallback = Option<
    unsafe extern "C" fn(
        *mut GtkCellRenderer,
        *const gdk::GdkRectangle,
        *const gdk::GdkRectangle,
        gpointer,
    ) -> gboolean,
>;
pub type GtkCellCallback = Option<unsafe extern "C" fn(*mut GtkCellRenderer, gpointer) -> gboolean>;
pub type GtkCellLayoutDataFunc = Option<
    unsafe extern "C" fn(
        *mut GtkCellLayout,
        *mut GtkCellRenderer,
        *mut GtkTreeModel,
        *mut GtkTreeIter,
        gpointer,
    ),
>;
pub type GtkClipboardClearFunc = Option<unsafe extern "C" fn(*mut GtkClipboard, gpointer)>;
pub type GtkClipboardGetFunc =
    Option<unsafe extern "C" fn(*mut GtkClipboard, *mut GtkSelectionData, c_uint, gpointer)>;
pub type GtkClipboardImageReceivedFunc =
    Option<unsafe extern "C" fn(*mut GtkClipboard, *mut gdk_pixbuf::GdkPixbuf, gpointer)>;
pub type GtkClipboardReceivedFunc =
    Option<unsafe extern "C" fn(*mut GtkClipboard, *mut GtkSelectionData, gpointer)>;
pub type GtkClipboardRichTextReceivedFunc =
    Option<unsafe extern "C" fn(*mut GtkClipboard, gdk::GdkAtom, *const c_char, size_t, gpointer)>;
pub type GtkClipboardTargetsReceivedFunc =
    Option<unsafe extern "C" fn(*mut GtkClipboard, *mut gdk::GdkAtom, c_int, gpointer)>;
pub type GtkClipboardTextReceivedFunc =
    Option<unsafe extern "C" fn(*mut GtkClipboard, *const c_char, gpointer)>;
pub type GtkClipboardURIReceivedFunc =
    Option<unsafe extern "C" fn(*mut GtkClipboard, *mut *mut c_char, gpointer)>;
pub type GtkColorSelectionChangePaletteFunc =
    Option<unsafe extern "C" fn(*const gdk::GdkColor, c_int)>;
pub type GtkColorSelectionChangePaletteWithScreenFunc =
    Option<unsafe extern "C" fn(*mut gdk::GdkScreen, *const gdk::GdkColor, c_int)>;
pub type GtkEntryCompletionMatchFunc = Option<
    unsafe extern "C" fn(
        *mut GtkEntryCompletion,
        *const c_char,
        *mut GtkTreeIter,
        gpointer,
    ) -> gboolean,
>;
pub type GtkFileFilterFunc =
    Option<unsafe extern "C" fn(*const GtkFileFilterInfo, gpointer) -> gboolean>;
pub type GtkFlowBoxCreateWidgetFunc =
    Option<unsafe extern "C" fn(*mut gobject::GObject, gpointer) -> *mut GtkWidget>;
pub type GtkFlowBoxFilterFunc =
    Option<unsafe extern "C" fn(*mut GtkFlowBoxChild, gpointer) -> gboolean>;
pub type GtkFlowBoxForeachFunc =
    Option<unsafe extern "C" fn(*mut GtkFlowBox, *mut GtkFlowBoxChild, gpointer)>;
pub type GtkFlowBoxSortFunc =
    Option<unsafe extern "C" fn(*mut GtkFlowBoxChild, *mut GtkFlowBoxChild, gpointer) -> c_int>;
pub type GtkFontFilterFunc = Option<
    unsafe extern "C" fn(
        *const pango::PangoFontFamily,
        *const pango::PangoFontFace,
        gpointer,
    ) -> gboolean,
>;
pub type GtkIconViewForeachFunc =
    Option<unsafe extern "C" fn(*mut GtkIconView, *mut GtkTreePath, gpointer)>;
pub type GtkKeySnoopFunc =
    Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventKey, gpointer) -> c_int>;
pub type GtkListBoxCreateWidgetFunc =
    Option<unsafe extern "C" fn(*mut gobject::GObject, gpointer) -> *mut GtkWidget>;
pub type GtkListBoxFilterFunc =
    Option<unsafe extern "C" fn(*mut GtkListBoxRow, gpointer) -> gboolean>;
pub type GtkListBoxForeachFunc =
    Option<unsafe extern "C" fn(*mut GtkListBox, *mut GtkListBoxRow, gpointer)>;
pub type GtkListBoxSortFunc =
    Option<unsafe extern "C" fn(*mut GtkListBoxRow, *mut GtkListBoxRow, gpointer) -> c_int>;
pub type GtkListBoxUpdateHeaderFunc =
    Option<unsafe extern "C" fn(*mut GtkListBoxRow, *mut GtkListBoxRow, gpointer)>;
pub type GtkMenuDetachFunc = Option<unsafe extern "C" fn(*mut GtkWidget, *mut GtkMenu)>;
pub type GtkMenuPositionFunc =
    Option<unsafe extern "C" fn(*mut GtkMenu, *mut c_int, *mut c_int, *mut gboolean, gpointer)>;
pub type GtkModuleDisplayInitFunc = Option<unsafe extern "C" fn(*mut gdk::GdkDisplay)>;
pub type GtkModuleInitFunc = Option<unsafe extern "C" fn(*mut c_int, *mut *mut *mut c_char)>;
pub type GtkPageSetupDoneFunc = Option<unsafe extern "C" fn(*mut GtkPageSetup, gpointer)>;
pub type GtkPrintSettingsFunc =
    Option<unsafe extern "C" fn(*const c_char, *const c_char, gpointer)>;
pub type GtkRcPropertyParser = Option<
    unsafe extern "C" fn(
        *const gobject::GParamSpec,
        *const glib::GString,
        *mut gobject::GValue,
    ) -> gboolean,
>;
pub type GtkRecentFilterFunc =
    Option<unsafe extern "C" fn(*const GtkRecentFilterInfo, gpointer) -> gboolean>;
pub type GtkRecentSortFunc =
    Option<unsafe extern "C" fn(*mut GtkRecentInfo, *mut GtkRecentInfo, gpointer) -> c_int>;
pub type GtkStylePropertyParser = Option<
    unsafe extern "C" fn(*const c_char, *mut gobject::GValue, *mut *mut glib::GError) -> gboolean,
>;
pub type GtkTextBufferDeserializeFunc = Option<
    unsafe extern "C" fn(
        *mut GtkTextBuffer,
        *mut GtkTextBuffer,
        *mut GtkTextIter,
        *const u8,
        size_t,
        gboolean,
        gpointer,
        *mut *mut glib::GError,
    ) -> gboolean,
>;
pub type GtkTextBufferSerializeFunc = Option<
    unsafe extern "C" fn(
        *mut GtkTextBuffer,
        *mut GtkTextBuffer,
        *const GtkTextIter,
        *const GtkTextIter,
        *mut size_t,
        gpointer,
    ) -> *mut u8,
>;
pub type GtkTextCharPredicate = Option<unsafe extern "C" fn(u32, gpointer) -> gboolean>;
pub type GtkTextTagTableForeach = Option<unsafe extern "C" fn(*mut GtkTextTag, gpointer)>;
pub type GtkTickCallback =
    Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkFrameClock, gpointer) -> gboolean>;
pub type GtkTranslateFunc = Option<unsafe extern "C" fn(*const c_char, gpointer) -> *mut c_char>;
pub type GtkTreeCellDataFunc = Option<
    unsafe extern "C" fn(
        *mut GtkTreeViewColumn,
        *mut GtkCellRenderer,
        *mut GtkTreeModel,
        *mut GtkTreeIter,
        gpointer,
    ),
>;
pub type GtkTreeDestroyCountFunc =
    Option<unsafe extern "C" fn(*mut GtkTreeView, *mut GtkTreePath, c_int, gpointer)>;
pub type GtkTreeIterCompareFunc = Option<
    unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter, *mut GtkTreeIter, gpointer) -> c_int,
>;
pub type GtkTreeModelFilterModifyFunc = Option<
    unsafe extern "C" fn(
        *mut GtkTreeModel,
        *mut GtkTreeIter,
        *mut gobject::GValue,
        c_int,
        gpointer,
    ),
>;
pub type GtkTreeModelFilterVisibleFunc =
    Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter, gpointer) -> gboolean>;
pub type GtkTreeModelForeachFunc = Option<
    unsafe extern "C" fn(
        *mut GtkTreeModel,
        *mut GtkTreePath,
        *mut GtkTreeIter,
        gpointer,
    ) -> gboolean,
>;
pub type GtkTreeSelectionForeachFunc =
    Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreePath, *mut GtkTreeIter, gpointer)>;
pub type GtkTreeSelectionFunc = Option<
    unsafe extern "C" fn(
        *mut GtkTreeSelection,
        *mut GtkTreeModel,
        *mut GtkTreePath,
        gboolean,
        gpointer,
    ) -> gboolean,
>;
pub type GtkTreeViewColumnDropFunc = Option<
    unsafe extern "C" fn(
        *mut GtkTreeView,
        *mut GtkTreeViewColumn,
        *mut GtkTreeViewColumn,
        *mut GtkTreeViewColumn,
        gpointer,
    ) -> gboolean,
>;
pub type GtkTreeViewMappingFunc =
    Option<unsafe extern "C" fn(*mut GtkTreeView, *mut GtkTreePath, gpointer)>;
pub type GtkTreeViewRowSeparatorFunc =
    Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter, gpointer) -> gboolean>;
pub type GtkTreeViewSearchEqualFunc = Option<
    unsafe extern "C" fn(
        *mut GtkTreeModel,
        c_int,
        *const c_char,
        *mut GtkTreeIter,
        gpointer,
    ) -> gboolean,
>;
pub type GtkTreeViewSearchPositionFunc =
    Option<unsafe extern "C" fn(*mut GtkTreeView, *mut GtkWidget, gpointer)>;

// Records
#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAboutDialogClass {
    pub parent_class: GtkDialogClass,
    pub activate_link: Option<unsafe extern "C" fn(*mut GtkAboutDialog, *const c_char) -> gboolean>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkAboutDialogClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAboutDialogClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("activate_link", &self.activate_link)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkAboutDialogPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAboutDialogPrivate = *mut _GtkAboutDialogPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAccelGroupClass {
    pub parent_class: gobject::GObjectClass,
    pub accel_changed: Option<
        unsafe extern "C" fn(
            *mut GtkAccelGroup,
            c_uint,
            gdk::GdkModifierType,
            *mut gobject::GClosure,
        ),
    >,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkAccelGroupClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAccelGroupClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("accel_changed", &self.accel_changed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAccelGroupEntry {
    pub key: GtkAccelKey,
    pub closure: *mut gobject::GClosure,
    pub accel_path_quark: glib::GQuark,
}

impl ::std::fmt::Debug for GtkAccelGroupEntry {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAccelGroupEntry @ {self:p}"))
            .field("key", &self.key)
            .field("closure", &self.closure)
            .field("accel_path_quark", &self.accel_path_quark)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkAccelGroupPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAccelGroupPrivate = *mut _GtkAccelGroupPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAccelKey {
    pub accel_key: c_uint,
    pub accel_mods: gdk::GdkModifierType,
    pub accel_flags: c_uint,
}

impl ::std::fmt::Debug for GtkAccelKey {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAccelKey @ {self:p}"))
            .field("accel_key", &self.accel_key)
            .field("accel_mods", &self.accel_mods)
            .field("accel_flags", &self.accel_flags)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAccelLabelClass {
    pub parent_class: GtkLabelClass,
    pub signal_quote1: *mut c_char,
    pub signal_quote2: *mut c_char,
    pub mod_name_shift: *mut c_char,
    pub mod_name_control: *mut c_char,
    pub mod_name_alt: *mut c_char,
    pub mod_separator: *mut c_char,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkAccelLabelClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAccelLabelClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("signal_quote1", &self.signal_quote1)
            .field("signal_quote2", &self.signal_quote2)
            .field("mod_name_shift", &self.mod_name_shift)
            .field("mod_name_control", &self.mod_name_control)
            .field("mod_name_alt", &self.mod_name_alt)
            .field("mod_separator", &self.mod_separator)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkAccelLabelPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAccelLabelPrivate = *mut _GtkAccelLabelPrivate;

#[repr(C)]
pub struct _GtkAccelMapClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAccelMapClass = *mut _GtkAccelMapClass;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAccessibleClass {
    pub parent_class: atk::AtkObjectClass,
    pub connect_widget_destroyed: Option<unsafe extern "C" fn(*mut GtkAccessible)>,
    pub widget_set: Option<unsafe extern "C" fn(*mut GtkAccessible)>,
    pub widget_unset: Option<unsafe extern "C" fn(*mut GtkAccessible)>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("connect_widget_destroyed", &self.connect_widget_destroyed)
            .field("widget_set", &self.widget_set)
            .field("widget_unset", &self.widget_unset)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAccessiblePrivate = *mut _GtkAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkActionBarClass {
    pub parent_class: GtkBinClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkActionBarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkActionBarClass @ {self:p}"))
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkActionBarPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkActionBarPrivate = *mut _GtkActionBarPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkActionClass {
    pub parent_class: gobject::GObjectClass,
    pub activate: Option<unsafe extern "C" fn(*mut GtkAction)>,
    pub menu_item_type: GType,
    pub toolbar_item_type: GType,
    pub create_menu_item: Option<unsafe extern "C" fn(*mut GtkAction) -> *mut GtkWidget>,
    pub create_tool_item: Option<unsafe extern "C" fn(*mut GtkAction) -> *mut GtkWidget>,
    pub connect_proxy: Option<unsafe extern "C" fn(*mut GtkAction, *mut GtkWidget)>,
    pub disconnect_proxy: Option<unsafe extern "C" fn(*mut GtkAction, *mut GtkWidget)>,
    pub create_menu: Option<unsafe extern "C" fn(*mut GtkAction) -> *mut GtkWidget>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkActionClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkActionClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("activate", &self.activate)
            .field("create_menu_item", &self.create_menu_item)
            .field("create_tool_item", &self.create_tool_item)
            .field("connect_proxy", &self.connect_proxy)
            .field("disconnect_proxy", &self.disconnect_proxy)
            .field("create_menu", &self.create_menu)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkActionEntry {
    pub name: *const c_char,
    pub stock_id: *const c_char,
    pub label: *const c_char,
    pub accelerator: *const c_char,
    pub tooltip: *const c_char,
    pub callback: gobject::GCallback,
}

impl ::std::fmt::Debug for GtkActionEntry {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkActionEntry @ {self:p}"))
            .field("name", &self.name)
            .field("stock_id", &self.stock_id)
            .field("label", &self.label)
            .field("accelerator", &self.accelerator)
            .field("tooltip", &self.tooltip)
            .field("callback", &self.callback)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkActionGroupClass {
    pub parent_class: gobject::GObjectClass,
    pub get_action:
        Option<unsafe extern "C" fn(*mut GtkActionGroup, *const c_char) -> *mut GtkAction>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkActionGroupClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkActionGroupClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("get_action", &self.get_action)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkActionGroupPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkActionGroupPrivate = *mut _GtkActionGroupPrivate;

#[repr(C)]
pub struct _GtkActionPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkActionPrivate = *mut _GtkActionPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkActionableInterface {
    pub g_iface: gobject::GTypeInterface,
    pub get_action_name: Option<unsafe extern "C" fn(*mut GtkActionable) -> *const c_char>,
    pub set_action_name: Option<unsafe extern "C" fn(*mut GtkActionable, *const c_char)>,
    pub get_action_target_value:
        Option<unsafe extern "C" fn(*mut GtkActionable) -> *mut glib::GVariant>,
    pub set_action_target_value:
        Option<unsafe extern "C" fn(*mut GtkActionable, *mut glib::GVariant)>,
}

impl ::std::fmt::Debug for GtkActionableInterface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkActionableInterface @ {self:p}"))
            .field("get_action_name", &self.get_action_name)
            .field("set_action_name", &self.set_action_name)
            .field("get_action_target_value", &self.get_action_target_value)
            .field("set_action_target_value", &self.set_action_target_value)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkActivatableIface {
    pub g_iface: gobject::GTypeInterface,
    pub update: Option<unsafe extern "C" fn(*mut GtkActivatable, *mut GtkAction, *const c_char)>,
    pub sync_action_properties: Option<unsafe extern "C" fn(*mut GtkActivatable, *mut GtkAction)>,
}

impl ::std::fmt::Debug for GtkActivatableIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkActivatableIface @ {self:p}"))
            .field("update", &self.update)
            .field("sync_action_properties", &self.sync_action_properties)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAdjustmentClass {
    pub parent_class: gobject::GInitiallyUnownedClass,
    pub changed: Option<unsafe extern "C" fn(*mut GtkAdjustment)>,
    pub value_changed: Option<unsafe extern "C" fn(*mut GtkAdjustment)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkAdjustmentClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAdjustmentClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("changed", &self.changed)
            .field("value_changed", &self.value_changed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkAdjustmentPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAdjustmentPrivate = *mut _GtkAdjustmentPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAlignmentClass {
    pub parent_class: GtkBinClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkAlignmentClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAlignmentClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkAlignmentPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAlignmentPrivate = *mut _GtkAlignmentPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAppChooserButtonClass {
    pub parent_class: GtkComboBoxClass,
    pub custom_item_activated:
        Option<unsafe extern "C" fn(*mut GtkAppChooserButton, *const c_char)>,
    pub padding: [gpointer; 16],
}

impl ::std::fmt::Debug for GtkAppChooserButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAppChooserButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("custom_item_activated", &self.custom_item_activated)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkAppChooserButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAppChooserButtonPrivate = *mut _GtkAppChooserButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAppChooserDialogClass {
    pub parent_class: GtkDialogClass,
    pub padding: [gpointer; 16],
}

impl ::std::fmt::Debug for GtkAppChooserDialogClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAppChooserDialogClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkAppChooserDialogPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAppChooserDialogPrivate = *mut _GtkAppChooserDialogPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAppChooserWidgetClass {
    pub parent_class: GtkBoxClass,
    pub application_selected:
        Option<unsafe extern "C" fn(*mut GtkAppChooserWidget, *mut gio::GAppInfo)>,
    pub application_activated:
        Option<unsafe extern "C" fn(*mut GtkAppChooserWidget, *mut gio::GAppInfo)>,
    pub populate_popup:
        Option<unsafe extern "C" fn(*mut GtkAppChooserWidget, *mut GtkMenu, *mut gio::GAppInfo)>,
    pub padding: [gpointer; 16],
}

impl ::std::fmt::Debug for GtkAppChooserWidgetClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAppChooserWidgetClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("application_selected", &self.application_selected)
            .field("application_activated", &self.application_activated)
            .field("populate_popup", &self.populate_popup)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkAppChooserWidgetPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAppChooserWidgetPrivate = *mut _GtkAppChooserWidgetPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkApplicationClass {
    pub parent_class: gio::GApplicationClass,
    pub window_added: Option<unsafe extern "C" fn(*mut GtkApplication, *mut GtkWindow)>,
    pub window_removed: Option<unsafe extern "C" fn(*mut GtkApplication, *mut GtkWindow)>,
    pub padding: [gpointer; 12],
}

impl ::std::fmt::Debug for GtkApplicationClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkApplicationClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("window_added", &self.window_added)
            .field("window_removed", &self.window_removed)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkApplicationPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkApplicationPrivate = *mut _GtkApplicationPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkApplicationWindowClass {
    pub parent_class: GtkWindowClass,
    pub padding: [gpointer; 14],
}

impl ::std::fmt::Debug for GtkApplicationWindowClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkApplicationWindowClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkApplicationWindowPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkApplicationWindowPrivate = *mut _GtkApplicationWindowPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkArrowAccessibleClass {
    pub parent_class: GtkWidgetAccessibleClass,
}

impl ::std::fmt::Debug for GtkArrowAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkArrowAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkArrowAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkArrowAccessiblePrivate = *mut _GtkArrowAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkArrowClass {
    pub parent_class: GtkMiscClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkArrowClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkArrowClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkArrowPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkArrowPrivate = *mut _GtkArrowPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAspectFrameClass {
    pub parent_class: GtkFrameClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkAspectFrameClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAspectFrameClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkAspectFramePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAspectFramePrivate = *mut _GtkAspectFramePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAssistantClass {
    pub parent_class: GtkWindowClass,
    pub prepare: Option<unsafe extern "C" fn(*mut GtkAssistant, *mut GtkWidget)>,
    pub apply: Option<unsafe extern "C" fn(*mut GtkAssistant)>,
    pub close: Option<unsafe extern "C" fn(*mut GtkAssistant)>,
    pub cancel: Option<unsafe extern "C" fn(*mut GtkAssistant)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkAssistantClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAssistantClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("prepare", &self.prepare)
            .field("apply", &self.apply)
            .field("close", &self.close)
            .field("cancel", &self.cancel)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkAssistantPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkAssistantPrivate = *mut _GtkAssistantPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBinClass {
    pub parent_class: GtkContainerClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkBinClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBinClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkBinPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkBinPrivate = *mut _GtkBinPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBindingArg {
    pub arg_type: GType,
    pub d: GtkBindingArg_d,
}

impl ::std::fmt::Debug for GtkBindingArg {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBindingArg @ {self:p}"))
            .field("arg_type", &self.arg_type)
            .field("d", &self.d)
            .finish()
    }
}

#[repr(C)]
pub struct GtkBindingEntry {
    pub keyval: c_uint,
    pub modifiers: gdk::GdkModifierType,
    pub binding_set: *mut GtkBindingSet,
    pub destroyed: c_uint,
    _truncated_record_marker: c_void,
    // field in_emission has incomplete type
}

impl ::std::fmt::Debug for GtkBindingEntry {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBindingEntry @ {self:p}"))
            .field("keyval", &self.keyval)
            .field("modifiers", &self.modifiers)
            .field("binding_set", &self.binding_set)
            .field("destroyed", &self.destroyed)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBindingSet {
    pub set_name: *mut c_char,
    pub priority: c_int,
    pub widget_path_pspecs: *mut glib::GSList,
    pub widget_class_pspecs: *mut glib::GSList,
    pub class_branch_pspecs: *mut glib::GSList,
    pub entries: *mut GtkBindingEntry,
    pub current: *mut GtkBindingEntry,
    pub parsed: c_uint,
}

impl ::std::fmt::Debug for GtkBindingSet {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBindingSet @ {self:p}"))
            .field("set_name", &self.set_name)
            .field("priority", &self.priority)
            .field("widget_path_pspecs", &self.widget_path_pspecs)
            .field("widget_class_pspecs", &self.widget_class_pspecs)
            .field("class_branch_pspecs", &self.class_branch_pspecs)
            .field("entries", &self.entries)
            .field("current", &self.current)
            .field("parsed", &self.parsed)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBindingSignal {
    pub next: *mut GtkBindingSignal,
    pub signal_name: *mut c_char,
    pub n_args: c_uint,
    pub args: *mut GtkBindingArg,
}

impl ::std::fmt::Debug for GtkBindingSignal {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBindingSignal @ {self:p}"))
            .field("next", &self.next)
            .field("signal_name", &self.signal_name)
            .field("n_args", &self.n_args)
            .field("args", &self.args)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBooleanCellAccessibleClass {
    pub parent_class: GtkRendererCellAccessibleClass,
}

impl ::std::fmt::Debug for GtkBooleanCellAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBooleanCellAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkBooleanCellAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkBooleanCellAccessiblePrivate = *mut _GtkBooleanCellAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBorder {
    pub left: i16,
    pub right: i16,
    pub top: i16,
    pub bottom: i16,
}

impl ::std::fmt::Debug for GtkBorder {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBorder @ {self:p}"))
            .field("left", &self.left)
            .field("right", &self.right)
            .field("top", &self.top)
            .field("bottom", &self.bottom)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBoxClass {
    pub parent_class: GtkContainerClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBoxClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkBoxPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkBoxPrivate = *mut _GtkBoxPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBuildableIface {
    pub g_iface: gobject::GTypeInterface,
    pub set_name: Option<unsafe extern "C" fn(*mut GtkBuildable, *const c_char)>,
    pub get_name: Option<unsafe extern "C" fn(*mut GtkBuildable) -> *const c_char>,
    pub add_child: Option<
        unsafe extern "C" fn(
            *mut GtkBuildable,
            *mut GtkBuilder,
            *mut gobject::GObject,
            *const c_char,
        ),
    >,
    pub set_buildable_property: Option<
        unsafe extern "C" fn(
            *mut GtkBuildable,
            *mut GtkBuilder,
            *const c_char,
            *const gobject::GValue,
        ),
    >,
    pub construct_child: Option<
        unsafe extern "C" fn(
            *mut GtkBuildable,
            *mut GtkBuilder,
            *const c_char,
        ) -> *mut gobject::GObject,
    >,
    pub custom_tag_start: Option<
        unsafe extern "C" fn(
            *mut GtkBuildable,
            *mut GtkBuilder,
            *mut gobject::GObject,
            *const c_char,
            *mut glib::GMarkupParser,
            *mut gpointer,
        ) -> gboolean,
    >,
    pub custom_tag_end: Option<
        unsafe extern "C" fn(
            *mut GtkBuildable,
            *mut GtkBuilder,
            *mut gobject::GObject,
            *const c_char,
            gpointer,
        ),
    >,
    pub custom_finished: Option<
        unsafe extern "C" fn(
            *mut GtkBuildable,
            *mut GtkBuilder,
            *mut gobject::GObject,
            *const c_char,
            gpointer,
        ),
    >,
    pub parser_finished: Option<unsafe extern "C" fn(*mut GtkBuildable, *mut GtkBuilder)>,
    pub get_internal_child: Option<
        unsafe extern "C" fn(
            *mut GtkBuildable,
            *mut GtkBuilder,
            *const c_char,
        ) -> *mut gobject::GObject,
    >,
}

impl ::std::fmt::Debug for GtkBuildableIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBuildableIface @ {self:p}"))
            .field("g_iface", &self.g_iface)
            .field("set_name", &self.set_name)
            .field("get_name", &self.get_name)
            .field("add_child", &self.add_child)
            .field("set_buildable_property", &self.set_buildable_property)
            .field("construct_child", &self.construct_child)
            .field("custom_tag_start", &self.custom_tag_start)
            .field("custom_tag_end", &self.custom_tag_end)
            .field("custom_finished", &self.custom_finished)
            .field("parser_finished", &self.parser_finished)
            .field("get_internal_child", &self.get_internal_child)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBuilderClass {
    pub parent_class: gobject::GObjectClass,
    pub get_type_from_name: Option<unsafe extern "C" fn(*mut GtkBuilder, *const c_char) -> GType>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkBuilderClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBuilderClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("get_type_from_name", &self.get_type_from_name)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkBuilderPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkBuilderPrivate = *mut _GtkBuilderPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkButtonAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkButtonAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkButtonAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkButtonAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkButtonAccessiblePrivate = *mut _GtkButtonAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkButtonBoxClass {
    pub parent_class: GtkBoxClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkButtonBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkButtonBoxClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkButtonBoxPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkButtonBoxPrivate = *mut _GtkButtonBoxPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkButtonClass {
    pub parent_class: GtkBinClass,
    pub pressed: Option<unsafe extern "C" fn(*mut GtkButton)>,
    pub released: Option<unsafe extern "C" fn(*mut GtkButton)>,
    pub clicked: Option<unsafe extern "C" fn(*mut GtkButton)>,
    pub enter: Option<unsafe extern "C" fn(*mut GtkButton)>,
    pub leave: Option<unsafe extern "C" fn(*mut GtkButton)>,
    pub activate: Option<unsafe extern "C" fn(*mut GtkButton)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("pressed", &self.pressed)
            .field("released", &self.released)
            .field("clicked", &self.clicked)
            .field("enter", &self.enter)
            .field("leave", &self.leave)
            .field("activate", &self.activate)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkButtonPrivate = *mut _GtkButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCalendarClass {
    pub parent_class: GtkWidgetClass,
    pub month_changed: Option<unsafe extern "C" fn(*mut GtkCalendar)>,
    pub day_selected: Option<unsafe extern "C" fn(*mut GtkCalendar)>,
    pub day_selected_double_click: Option<unsafe extern "C" fn(*mut GtkCalendar)>,
    pub prev_month: Option<unsafe extern "C" fn(*mut GtkCalendar)>,
    pub next_month: Option<unsafe extern "C" fn(*mut GtkCalendar)>,
    pub prev_year: Option<unsafe extern "C" fn(*mut GtkCalendar)>,
    pub next_year: Option<unsafe extern "C" fn(*mut GtkCalendar)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCalendarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCalendarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("month_changed", &self.month_changed)
            .field("day_selected", &self.day_selected)
            .field("day_selected_double_click", &self.day_selected_double_click)
            .field("prev_month", &self.prev_month)
            .field("next_month", &self.next_month)
            .field("prev_year", &self.prev_year)
            .field("next_year", &self.next_year)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCalendarPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCalendarPrivate = *mut _GtkCalendarPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellAccessibleClass {
    pub parent_class: GtkAccessibleClass,
    pub update_cache: Option<unsafe extern "C" fn(*mut GtkCellAccessible, gboolean)>,
}

impl ::std::fmt::Debug for GtkCellAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("update_cache", &self.update_cache)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellAccessibleParentIface {
    pub parent: gobject::GTypeInterface,
    pub get_cell_extents: Option<
        unsafe extern "C" fn(
            *mut GtkCellAccessibleParent,
            *mut GtkCellAccessible,
            *mut c_int,
            *mut c_int,
            *mut c_int,
            *mut c_int,
            atk::AtkCoordType,
        ),
    >,
    pub get_cell_area: Option<
        unsafe extern "C" fn(
            *mut GtkCellAccessibleParent,
            *mut GtkCellAccessible,
            *mut gdk::GdkRectangle,
        ),
    >,
    pub grab_focus: Option<
        unsafe extern "C" fn(*mut GtkCellAccessibleParent, *mut GtkCellAccessible) -> gboolean,
    >,
    pub get_child_index:
        Option<unsafe extern "C" fn(*mut GtkCellAccessibleParent, *mut GtkCellAccessible) -> c_int>,
    pub get_renderer_state: Option<
        unsafe extern "C" fn(
            *mut GtkCellAccessibleParent,
            *mut GtkCellAccessible,
        ) -> GtkCellRendererState,
    >,
    pub expand_collapse:
        Option<unsafe extern "C" fn(*mut GtkCellAccessibleParent, *mut GtkCellAccessible)>,
    pub activate:
        Option<unsafe extern "C" fn(*mut GtkCellAccessibleParent, *mut GtkCellAccessible)>,
    pub edit: Option<unsafe extern "C" fn(*mut GtkCellAccessibleParent, *mut GtkCellAccessible)>,
    pub update_relationset: Option<
        unsafe extern "C" fn(
            *mut GtkCellAccessibleParent,
            *mut GtkCellAccessible,
            *mut atk::AtkRelationSet,
        ),
    >,
    pub get_cell_position: Option<
        unsafe extern "C" fn(
            *mut GtkCellAccessibleParent,
            *mut GtkCellAccessible,
            *mut c_int,
            *mut c_int,
        ),
    >,
    pub get_column_header_cells: Option<
        unsafe extern "C" fn(
            *mut GtkCellAccessibleParent,
            *mut GtkCellAccessible,
        ) -> *mut glib::GPtrArray,
    >,
    pub get_row_header_cells: Option<
        unsafe extern "C" fn(
            *mut GtkCellAccessibleParent,
            *mut GtkCellAccessible,
        ) -> *mut glib::GPtrArray,
    >,
}

impl ::std::fmt::Debug for GtkCellAccessibleParentIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellAccessibleParentIface @ {self:p}"))
            .field("parent", &self.parent)
            .field("get_cell_extents", &self.get_cell_extents)
            .field("get_cell_area", &self.get_cell_area)
            .field("grab_focus", &self.grab_focus)
            .field("get_child_index", &self.get_child_index)
            .field("get_renderer_state", &self.get_renderer_state)
            .field("expand_collapse", &self.expand_collapse)
            .field("activate", &self.activate)
            .field("edit", &self.edit)
            .field("update_relationset", &self.update_relationset)
            .field("get_cell_position", &self.get_cell_position)
            .field("get_column_header_cells", &self.get_column_header_cells)
            .field("get_row_header_cells", &self.get_row_header_cells)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellAccessiblePrivate = *mut _GtkCellAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellAreaBoxClass {
    pub parent_class: GtkCellAreaClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellAreaBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellAreaBoxClass @ {self:p}"))
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellAreaBoxPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellAreaBoxPrivate = *mut _GtkCellAreaBoxPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellAreaClass {
    pub parent_class: gobject::GInitiallyUnownedClass,
    pub add: Option<unsafe extern "C" fn(*mut GtkCellArea, *mut GtkCellRenderer)>,
    pub remove: Option<unsafe extern "C" fn(*mut GtkCellArea, *mut GtkCellRenderer)>,
    pub foreach: Option<unsafe extern "C" fn(*mut GtkCellArea, GtkCellCallback, gpointer)>,
    pub foreach_alloc: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkCellAreaContext,
            *mut GtkWidget,
            *const gdk::GdkRectangle,
            *const gdk::GdkRectangle,
            GtkCellAllocCallback,
            gpointer,
        ),
    >,
    pub event: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkCellAreaContext,
            *mut GtkWidget,
            *mut gdk::GdkEvent,
            *const gdk::GdkRectangle,
            GtkCellRendererState,
        ) -> c_int,
    >,
    pub render: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkCellAreaContext,
            *mut GtkWidget,
            *mut cairo::cairo_t,
            *const gdk::GdkRectangle,
            *const gdk::GdkRectangle,
            GtkCellRendererState,
            gboolean,
        ),
    >,
    pub apply_attributes: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkTreeModel,
            *mut GtkTreeIter,
            gboolean,
            gboolean,
        ),
    >,
    pub create_context: Option<unsafe extern "C" fn(*mut GtkCellArea) -> *mut GtkCellAreaContext>,
    pub copy_context: Option<
        unsafe extern "C" fn(*mut GtkCellArea, *mut GtkCellAreaContext) -> *mut GtkCellAreaContext,
    >,
    pub get_request_mode: Option<unsafe extern "C" fn(*mut GtkCellArea) -> GtkSizeRequestMode>,
    pub get_preferred_width: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkCellAreaContext,
            *mut GtkWidget,
            *mut c_int,
            *mut c_int,
        ),
    >,
    pub get_preferred_height_for_width: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkCellAreaContext,
            *mut GtkWidget,
            c_int,
            *mut c_int,
            *mut c_int,
        ),
    >,
    pub get_preferred_height: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkCellAreaContext,
            *mut GtkWidget,
            *mut c_int,
            *mut c_int,
        ),
    >,
    pub get_preferred_width_for_height: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkCellAreaContext,
            *mut GtkWidget,
            c_int,
            *mut c_int,
            *mut c_int,
        ),
    >,
    pub set_cell_property: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkCellRenderer,
            c_uint,
            *mut gobject::GValue,
            *mut gobject::GParamSpec,
        ),
    >,
    pub get_cell_property: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkCellRenderer,
            c_uint,
            *mut gobject::GValue,
            *mut gobject::GParamSpec,
        ),
    >,
    pub focus: Option<unsafe extern "C" fn(*mut GtkCellArea, GtkDirectionType) -> gboolean>,
    pub is_activatable: Option<unsafe extern "C" fn(*mut GtkCellArea) -> gboolean>,
    pub activate: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkCellAreaContext,
            *mut GtkWidget,
            *const gdk::GdkRectangle,
            GtkCellRendererState,
            gboolean,
        ) -> gboolean,
    >,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellAreaClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellAreaClass @ {self:p}"))
            .field("add", &self.add)
            .field("remove", &self.remove)
            .field("foreach", &self.foreach)
            .field("foreach_alloc", &self.foreach_alloc)
            .field("event", &self.event)
            .field("render", &self.render)
            .field("apply_attributes", &self.apply_attributes)
            .field("create_context", &self.create_context)
            .field("copy_context", &self.copy_context)
            .field("get_request_mode", &self.get_request_mode)
            .field("get_preferred_width", &self.get_preferred_width)
            .field(
                "get_preferred_height_for_width",
                &self.get_preferred_height_for_width,
            )
            .field("get_preferred_height", &self.get_preferred_height)
            .field(
                "get_preferred_width_for_height",
                &self.get_preferred_width_for_height,
            )
            .field("set_cell_property", &self.set_cell_property)
            .field("get_cell_property", &self.get_cell_property)
            .field("focus", &self.focus)
            .field("is_activatable", &self.is_activatable)
            .field("activate", &self.activate)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellAreaContextClass {
    pub parent_class: gobject::GObjectClass,
    pub allocate: Option<unsafe extern "C" fn(*mut GtkCellAreaContext, c_int, c_int)>,
    pub reset: Option<unsafe extern "C" fn(*mut GtkCellAreaContext)>,
    pub get_preferred_height_for_width:
        Option<unsafe extern "C" fn(*mut GtkCellAreaContext, c_int, *mut c_int, *mut c_int)>,
    pub get_preferred_width_for_height:
        Option<unsafe extern "C" fn(*mut GtkCellAreaContext, c_int, *mut c_int, *mut c_int)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellAreaContextClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellAreaContextClass @ {self:p}"))
            .field("allocate", &self.allocate)
            .field("reset", &self.reset)
            .field(
                "get_preferred_height_for_width",
                &self.get_preferred_height_for_width,
            )
            .field(
                "get_preferred_width_for_height",
                &self.get_preferred_width_for_height,
            )
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellAreaContextPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellAreaContextPrivate = *mut _GtkCellAreaContextPrivate;

#[repr(C)]
pub struct _GtkCellAreaPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellAreaPrivate = *mut _GtkCellAreaPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellEditableIface {
    pub g_iface: gobject::GTypeInterface,
    pub editing_done: Option<unsafe extern "C" fn(*mut GtkCellEditable)>,
    pub remove_widget: Option<unsafe extern "C" fn(*mut GtkCellEditable)>,
    pub start_editing: Option<unsafe extern "C" fn(*mut GtkCellEditable, *mut gdk::GdkEvent)>,
}

impl ::std::fmt::Debug for GtkCellEditableIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellEditableIface @ {self:p}"))
            .field("editing_done", &self.editing_done)
            .field("remove_widget", &self.remove_widget)
            .field("start_editing", &self.start_editing)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellLayoutIface {
    pub g_iface: gobject::GTypeInterface,
    pub pack_start:
        Option<unsafe extern "C" fn(*mut GtkCellLayout, *mut GtkCellRenderer, gboolean)>,
    pub pack_end: Option<unsafe extern "C" fn(*mut GtkCellLayout, *mut GtkCellRenderer, gboolean)>,
    pub clear: Option<unsafe extern "C" fn(*mut GtkCellLayout)>,
    pub add_attribute: Option<
        unsafe extern "C" fn(*mut GtkCellLayout, *mut GtkCellRenderer, *const c_char, c_int),
    >,
    pub set_cell_data_func: Option<
        unsafe extern "C" fn(
            *mut GtkCellLayout,
            *mut GtkCellRenderer,
            GtkCellLayoutDataFunc,
            gpointer,
            glib::GDestroyNotify,
        ),
    >,
    pub clear_attributes: Option<unsafe extern "C" fn(*mut GtkCellLayout, *mut GtkCellRenderer)>,
    pub reorder: Option<unsafe extern "C" fn(*mut GtkCellLayout, *mut GtkCellRenderer, c_int)>,
    pub get_cells: Option<unsafe extern "C" fn(*mut GtkCellLayout) -> *mut glib::GList>,
    pub get_area: Option<unsafe extern "C" fn(*mut GtkCellLayout) -> *mut GtkCellArea>,
}

impl ::std::fmt::Debug for GtkCellLayoutIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellLayoutIface @ {self:p}"))
            .field("pack_start", &self.pack_start)
            .field("pack_end", &self.pack_end)
            .field("clear", &self.clear)
            .field("add_attribute", &self.add_attribute)
            .field("set_cell_data_func", &self.set_cell_data_func)
            .field("clear_attributes", &self.clear_attributes)
            .field("reorder", &self.reorder)
            .field("get_cells", &self.get_cells)
            .field("get_area", &self.get_area)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererAccelClass {
    pub parent_class: GtkCellRendererTextClass,
    pub accel_edited: Option<
        unsafe extern "C" fn(
            *mut GtkCellRendererAccel,
            *const c_char,
            c_uint,
            gdk::GdkModifierType,
            c_uint,
        ),
    >,
    pub accel_cleared: Option<unsafe extern "C" fn(*mut GtkCellRendererAccel, *const c_char)>,
    pub _gtk_reserved0: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellRendererAccelClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererAccelClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("accel_edited", &self.accel_edited)
            .field("accel_cleared", &self.accel_cleared)
            .field("_gtk_reserved0", &self._gtk_reserved0)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellRendererAccelPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellRendererAccelPrivate = *mut _GtkCellRendererAccelPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererClass {
    pub parent_class: gobject::GInitiallyUnownedClass,
    pub get_request_mode: Option<unsafe extern "C" fn(*mut GtkCellRenderer) -> GtkSizeRequestMode>,
    pub get_preferred_width:
        Option<unsafe extern "C" fn(*mut GtkCellRenderer, *mut GtkWidget, *mut c_int, *mut c_int)>,
    pub get_preferred_height_for_width: Option<
        unsafe extern "C" fn(*mut GtkCellRenderer, *mut GtkWidget, c_int, *mut c_int, *mut c_int),
    >,
    pub get_preferred_height:
        Option<unsafe extern "C" fn(*mut GtkCellRenderer, *mut GtkWidget, *mut c_int, *mut c_int)>,
    pub get_preferred_width_for_height: Option<
        unsafe extern "C" fn(*mut GtkCellRenderer, *mut GtkWidget, c_int, *mut c_int, *mut c_int),
    >,
    pub get_aligned_area: Option<
        unsafe extern "C" fn(
            *mut GtkCellRenderer,
            *mut GtkWidget,
            GtkCellRendererState,
            *const gdk::GdkRectangle,
            *mut gdk::GdkRectangle,
        ),
    >,
    pub get_size: Option<
        unsafe extern "C" fn(
            *mut GtkCellRenderer,
            *mut GtkWidget,
            *const gdk::GdkRectangle,
            *mut c_int,
            *mut c_int,
            *mut c_int,
            *mut c_int,
        ),
    >,
    pub render: Option<
        unsafe extern "C" fn(
            *mut GtkCellRenderer,
            *mut cairo::cairo_t,
            *mut GtkWidget,
            *const gdk::GdkRectangle,
            *const gdk::GdkRectangle,
            GtkCellRendererState,
        ),
    >,
    pub activate: Option<
        unsafe extern "C" fn(
            *mut GtkCellRenderer,
            *mut gdk::GdkEvent,
            *mut GtkWidget,
            *const c_char,
            *const gdk::GdkRectangle,
            *const gdk::GdkRectangle,
            GtkCellRendererState,
        ) -> gboolean,
    >,
    pub start_editing: Option<
        unsafe extern "C" fn(
            *mut GtkCellRenderer,
            *mut gdk::GdkEvent,
            *mut GtkWidget,
            *const c_char,
            *const gdk::GdkRectangle,
            *const gdk::GdkRectangle,
            GtkCellRendererState,
        ) -> *mut GtkCellEditable,
    >,
    pub editing_canceled: Option<unsafe extern "C" fn(*mut GtkCellRenderer)>,
    pub editing_started:
        Option<unsafe extern "C" fn(*mut GtkCellRenderer, *mut GtkCellEditable, *const c_char)>,
    pub priv_: *mut GtkCellRendererClassPrivate,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellRendererClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererClass @ {self:p}"))
            .field("get_request_mode", &self.get_request_mode)
            .field("get_preferred_width", &self.get_preferred_width)
            .field(
                "get_preferred_height_for_width",
                &self.get_preferred_height_for_width,
            )
            .field("get_preferred_height", &self.get_preferred_height)
            .field(
                "get_preferred_width_for_height",
                &self.get_preferred_width_for_height,
            )
            .field("get_aligned_area", &self.get_aligned_area)
            .field("get_size", &self.get_size)
            .field("render", &self.render)
            .field("activate", &self.activate)
            .field("start_editing", &self.start_editing)
            .field("editing_canceled", &self.editing_canceled)
            .field("editing_started", &self.editing_started)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellRendererClassPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellRendererClassPrivate = *mut _GtkCellRendererClassPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererComboClass {
    pub parent: GtkCellRendererTextClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellRendererComboClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererComboClass @ {self:p}"))
            .field("parent", &self.parent)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellRendererComboPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellRendererComboPrivate = *mut _GtkCellRendererComboPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererPixbufClass {
    pub parent_class: GtkCellRendererClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellRendererPixbufClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererPixbufClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellRendererPixbufPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellRendererPixbufPrivate = *mut _GtkCellRendererPixbufPrivate;

#[repr(C)]
pub struct _GtkCellRendererPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellRendererPrivate = *mut _GtkCellRendererPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererProgressClass {
    pub parent_class: GtkCellRendererClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellRendererProgressClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererProgressClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellRendererProgressPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellRendererProgressPrivate = *mut _GtkCellRendererProgressPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererSpinClass {
    pub parent: GtkCellRendererTextClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellRendererSpinClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererSpinClass @ {self:p}"))
            .field("parent", &self.parent)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellRendererSpinPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellRendererSpinPrivate = *mut _GtkCellRendererSpinPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererSpinnerClass {
    pub parent_class: GtkCellRendererClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellRendererSpinnerClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererSpinnerClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellRendererSpinnerPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellRendererSpinnerPrivate = *mut _GtkCellRendererSpinnerPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererTextClass {
    pub parent_class: GtkCellRendererClass,
    pub edited:
        Option<unsafe extern "C" fn(*mut GtkCellRendererText, *const c_char, *const c_char)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellRendererTextClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererTextClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("edited", &self.edited)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellRendererTextPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellRendererTextPrivate = *mut _GtkCellRendererTextPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererToggleClass {
    pub parent_class: GtkCellRendererClass,
    pub toggled: Option<unsafe extern "C" fn(*mut GtkCellRendererToggle, *const c_char)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellRendererToggleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererToggleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("toggled", &self.toggled)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellRendererTogglePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellRendererTogglePrivate = *mut _GtkCellRendererTogglePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellViewClass {
    pub parent_class: GtkWidgetClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCellViewClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellViewClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellViewPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCellViewPrivate = *mut _GtkCellViewPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCheckButtonClass {
    pub parent_class: GtkToggleButtonClass,
    pub draw_indicator: Option<unsafe extern "C" fn(*mut GtkCheckButton, *mut cairo::cairo_t)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCheckButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCheckButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("draw_indicator", &self.draw_indicator)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCheckMenuItemAccessibleClass {
    pub parent_class: GtkMenuItemAccessibleClass,
}

impl ::std::fmt::Debug for GtkCheckMenuItemAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCheckMenuItemAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCheckMenuItemAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCheckMenuItemAccessiblePrivate = *mut _GtkCheckMenuItemAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCheckMenuItemClass {
    pub parent_class: GtkMenuItemClass,
    pub toggled: Option<unsafe extern "C" fn(*mut GtkCheckMenuItem)>,
    pub draw_indicator: Option<unsafe extern "C" fn(*mut GtkCheckMenuItem, *mut cairo::cairo_t)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCheckMenuItemClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCheckMenuItemClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("toggled", &self.toggled)
            .field("draw_indicator", &self.draw_indicator)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCheckMenuItemPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCheckMenuItemPrivate = *mut _GtkCheckMenuItemPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkColorButtonClass {
    pub parent_class: GtkButtonClass,
    pub color_set: Option<unsafe extern "C" fn(*mut GtkColorButton)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkColorButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkColorButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("color_set", &self.color_set)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkColorButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkColorButtonPrivate = *mut _GtkColorButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkColorChooserDialogClass {
    pub parent_class: GtkDialogClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkColorChooserDialogClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkColorChooserDialogClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkColorChooserDialogPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkColorChooserDialogPrivate = *mut _GtkColorChooserDialogPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkColorChooserInterface {
    pub base_interface: gobject::GTypeInterface,
    pub get_rgba: Option<unsafe extern "C" fn(*mut GtkColorChooser, *const gdk::GdkRGBA)>,
    pub set_rgba: Option<unsafe extern "C" fn(*mut GtkColorChooser, *const gdk::GdkRGBA)>,
    pub add_palette: Option<
        unsafe extern "C" fn(*mut GtkColorChooser, GtkOrientation, c_int, c_int, *mut gdk::GdkRGBA),
    >,
    pub color_activated: Option<unsafe extern "C" fn(*mut GtkColorChooser, *const gdk::GdkRGBA)>,
    pub padding: [gpointer; 12],
}

impl ::std::fmt::Debug for GtkColorChooserInterface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkColorChooserInterface @ {self:p}"))
            .field("base_interface", &self.base_interface)
            .field("get_rgba", &self.get_rgba)
            .field("set_rgba", &self.set_rgba)
            .field("add_palette", &self.add_palette)
            .field("color_activated", &self.color_activated)
            .field("padding", &self.padding)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkColorChooserWidgetClass {
    pub parent_class: GtkBoxClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkColorChooserWidgetClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkColorChooserWidgetClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkColorChooserWidgetPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkColorChooserWidgetPrivate = *mut _GtkColorChooserWidgetPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkColorSelectionClass {
    pub parent_class: GtkBoxClass,
    pub color_changed: Option<unsafe extern "C" fn(*mut GtkColorSelection)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkColorSelectionClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkColorSelectionClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("color_changed", &self.color_changed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkColorSelectionDialogClass {
    pub parent_class: GtkDialogClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkColorSelectionDialogClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkColorSelectionDialogClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkColorSelectionDialogPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkColorSelectionDialogPrivate = *mut _GtkColorSelectionDialogPrivate;

#[repr(C)]
pub struct _GtkColorSelectionPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkColorSelectionPrivate = *mut _GtkColorSelectionPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkComboBoxAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkComboBoxAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkComboBoxAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkComboBoxAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkComboBoxAccessiblePrivate = *mut _GtkComboBoxAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkComboBoxClass {
    pub parent_class: GtkBinClass,
    pub changed: Option<unsafe extern "C" fn(*mut GtkComboBox)>,
    pub format_entry_text:
        Option<unsafe extern "C" fn(*mut GtkComboBox, *const c_char) -> *mut c_char>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkComboBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkComboBoxClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("changed", &self.changed)
            .field("format_entry_text", &self.format_entry_text)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkComboBoxPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkComboBoxPrivate = *mut _GtkComboBoxPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkComboBoxTextClass {
    pub parent_class: GtkComboBoxClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkComboBoxTextClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkComboBoxTextClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkComboBoxTextPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkComboBoxTextPrivate = *mut _GtkComboBoxTextPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkContainerAccessibleClass {
    pub parent_class: GtkWidgetAccessibleClass,
    pub add_gtk: Option<unsafe extern "C" fn(*mut GtkContainer, *mut GtkWidget, gpointer) -> c_int>,
    pub remove_gtk:
        Option<unsafe extern "C" fn(*mut GtkContainer, *mut GtkWidget, gpointer) -> c_int>,
}

impl ::std::fmt::Debug for GtkContainerAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkContainerAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("add_gtk", &self.add_gtk)
            .field("remove_gtk", &self.remove_gtk)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkContainerAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkContainerAccessiblePrivate = *mut _GtkContainerAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkContainerCellAccessibleClass {
    pub parent_class: GtkCellAccessibleClass,
}

impl ::std::fmt::Debug for GtkContainerCellAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkContainerCellAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkContainerCellAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkContainerCellAccessiblePrivate = *mut _GtkContainerCellAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkContainerClass {
    pub parent_class: GtkWidgetClass,
    pub add: Option<unsafe extern "C" fn(*mut GtkContainer, *mut GtkWidget)>,
    pub remove: Option<unsafe extern "C" fn(*mut GtkContainer, *mut GtkWidget)>,
    pub check_resize: Option<unsafe extern "C" fn(*mut GtkContainer)>,
    pub forall: Option<unsafe extern "C" fn(*mut GtkContainer, gboolean, GtkCallback, gpointer)>,
    pub set_focus_child: Option<unsafe extern "C" fn(*mut GtkContainer, *mut GtkWidget)>,
    pub child_type: Option<unsafe extern "C" fn(*mut GtkContainer) -> GType>,
    pub composite_name:
        Option<unsafe extern "C" fn(*mut GtkContainer, *mut GtkWidget) -> *mut c_char>,
    pub set_child_property: Option<
        unsafe extern "C" fn(
            *mut GtkContainer,
            *mut GtkWidget,
            c_uint,
            *mut gobject::GValue,
            *mut gobject::GParamSpec,
        ),
    >,
    pub get_child_property: Option<
        unsafe extern "C" fn(
            *mut GtkContainer,
            *mut GtkWidget,
            c_uint,
            *mut gobject::GValue,
            *mut gobject::GParamSpec,
        ),
    >,
    pub get_path_for_child:
        Option<unsafe extern "C" fn(*mut GtkContainer, *mut GtkWidget) -> *mut GtkWidgetPath>,
    pub _handle_border_width: c_uint,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkContainerClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkContainerClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("add", &self.add)
            .field("remove", &self.remove)
            .field("check_resize", &self.check_resize)
            .field("forall", &self.forall)
            .field("set_focus_child", &self.set_focus_child)
            .field("child_type", &self.child_type)
            .field("composite_name", &self.composite_name)
            .field("set_child_property", &self.set_child_property)
            .field("get_child_property", &self.get_child_property)
            .field("get_path_for_child", &self.get_path_for_child)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkContainerPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkContainerPrivate = *mut _GtkContainerPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCssProviderClass {
    pub parent_class: gobject::GObjectClass,
    pub parsing_error:
        Option<unsafe extern "C" fn(*mut GtkCssProvider, *mut GtkCssSection, *const glib::GError)>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkCssProviderClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCssProviderClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("parsing_error", &self.parsing_error)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCssProviderPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkCssProviderPrivate = *mut _GtkCssProviderPrivate;

#[repr(C)]
pub struct GtkCssSection {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkCssSection {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCssSection @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkDialogClass {
    pub parent_class: GtkWindowClass,
    pub response: Option<unsafe extern "C" fn(*mut GtkDialog, GtkResponseType)>,
    pub close: Option<unsafe extern "C" fn(*mut GtkDialog)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkDialogClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkDialogClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("response", &self.response)
            .field("close", &self.close)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkDialogPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkDialogPrivate = *mut _GtkDialogPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkDrawingAreaClass {
    pub parent_class: GtkWidgetClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkDrawingAreaClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkDrawingAreaClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkEditableInterface {
    pub base_iface: gobject::GTypeInterface,
    pub insert_text:
        Option<unsafe extern "C" fn(*mut GtkEditable, *const c_char, c_int, *mut c_int)>,
    pub delete_text: Option<unsafe extern "C" fn(*mut GtkEditable, c_int, c_int)>,
    pub changed: Option<unsafe extern "C" fn(*mut GtkEditable)>,
    pub do_insert_text:
        Option<unsafe extern "C" fn(*mut GtkEditable, *const c_char, c_int, *mut c_int)>,
    pub do_delete_text: Option<unsafe extern "C" fn(*mut GtkEditable, c_int, c_int)>,
    pub get_chars: Option<unsafe extern "C" fn(*mut GtkEditable, c_int, c_int) -> *mut c_char>,
    pub set_selection_bounds: Option<unsafe extern "C" fn(*mut GtkEditable, c_int, c_int)>,
    pub get_selection_bounds:
        Option<unsafe extern "C" fn(*mut GtkEditable, *mut c_int, *mut c_int) -> gboolean>,
    pub set_position: Option<unsafe extern "C" fn(*mut GtkEditable, c_int)>,
    pub get_position: Option<unsafe extern "C" fn(*mut GtkEditable) -> c_int>,
}

impl ::std::fmt::Debug for GtkEditableInterface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEditableInterface @ {self:p}"))
            .field("base_iface", &self.base_iface)
            .field("insert_text", &self.insert_text)
            .field("delete_text", &self.delete_text)
            .field("changed", &self.changed)
            .field("do_insert_text", &self.do_insert_text)
            .field("do_delete_text", &self.do_delete_text)
            .field("get_chars", &self.get_chars)
            .field("set_selection_bounds", &self.set_selection_bounds)
            .field("get_selection_bounds", &self.get_selection_bounds)
            .field("set_position", &self.set_position)
            .field("get_position", &self.get_position)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkEntryAccessibleClass {
    pub parent_class: GtkWidgetAccessibleClass,
}

impl ::std::fmt::Debug for GtkEntryAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEntryAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkEntryAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkEntryAccessiblePrivate = *mut _GtkEntryAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkEntryBufferClass {
    pub parent_class: gobject::GObjectClass,
    pub inserted_text:
        Option<unsafe extern "C" fn(*mut GtkEntryBuffer, c_uint, *const c_char, c_uint)>,
    pub deleted_text: Option<unsafe extern "C" fn(*mut GtkEntryBuffer, c_uint, c_uint)>,
    pub get_text: Option<unsafe extern "C" fn(*mut GtkEntryBuffer, *mut size_t) -> *const c_char>,
    pub get_length: Option<unsafe extern "C" fn(*mut GtkEntryBuffer) -> c_uint>,
    pub insert_text:
        Option<unsafe extern "C" fn(*mut GtkEntryBuffer, c_uint, *const c_char, c_uint) -> c_uint>,
    pub delete_text: Option<unsafe extern "C" fn(*mut GtkEntryBuffer, c_uint, c_uint) -> c_uint>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkEntryBufferClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEntryBufferClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("inserted_text", &self.inserted_text)
            .field("deleted_text", &self.deleted_text)
            .field("get_text", &self.get_text)
            .field("get_length", &self.get_length)
            .field("insert_text", &self.insert_text)
            .field("delete_text", &self.delete_text)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkEntryBufferPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkEntryBufferPrivate = *mut _GtkEntryBufferPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkEntryClass {
    pub parent_class: GtkWidgetClass,
    pub populate_popup: Option<unsafe extern "C" fn(*mut GtkEntry, *mut GtkWidget)>,
    pub activate: Option<unsafe extern "C" fn(*mut GtkEntry)>,
    pub move_cursor: Option<unsafe extern "C" fn(*mut GtkEntry, GtkMovementStep, c_int, gboolean)>,
    pub insert_at_cursor: Option<unsafe extern "C" fn(*mut GtkEntry, *const c_char)>,
    pub delete_from_cursor: Option<unsafe extern "C" fn(*mut GtkEntry, GtkDeleteType, c_int)>,
    pub backspace: Option<unsafe extern "C" fn(*mut GtkEntry)>,
    pub cut_clipboard: Option<unsafe extern "C" fn(*mut GtkEntry)>,
    pub copy_clipboard: Option<unsafe extern "C" fn(*mut GtkEntry)>,
    pub paste_clipboard: Option<unsafe extern "C" fn(*mut GtkEntry)>,
    pub toggle_overwrite: Option<unsafe extern "C" fn(*mut GtkEntry)>,
    pub get_text_area_size:
        Option<unsafe extern "C" fn(*mut GtkEntry, *mut c_int, *mut c_int, *mut c_int, *mut c_int)>,
    pub get_frame_size:
        Option<unsafe extern "C" fn(*mut GtkEntry, *mut c_int, *mut c_int, *mut c_int, *mut c_int)>,
    pub insert_emoji: Option<unsafe extern "C" fn(*mut GtkEntry)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkEntryClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEntryClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("populate_popup", &self.populate_popup)
            .field("activate", &self.activate)
            .field("move_cursor", &self.move_cursor)
            .field("insert_at_cursor", &self.insert_at_cursor)
            .field("delete_from_cursor", &self.delete_from_cursor)
            .field("backspace", &self.backspace)
            .field("cut_clipboard", &self.cut_clipboard)
            .field("copy_clipboard", &self.copy_clipboard)
            .field("paste_clipboard", &self.paste_clipboard)
            .field("toggle_overwrite", &self.toggle_overwrite)
            .field("get_text_area_size", &self.get_text_area_size)
            .field("get_frame_size", &self.get_frame_size)
            .field("insert_emoji", &self.insert_emoji)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkEntryCompletionClass {
    pub parent_class: gobject::GObjectClass,
    pub match_selected: Option<
        unsafe extern "C" fn(
            *mut GtkEntryCompletion,
            *mut GtkTreeModel,
            *mut GtkTreeIter,
        ) -> gboolean,
    >,
    pub action_activated: Option<unsafe extern "C" fn(*mut GtkEntryCompletion, c_int)>,
    pub insert_prefix:
        Option<unsafe extern "C" fn(*mut GtkEntryCompletion, *const c_char) -> gboolean>,
    pub cursor_on_match: Option<
        unsafe extern "C" fn(
            *mut GtkEntryCompletion,
            *mut GtkTreeModel,
            *mut GtkTreeIter,
        ) -> gboolean,
    >,
    pub no_matches: Option<unsafe extern "C" fn(*mut GtkEntryCompletion)>,
    pub _gtk_reserved0: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkEntryCompletionClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEntryCompletionClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("match_selected", &self.match_selected)
            .field("action_activated", &self.action_activated)
            .field("insert_prefix", &self.insert_prefix)
            .field("cursor_on_match", &self.cursor_on_match)
            .field("no_matches", &self.no_matches)
            .field("_gtk_reserved0", &self._gtk_reserved0)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkEntryCompletionPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkEntryCompletionPrivate = *mut _GtkEntryCompletionPrivate;

#[repr(C)]
pub struct _GtkEntryPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkEntryPrivate = *mut _GtkEntryPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkEventBoxClass {
    pub parent_class: GtkBinClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkEventBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEventBoxClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkEventBoxPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkEventBoxPrivate = *mut _GtkEventBoxPrivate;

#[repr(C)]
pub struct _GtkEventControllerClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkEventControllerClass = *mut _GtkEventControllerClass;

#[repr(C)]
pub struct _GtkEventControllerKeyClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkEventControllerKeyClass = *mut _GtkEventControllerKeyClass;

#[repr(C)]
pub struct _GtkEventControllerMotionClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkEventControllerMotionClass = *mut _GtkEventControllerMotionClass;

#[repr(C)]
pub struct _GtkEventControllerScrollClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkEventControllerScrollClass = *mut _GtkEventControllerScrollClass;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkExpanderAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkExpanderAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkExpanderAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkExpanderAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkExpanderAccessiblePrivate = *mut _GtkExpanderAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkExpanderClass {
    pub parent_class: GtkBinClass,
    pub activate: Option<unsafe extern "C" fn(*mut GtkExpander)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkExpanderClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkExpanderClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("activate", &self.activate)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkExpanderPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkExpanderPrivate = *mut _GtkExpanderPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFileChooserButtonClass {
    pub parent_class: GtkBoxClass,
    pub file_set: Option<unsafe extern "C" fn(*mut GtkFileChooserButton)>,
    pub __gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub __gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub __gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub __gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFileChooserButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileChooserButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("file_set", &self.file_set)
            .field("__gtk_reserved1", &self.__gtk_reserved1)
            .field("__gtk_reserved2", &self.__gtk_reserved2)
            .field("__gtk_reserved3", &self.__gtk_reserved3)
            .field("__gtk_reserved4", &self.__gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFileChooserButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFileChooserButtonPrivate = *mut _GtkFileChooserButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFileChooserDialogClass {
    pub parent_class: GtkDialogClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFileChooserDialogClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileChooserDialogClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFileChooserDialogPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFileChooserDialogPrivate = *mut _GtkFileChooserDialogPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFileChooserNativeClass {
    pub parent_class: GtkNativeDialogClass,
}

impl ::std::fmt::Debug for GtkFileChooserNativeClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileChooserNativeClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFileChooserWidgetAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkFileChooserWidgetAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileChooserWidgetAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFileChooserWidgetAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFileChooserWidgetAccessiblePrivate = *mut _GtkFileChooserWidgetAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFileChooserWidgetClass {
    pub parent_class: GtkBoxClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFileChooserWidgetClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileChooserWidgetClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFileChooserWidgetPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFileChooserWidgetPrivate = *mut _GtkFileChooserWidgetPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFileFilterInfo {
    pub contains: GtkFileFilterFlags,
    pub filename: *const c_char,
    pub uri: *const c_char,
    pub display_name: *const c_char,
    pub mime_type: *const c_char,
}

impl ::std::fmt::Debug for GtkFileFilterInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileFilterInfo @ {self:p}"))
            .field("contains", &self.contains)
            .field("filename", &self.filename)
            .field("uri", &self.uri)
            .field("display_name", &self.display_name)
            .field("mime_type", &self.mime_type)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFixedChild {
    pub widget: *mut GtkWidget,
    pub x: c_int,
    pub y: c_int,
}

impl ::std::fmt::Debug for GtkFixedChild {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFixedChild @ {self:p}"))
            .field("widget", &self.widget)
            .field("x", &self.x)
            .field("y", &self.y)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFixedClass {
    pub parent_class: GtkContainerClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFixedClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFixedClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFixedPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFixedPrivate = *mut _GtkFixedPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFlowBoxAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkFlowBoxAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFlowBoxAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFlowBoxAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFlowBoxAccessiblePrivate = *mut _GtkFlowBoxAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFlowBoxChildAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkFlowBoxChildAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFlowBoxChildAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFlowBoxChildClass {
    pub parent_class: GtkBinClass,
    pub activate: Option<unsafe extern "C" fn(*mut GtkFlowBoxChild)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFlowBoxChildClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFlowBoxChildClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("activate", &self.activate)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFlowBoxClass {
    pub parent_class: GtkContainerClass,
    pub child_activated: Option<unsafe extern "C" fn(*mut GtkFlowBox, *mut GtkFlowBoxChild)>,
    pub selected_children_changed: Option<unsafe extern "C" fn(*mut GtkFlowBox)>,
    pub activate_cursor_child: Option<unsafe extern "C" fn(*mut GtkFlowBox)>,
    pub toggle_cursor_child: Option<unsafe extern "C" fn(*mut GtkFlowBox)>,
    pub move_cursor:
        Option<unsafe extern "C" fn(*mut GtkFlowBox, GtkMovementStep, c_int) -> gboolean>,
    pub select_all: Option<unsafe extern "C" fn(*mut GtkFlowBox)>,
    pub unselect_all: Option<unsafe extern "C" fn(*mut GtkFlowBox)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFlowBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFlowBoxClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("child_activated", &self.child_activated)
            .field("selected_children_changed", &self.selected_children_changed)
            .field("activate_cursor_child", &self.activate_cursor_child)
            .field("toggle_cursor_child", &self.toggle_cursor_child)
            .field("move_cursor", &self.move_cursor)
            .field("select_all", &self.select_all)
            .field("unselect_all", &self.unselect_all)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFontButtonClass {
    pub parent_class: GtkButtonClass,
    pub font_set: Option<unsafe extern "C" fn(*mut GtkFontButton)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFontButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFontButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("font_set", &self.font_set)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFontButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFontButtonPrivate = *mut _GtkFontButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFontChooserDialogClass {
    pub parent_class: GtkDialogClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFontChooserDialogClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFontChooserDialogClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFontChooserDialogPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFontChooserDialogPrivate = *mut _GtkFontChooserDialogPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFontChooserIface {
    pub base_iface: gobject::GTypeInterface,
    pub get_font_family:
        Option<unsafe extern "C" fn(*mut GtkFontChooser) -> *mut pango::PangoFontFamily>,
    pub get_font_face:
        Option<unsafe extern "C" fn(*mut GtkFontChooser) -> *mut pango::PangoFontFace>,
    pub get_font_size: Option<unsafe extern "C" fn(*mut GtkFontChooser) -> c_int>,
    pub set_filter_func: Option<
        unsafe extern "C" fn(
            *mut GtkFontChooser,
            GtkFontFilterFunc,
            gpointer,
            glib::GDestroyNotify,
        ),
    >,
    pub font_activated: Option<unsafe extern "C" fn(*mut GtkFontChooser, *const c_char)>,
    pub set_font_map: Option<unsafe extern "C" fn(*mut GtkFontChooser, *mut pango::PangoFontMap)>,
    pub get_font_map: Option<unsafe extern "C" fn(*mut GtkFontChooser) -> *mut pango::PangoFontMap>,
    pub padding: [gpointer; 10],
}

impl ::std::fmt::Debug for GtkFontChooserIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFontChooserIface @ {self:p}"))
            .field("base_iface", &self.base_iface)
            .field("get_font_family", &self.get_font_family)
            .field("get_font_face", &self.get_font_face)
            .field("get_font_size", &self.get_font_size)
            .field("set_filter_func", &self.set_filter_func)
            .field("font_activated", &self.font_activated)
            .field("set_font_map", &self.set_font_map)
            .field("get_font_map", &self.get_font_map)
            .field("padding", &self.padding)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFontChooserWidgetClass {
    pub parent_class: GtkBoxClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFontChooserWidgetClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFontChooserWidgetClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFontChooserWidgetPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFontChooserWidgetPrivate = *mut _GtkFontChooserWidgetPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFontSelectionClass {
    pub parent_class: GtkBoxClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFontSelectionClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFontSelectionClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFontSelectionDialogClass {
    pub parent_class: GtkDialogClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFontSelectionDialogClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFontSelectionDialogClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFontSelectionDialogPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFontSelectionDialogPrivate = *mut _GtkFontSelectionDialogPrivate;

#[repr(C)]
pub struct _GtkFontSelectionPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFontSelectionPrivate = *mut _GtkFontSelectionPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFrameAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkFrameAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFrameAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFrameAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFrameAccessiblePrivate = *mut _GtkFrameAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFrameClass {
    pub parent_class: GtkBinClass,
    pub compute_child_allocation: Option<unsafe extern "C" fn(*mut GtkFrame, *mut GtkAllocation)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkFrameClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFrameClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("compute_child_allocation", &self.compute_child_allocation)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkFramePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkFramePrivate = *mut _GtkFramePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkGLAreaClass {
    pub parent_class: GtkWidgetClass,
    pub render: Option<unsafe extern "C" fn(*mut GtkGLArea, *mut gdk::GdkGLContext) -> gboolean>,
    pub resize: Option<unsafe extern "C" fn(*mut GtkGLArea, c_int, c_int)>,
    pub create_context: Option<unsafe extern "C" fn(*mut GtkGLArea) -> *mut gdk::GdkGLContext>,
    pub _padding: [gpointer; 6],
}

impl ::std::fmt::Debug for GtkGLAreaClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGLAreaClass @ {self:p}"))
            .field("render", &self.render)
            .field("resize", &self.resize)
            .field("create_context", &self.create_context)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkGestureClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkGestureClass = *mut _GtkGestureClass;

#[repr(C)]
pub struct _GtkGestureDragClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkGestureDragClass = *mut _GtkGestureDragClass;

#[repr(C)]
pub struct _GtkGestureLongPressClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkGestureLongPressClass = *mut _GtkGestureLongPressClass;

#[repr(C)]
pub struct _GtkGestureMultiPressClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkGestureMultiPressClass = *mut _GtkGestureMultiPressClass;

#[repr(C)]
pub struct _GtkGesturePanClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkGesturePanClass = *mut _GtkGesturePanClass;

#[repr(C)]
pub struct _GtkGestureRotateClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkGestureRotateClass = *mut _GtkGestureRotateClass;

#[repr(C)]
pub struct _GtkGestureSingleClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkGestureSingleClass = *mut _GtkGestureSingleClass;

#[repr(C)]
pub struct _GtkGestureStylusClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkGestureStylusClass = *mut _GtkGestureStylusClass;

#[repr(C)]
pub struct _GtkGestureSwipeClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkGestureSwipeClass = *mut _GtkGestureSwipeClass;

#[repr(C)]
pub struct _GtkGestureZoomClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkGestureZoomClass = *mut _GtkGestureZoomClass;

#[repr(C)]
pub struct GtkGradient {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkGradient {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGradient @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkGridClass {
    pub parent_class: GtkContainerClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkGridClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGridClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkGridPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkGridPrivate = *mut _GtkGridPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHBoxClass {
    pub parent_class: GtkBoxClass,
}

impl ::std::fmt::Debug for GtkHBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHBoxClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHButtonBoxClass {
    pub parent_class: GtkButtonBoxClass,
}

impl ::std::fmt::Debug for GtkHButtonBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHButtonBoxClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHPanedClass {
    pub parent_class: GtkPanedClass,
}

impl ::std::fmt::Debug for GtkHPanedClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHPanedClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHSVClass {
    pub parent_class: GtkWidgetClass,
    pub changed: Option<unsafe extern "C" fn(*mut GtkHSV)>,
    pub move_: Option<unsafe extern "C" fn(*mut GtkHSV, GtkDirectionType)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkHSVClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHSVClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("changed", &self.changed)
            .field("move_", &self.move_)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkHSVPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkHSVPrivate = *mut _GtkHSVPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHScaleClass {
    pub parent_class: GtkScaleClass,
}

impl ::std::fmt::Debug for GtkHScaleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHScaleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHScrollbarClass {
    pub parent_class: GtkScrollbarClass,
}

impl ::std::fmt::Debug for GtkHScrollbarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHScrollbarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHSeparatorClass {
    pub parent_class: GtkSeparatorClass,
}

impl ::std::fmt::Debug for GtkHSeparatorClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHSeparatorClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHandleBoxClass {
    pub parent_class: GtkBinClass,
    pub child_attached: Option<unsafe extern "C" fn(*mut GtkHandleBox, *mut GtkWidget)>,
    pub child_detached: Option<unsafe extern "C" fn(*mut GtkHandleBox, *mut GtkWidget)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkHandleBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHandleBoxClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("child_attached", &self.child_attached)
            .field("child_detached", &self.child_detached)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkHandleBoxPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkHandleBoxPrivate = *mut _GtkHandleBoxPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHeaderBarAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkHeaderBarAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHeaderBarAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkHeaderBarAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkHeaderBarAccessiblePrivate = *mut _GtkHeaderBarAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHeaderBarClass {
    pub parent_class: GtkContainerClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkHeaderBarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHeaderBarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkHeaderBarPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkHeaderBarPrivate = *mut _GtkHeaderBarPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIMContextClass {
    pub parent_class: gobject::GObjectClass,
    pub preedit_start: Option<unsafe extern "C" fn(*mut GtkIMContext)>,
    pub preedit_end: Option<unsafe extern "C" fn(*mut GtkIMContext)>,
    pub preedit_changed: Option<unsafe extern "C" fn(*mut GtkIMContext)>,
    pub commit: Option<unsafe extern "C" fn(*mut GtkIMContext, *const c_char)>,
    pub retrieve_surrounding: Option<unsafe extern "C" fn(*mut GtkIMContext) -> gboolean>,
    pub delete_surrounding:
        Option<unsafe extern "C" fn(*mut GtkIMContext, c_int, c_int) -> gboolean>,
    pub set_client_window: Option<unsafe extern "C" fn(*mut GtkIMContext, *mut gdk::GdkWindow)>,
    pub get_preedit_string: Option<
        unsafe extern "C" fn(
            *mut GtkIMContext,
            *mut *mut c_char,
            *mut *mut pango::PangoAttrList,
            *mut c_int,
        ),
    >,
    pub filter_keypress:
        Option<unsafe extern "C" fn(*mut GtkIMContext, *mut gdk::GdkEventKey) -> gboolean>,
    pub focus_in: Option<unsafe extern "C" fn(*mut GtkIMContext)>,
    pub focus_out: Option<unsafe extern "C" fn(*mut GtkIMContext)>,
    pub reset: Option<unsafe extern "C" fn(*mut GtkIMContext)>,
    pub set_cursor_location:
        Option<unsafe extern "C" fn(*mut GtkIMContext, *mut gdk::GdkRectangle)>,
    pub set_use_preedit: Option<unsafe extern "C" fn(*mut GtkIMContext, gboolean)>,
    pub set_surrounding:
        Option<unsafe extern "C" fn(*mut GtkIMContext, *const c_char, c_int, c_int)>,
    pub get_surrounding:
        Option<unsafe extern "C" fn(*mut GtkIMContext, *mut *mut c_char, *mut c_int) -> gboolean>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkIMContextClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIMContextClass @ {self:p}"))
            .field("preedit_start", &self.preedit_start)
            .field("preedit_end", &self.preedit_end)
            .field("preedit_changed", &self.preedit_changed)
            .field("commit", &self.commit)
            .field("retrieve_surrounding", &self.retrieve_surrounding)
            .field("delete_surrounding", &self.delete_surrounding)
            .field("set_client_window", &self.set_client_window)
            .field("get_preedit_string", &self.get_preedit_string)
            .field("filter_keypress", &self.filter_keypress)
            .field("focus_in", &self.focus_in)
            .field("focus_out", &self.focus_out)
            .field("reset", &self.reset)
            .field("set_cursor_location", &self.set_cursor_location)
            .field("set_use_preedit", &self.set_use_preedit)
            .field("set_surrounding", &self.set_surrounding)
            .field("get_surrounding", &self.get_surrounding)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIMContextInfo {
    pub context_id: *const c_char,
    pub context_name: *const c_char,
    pub domain: *const c_char,
    pub domain_dirname: *const c_char,
    pub default_locales: *const c_char,
}

impl ::std::fmt::Debug for GtkIMContextInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIMContextInfo @ {self:p}"))
            .field("context_id", &self.context_id)
            .field("context_name", &self.context_name)
            .field("domain", &self.domain)
            .field("domain_dirname", &self.domain_dirname)
            .field("default_locales", &self.default_locales)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIMContextSimpleClass {
    pub parent_class: GtkIMContextClass,
}

impl ::std::fmt::Debug for GtkIMContextSimpleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIMContextSimpleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkIMContextSimplePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkIMContextSimplePrivate = *mut _GtkIMContextSimplePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIMMulticontextClass {
    pub parent_class: GtkIMContextClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkIMMulticontextClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIMMulticontextClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkIMMulticontextPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkIMMulticontextPrivate = *mut _GtkIMMulticontextPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIconFactoryClass {
    pub parent_class: gobject::GObjectClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkIconFactoryClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIconFactoryClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkIconFactoryPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkIconFactoryPrivate = *mut _GtkIconFactoryPrivate;

#[repr(C)]
pub struct _GtkIconInfoClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkIconInfoClass = *mut _GtkIconInfoClass;

#[repr(C)]
pub struct GtkIconSet {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkIconSet {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIconSet @ {self:p}")).finish()
    }
}

#[repr(C)]
pub struct GtkIconSource {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkIconSource {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIconSource @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIconThemeClass {
    pub parent_class: gobject::GObjectClass,
    pub changed: Option<unsafe extern "C" fn(*mut GtkIconTheme)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkIconThemeClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIconThemeClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("changed", &self.changed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkIconThemePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkIconThemePrivate = *mut _GtkIconThemePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIconViewAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkIconViewAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIconViewAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkIconViewAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkIconViewAccessiblePrivate = *mut _GtkIconViewAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIconViewClass {
    pub parent_class: GtkContainerClass,
    pub item_activated: Option<unsafe extern "C" fn(*mut GtkIconView, *mut GtkTreePath)>,
    pub selection_changed: Option<unsafe extern "C" fn(*mut GtkIconView)>,
    pub select_all: Option<unsafe extern "C" fn(*mut GtkIconView)>,
    pub unselect_all: Option<unsafe extern "C" fn(*mut GtkIconView)>,
    pub select_cursor_item: Option<unsafe extern "C" fn(*mut GtkIconView)>,
    pub toggle_cursor_item: Option<unsafe extern "C" fn(*mut GtkIconView)>,
    pub move_cursor:
        Option<unsafe extern "C" fn(*mut GtkIconView, GtkMovementStep, c_int) -> gboolean>,
    pub activate_cursor_item: Option<unsafe extern "C" fn(*mut GtkIconView) -> gboolean>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkIconViewClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIconViewClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("item_activated", &self.item_activated)
            .field("selection_changed", &self.selection_changed)
            .field("select_all", &self.select_all)
            .field("unselect_all", &self.unselect_all)
            .field("select_cursor_item", &self.select_cursor_item)
            .field("toggle_cursor_item", &self.toggle_cursor_item)
            .field("move_cursor", &self.move_cursor)
            .field("activate_cursor_item", &self.activate_cursor_item)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkIconViewPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkIconViewPrivate = *mut _GtkIconViewPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkImageAccessibleClass {
    pub parent_class: GtkWidgetAccessibleClass,
}

impl ::std::fmt::Debug for GtkImageAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkImageAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkImageAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkImageAccessiblePrivate = *mut _GtkImageAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkImageCellAccessibleClass {
    pub parent_class: GtkRendererCellAccessibleClass,
}

impl ::std::fmt::Debug for GtkImageCellAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkImageCellAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkImageCellAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkImageCellAccessiblePrivate = *mut _GtkImageCellAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkImageClass {
    pub parent_class: GtkMiscClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkImageClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkImageClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkImageMenuItemClass {
    pub parent_class: GtkMenuItemClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkImageMenuItemClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkImageMenuItemClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkImageMenuItemPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkImageMenuItemPrivate = *mut _GtkImageMenuItemPrivate;

#[repr(C)]
pub struct _GtkImagePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkImagePrivate = *mut _GtkImagePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkInfoBarClass {
    pub parent_class: GtkBoxClass,
    pub response: Option<unsafe extern "C" fn(*mut GtkInfoBar, GtkResponseType)>,
    pub close: Option<unsafe extern "C" fn(*mut GtkInfoBar)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkInfoBarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkInfoBarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("response", &self.response)
            .field("close", &self.close)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkInfoBarPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkInfoBarPrivate = *mut _GtkInfoBarPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkInvisibleClass {
    pub parent_class: GtkWidgetClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkInvisibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkInvisibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkInvisiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkInvisiblePrivate = *mut _GtkInvisiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLabelAccessibleClass {
    pub parent_class: GtkWidgetAccessibleClass,
}

impl ::std::fmt::Debug for GtkLabelAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLabelAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkLabelAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkLabelAccessiblePrivate = *mut _GtkLabelAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLabelClass {
    pub parent_class: GtkMiscClass,
    pub move_cursor: Option<unsafe extern "C" fn(*mut GtkLabel, GtkMovementStep, c_int, gboolean)>,
    pub copy_clipboard: Option<unsafe extern "C" fn(*mut GtkLabel)>,
    pub populate_popup: Option<unsafe extern "C" fn(*mut GtkLabel, *mut GtkMenu)>,
    pub activate_link: Option<unsafe extern "C" fn(*mut GtkLabel, *const c_char) -> gboolean>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkLabelClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLabelClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("move_cursor", &self.move_cursor)
            .field("copy_clipboard", &self.copy_clipboard)
            .field("populate_popup", &self.populate_popup)
            .field("activate_link", &self.activate_link)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkLabelPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkLabelPrivate = *mut _GtkLabelPrivate;

#[repr(C)]
pub struct _GtkLabelSelectionInfo {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkLabelSelectionInfo = *mut _GtkLabelSelectionInfo;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLayoutClass {
    pub parent_class: GtkContainerClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkLayoutClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLayoutClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkLayoutPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkLayoutPrivate = *mut _GtkLayoutPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLevelBarAccessibleClass {
    pub parent_class: GtkWidgetAccessibleClass,
}

impl ::std::fmt::Debug for GtkLevelBarAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLevelBarAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkLevelBarAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkLevelBarAccessiblePrivate = *mut _GtkLevelBarAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLevelBarClass {
    pub parent_class: GtkWidgetClass,
    pub offset_changed: Option<unsafe extern "C" fn(*mut GtkLevelBar, *const c_char)>,
    pub padding: [gpointer; 16],
}

impl ::std::fmt::Debug for GtkLevelBarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLevelBarClass @ {self:p}"))
            .field("offset_changed", &self.offset_changed)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkLevelBarPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkLevelBarPrivate = *mut _GtkLevelBarPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLinkButtonAccessibleClass {
    pub parent_class: GtkButtonAccessibleClass,
}

impl ::std::fmt::Debug for GtkLinkButtonAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLinkButtonAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkLinkButtonAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkLinkButtonAccessiblePrivate = *mut _GtkLinkButtonAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLinkButtonClass {
    pub parent_class: GtkButtonClass,
    pub activate_link: Option<unsafe extern "C" fn(*mut GtkLinkButton) -> gboolean>,
    pub _gtk_padding1: Option<unsafe extern "C" fn()>,
    pub _gtk_padding2: Option<unsafe extern "C" fn()>,
    pub _gtk_padding3: Option<unsafe extern "C" fn()>,
    pub _gtk_padding4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkLinkButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLinkButtonClass @ {self:p}"))
            .field("activate_link", &self.activate_link)
            .field("_gtk_padding1", &self._gtk_padding1)
            .field("_gtk_padding2", &self._gtk_padding2)
            .field("_gtk_padding3", &self._gtk_padding3)
            .field("_gtk_padding4", &self._gtk_padding4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkLinkButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkLinkButtonPrivate = *mut _GtkLinkButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkListBoxAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkListBoxAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkListBoxAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkListBoxAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkListBoxAccessiblePrivate = *mut _GtkListBoxAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkListBoxClass {
    pub parent_class: GtkContainerClass,
    pub row_selected: Option<unsafe extern "C" fn(*mut GtkListBox, *mut GtkListBoxRow)>,
    pub row_activated: Option<unsafe extern "C" fn(*mut GtkListBox, *mut GtkListBoxRow)>,
    pub activate_cursor_row: Option<unsafe extern "C" fn(*mut GtkListBox)>,
    pub toggle_cursor_row: Option<unsafe extern "C" fn(*mut GtkListBox)>,
    pub move_cursor: Option<unsafe extern "C" fn(*mut GtkListBox, GtkMovementStep, c_int)>,
    pub selected_rows_changed: Option<unsafe extern "C" fn(*mut GtkListBox)>,
    pub select_all: Option<unsafe extern "C" fn(*mut GtkListBox)>,
    pub unselect_all: Option<unsafe extern "C" fn(*mut GtkListBox)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkListBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkListBoxClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("row_selected", &self.row_selected)
            .field("row_activated", &self.row_activated)
            .field("activate_cursor_row", &self.activate_cursor_row)
            .field("toggle_cursor_row", &self.toggle_cursor_row)
            .field("move_cursor", &self.move_cursor)
            .field("selected_rows_changed", &self.selected_rows_changed)
            .field("select_all", &self.select_all)
            .field("unselect_all", &self.unselect_all)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkListBoxRowAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkListBoxRowAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkListBoxRowAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkListBoxRowClass {
    pub parent_class: GtkBinClass,
    pub activate: Option<unsafe extern "C" fn(*mut GtkListBoxRow)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkListBoxRowClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkListBoxRowClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("activate", &self.activate)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkListStoreClass {
    pub parent_class: gobject::GObjectClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkListStoreClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkListStoreClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkListStorePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkListStorePrivate = *mut _GtkListStorePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLockButtonAccessibleClass {
    pub parent_class: GtkButtonAccessibleClass,
}

impl ::std::fmt::Debug for GtkLockButtonAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLockButtonAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkLockButtonAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkLockButtonAccessiblePrivate = *mut _GtkLockButtonAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLockButtonClass {
    pub parent_class: GtkButtonClass,
    pub reserved0: Option<unsafe extern "C" fn()>,
    pub reserved1: Option<unsafe extern "C" fn()>,
    pub reserved2: Option<unsafe extern "C" fn()>,
    pub reserved3: Option<unsafe extern "C" fn()>,
    pub reserved4: Option<unsafe extern "C" fn()>,
    pub reserved5: Option<unsafe extern "C" fn()>,
    pub reserved6: Option<unsafe extern "C" fn()>,
    pub reserved7: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkLockButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLockButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("reserved0", &self.reserved0)
            .field("reserved1", &self.reserved1)
            .field("reserved2", &self.reserved2)
            .field("reserved3", &self.reserved3)
            .field("reserved4", &self.reserved4)
            .field("reserved5", &self.reserved5)
            .field("reserved6", &self.reserved6)
            .field("reserved7", &self.reserved7)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkLockButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkLockButtonPrivate = *mut _GtkLockButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuAccessibleClass {
    pub parent_class: GtkMenuShellAccessibleClass,
}

impl ::std::fmt::Debug for GtkMenuAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMenuAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMenuAccessiblePrivate = *mut _GtkMenuAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuBarClass {
    pub parent_class: GtkMenuShellClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkMenuBarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuBarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMenuBarPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMenuBarPrivate = *mut _GtkMenuBarPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuButtonAccessibleClass {
    pub parent_class: GtkToggleButtonAccessibleClass,
}

impl ::std::fmt::Debug for GtkMenuButtonAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuButtonAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMenuButtonAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMenuButtonAccessiblePrivate = *mut _GtkMenuButtonAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuButtonClass {
    pub parent_class: GtkToggleButtonClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkMenuButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMenuButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMenuButtonPrivate = *mut _GtkMenuButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuClass {
    pub parent_class: GtkMenuShellClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkMenuClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuItemAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkMenuItemAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuItemAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMenuItemAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMenuItemAccessiblePrivate = *mut _GtkMenuItemAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuItemClass {
    pub parent_class: GtkBinClass,
    pub hide_on_activate: c_uint,
    pub activate: Option<unsafe extern "C" fn(*mut GtkMenuItem)>,
    pub activate_item: Option<unsafe extern "C" fn(*mut GtkMenuItem)>,
    pub toggle_size_request: Option<unsafe extern "C" fn(*mut GtkMenuItem, c_int)>,
    pub toggle_size_allocate: Option<unsafe extern "C" fn(*mut GtkMenuItem, c_int)>,
    pub set_label: Option<unsafe extern "C" fn(*mut GtkMenuItem, *const c_char)>,
    pub get_label: Option<unsafe extern "C" fn(*mut GtkMenuItem) -> *const c_char>,
    pub select: Option<unsafe extern "C" fn(*mut GtkMenuItem)>,
    pub deselect: Option<unsafe extern "C" fn(*mut GtkMenuItem)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkMenuItemClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuItemClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("hide_on_activate", &self.hide_on_activate)
            .field("activate", &self.activate)
            .field("activate_item", &self.activate_item)
            .field("toggle_size_request", &self.toggle_size_request)
            .field("toggle_size_allocate", &self.toggle_size_allocate)
            .field("set_label", &self.set_label)
            .field("get_label", &self.get_label)
            .field("select", &self.select)
            .field("deselect", &self.deselect)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMenuItemPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMenuItemPrivate = *mut _GtkMenuItemPrivate;

#[repr(C)]
pub struct _GtkMenuPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMenuPrivate = *mut _GtkMenuPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuShellAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkMenuShellAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuShellAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMenuShellAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMenuShellAccessiblePrivate = *mut _GtkMenuShellAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuShellClass {
    pub parent_class: GtkContainerClass,
    pub submenu_placement: c_uint,
    pub deactivate: Option<unsafe extern "C" fn(*mut GtkMenuShell)>,
    pub selection_done: Option<unsafe extern "C" fn(*mut GtkMenuShell)>,
    pub move_current: Option<unsafe extern "C" fn(*mut GtkMenuShell, GtkMenuDirectionType)>,
    pub activate_current: Option<unsafe extern "C" fn(*mut GtkMenuShell, gboolean)>,
    pub cancel: Option<unsafe extern "C" fn(*mut GtkMenuShell)>,
    pub select_item: Option<unsafe extern "C" fn(*mut GtkMenuShell, *mut GtkWidget)>,
    pub insert: Option<unsafe extern "C" fn(*mut GtkMenuShell, *mut GtkWidget, c_int)>,
    pub get_popup_delay: Option<unsafe extern "C" fn(*mut GtkMenuShell) -> c_int>,
    pub move_selected: Option<unsafe extern "C" fn(*mut GtkMenuShell, c_int) -> gboolean>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkMenuShellClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuShellClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("submenu_placement", &self.submenu_placement)
            .field("deactivate", &self.deactivate)
            .field("selection_done", &self.selection_done)
            .field("move_current", &self.move_current)
            .field("activate_current", &self.activate_current)
            .field("cancel", &self.cancel)
            .field("select_item", &self.select_item)
            .field("insert", &self.insert)
            .field("get_popup_delay", &self.get_popup_delay)
            .field("move_selected", &self.move_selected)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMenuShellPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMenuShellPrivate = *mut _GtkMenuShellPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuToolButtonClass {
    pub parent_class: GtkToolButtonClass,
    pub show_menu: Option<unsafe extern "C" fn(*mut GtkMenuToolButton)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkMenuToolButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuToolButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("show_menu", &self.show_menu)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMenuToolButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMenuToolButtonPrivate = *mut _GtkMenuToolButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMessageDialogClass {
    pub parent_class: GtkDialogClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkMessageDialogClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMessageDialogClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMessageDialogPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMessageDialogPrivate = *mut _GtkMessageDialogPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMiscClass {
    pub parent_class: GtkWidgetClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkMiscClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMiscClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMiscPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMiscPrivate = *mut _GtkMiscPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMountOperationClass {
    pub parent_class: gio::GMountOperationClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkMountOperationClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMountOperationClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkMountOperationPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkMountOperationPrivate = *mut _GtkMountOperationPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkNativeDialogClass {
    pub parent_class: gobject::GObjectClass,
    pub response: Option<unsafe extern "C" fn(*mut GtkNativeDialog, GtkResponseType)>,
    pub show: Option<unsafe extern "C" fn(*mut GtkNativeDialog)>,
    pub hide: Option<unsafe extern "C" fn(*mut GtkNativeDialog)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkNativeDialogClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkNativeDialogClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("response", &self.response)
            .field("show", &self.show)
            .field("hide", &self.hide)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkNotebookAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkNotebookAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkNotebookAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkNotebookAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkNotebookAccessiblePrivate = *mut _GtkNotebookAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkNotebookClass {
    pub parent_class: GtkContainerClass,
    pub switch_page: Option<unsafe extern "C" fn(*mut GtkNotebook, *mut GtkWidget, c_uint)>,
    pub select_page: Option<unsafe extern "C" fn(*mut GtkNotebook, gboolean) -> gboolean>,
    pub focus_tab: Option<unsafe extern "C" fn(*mut GtkNotebook, GtkNotebookTab) -> gboolean>,
    pub change_current_page: Option<unsafe extern "C" fn(*mut GtkNotebook, c_int) -> gboolean>,
    pub move_focus_out: Option<unsafe extern "C" fn(*mut GtkNotebook, GtkDirectionType)>,
    pub reorder_tab:
        Option<unsafe extern "C" fn(*mut GtkNotebook, GtkDirectionType, gboolean) -> gboolean>,
    pub insert_page: Option<
        unsafe extern "C" fn(
            *mut GtkNotebook,
            *mut GtkWidget,
            *mut GtkWidget,
            *mut GtkWidget,
            c_int,
        ) -> c_int,
    >,
    pub create_window: Option<
        unsafe extern "C" fn(*mut GtkNotebook, *mut GtkWidget, c_int, c_int) -> *mut GtkNotebook,
    >,
    pub page_reordered: Option<unsafe extern "C" fn(*mut GtkNotebook, *mut GtkWidget, c_uint)>,
    pub page_removed: Option<unsafe extern "C" fn(*mut GtkNotebook, *mut GtkWidget, c_uint)>,
    pub page_added: Option<unsafe extern "C" fn(*mut GtkNotebook, *mut GtkWidget, c_uint)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkNotebookClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkNotebookClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("switch_page", &self.switch_page)
            .field("select_page", &self.select_page)
            .field("focus_tab", &self.focus_tab)
            .field("change_current_page", &self.change_current_page)
            .field("move_focus_out", &self.move_focus_out)
            .field("reorder_tab", &self.reorder_tab)
            .field("insert_page", &self.insert_page)
            .field("create_window", &self.create_window)
            .field("page_reordered", &self.page_reordered)
            .field("page_removed", &self.page_removed)
            .field("page_added", &self.page_added)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkNotebookPageAccessibleClass {
    pub parent_class: atk::AtkObjectClass,
}

impl ::std::fmt::Debug for GtkNotebookPageAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkNotebookPageAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkNotebookPageAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkNotebookPageAccessiblePrivate = *mut _GtkNotebookPageAccessiblePrivate;

#[repr(C)]
pub struct _GtkNotebookPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkNotebookPrivate = *mut _GtkNotebookPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkNumerableIconClass {
    pub parent_class: gio::GEmblemedIconClass,
    pub padding: [gpointer; 16],
}

impl ::std::fmt::Debug for GtkNumerableIconClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkNumerableIconClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("padding", &self.padding)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkNumerableIconPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkNumerableIconPrivate = *mut _GtkNumerableIconPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkOffscreenWindowClass {
    pub parent_class: GtkWindowClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkOffscreenWindowClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkOffscreenWindowClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkOrientableIface {
    pub base_iface: gobject::GTypeInterface,
}

impl ::std::fmt::Debug for GtkOrientableIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkOrientableIface @ {self:p}"))
            .field("base_iface", &self.base_iface)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkOverlayClass {
    pub parent_class: GtkBinClass,
    pub get_child_position: Option<
        unsafe extern "C" fn(*mut GtkOverlay, *mut GtkWidget, *mut GtkAllocation) -> gboolean,
    >,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkOverlayClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkOverlayClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("get_child_position", &self.get_child_position)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkOverlayPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkOverlayPrivate = *mut _GtkOverlayPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPadActionEntry {
    pub type_: GtkPadActionType,
    pub index: c_int,
    pub mode: c_int,
    pub label: *mut c_char,
    pub action_name: *mut c_char,
}

impl ::std::fmt::Debug for GtkPadActionEntry {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPadActionEntry @ {self:p}"))
            .field("type_", &self.type_)
            .field("index", &self.index)
            .field("mode", &self.mode)
            .field("label", &self.label)
            .field("action_name", &self.action_name)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkPadControllerClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkPadControllerClass = *mut _GtkPadControllerClass;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPageRange {
    pub start: c_int,
    pub end: c_int,
}

impl ::std::fmt::Debug for GtkPageRange {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPageRange @ {self:p}"))
            .field("start", &self.start)
            .field("end", &self.end)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPanedAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkPanedAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPanedAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkPanedAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkPanedAccessiblePrivate = *mut _GtkPanedAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPanedClass {
    pub parent_class: GtkContainerClass,
    pub cycle_child_focus: Option<unsafe extern "C" fn(*mut GtkPaned, gboolean) -> gboolean>,
    pub toggle_handle_focus: Option<unsafe extern "C" fn(*mut GtkPaned) -> gboolean>,
    pub move_handle: Option<unsafe extern "C" fn(*mut GtkPaned, GtkScrollType) -> gboolean>,
    pub cycle_handle_focus: Option<unsafe extern "C" fn(*mut GtkPaned, gboolean) -> gboolean>,
    pub accept_position: Option<unsafe extern "C" fn(*mut GtkPaned) -> gboolean>,
    pub cancel_position: Option<unsafe extern "C" fn(*mut GtkPaned) -> gboolean>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkPanedClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPanedClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("cycle_child_focus", &self.cycle_child_focus)
            .field("toggle_handle_focus", &self.toggle_handle_focus)
            .field("move_handle", &self.move_handle)
            .field("cycle_handle_focus", &self.cycle_handle_focus)
            .field("accept_position", &self.accept_position)
            .field("cancel_position", &self.cancel_position)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkPanedPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkPanedPrivate = *mut _GtkPanedPrivate;

#[repr(C)]
pub struct GtkPaperSize {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkPaperSize {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPaperSize @ {self:p}")).finish()
    }
}

#[repr(C)]
pub struct _GtkPlacesSidebarClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkPlacesSidebarClass = *mut _GtkPlacesSidebarClass;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPlugAccessibleClass {
    pub parent_class: GtkWindowAccessibleClass,
}

impl ::std::fmt::Debug for GtkPlugAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPlugAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkPlugAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkPlugAccessiblePrivate = *mut _GtkPlugAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPlugClass {
    pub parent_class: GtkWindowClass,
    pub embedded: Option<unsafe extern "C" fn(*mut GtkPlug)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkPlugClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPlugClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("embedded", &self.embedded)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkPlugPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkPlugPrivate = *mut _GtkPlugPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPopoverAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkPopoverAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPopoverAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPopoverClass {
    pub parent_class: GtkBinClass,
    pub closed: Option<unsafe extern "C" fn(*mut GtkPopover)>,
    pub reserved: [gpointer; 10],
}

impl ::std::fmt::Debug for GtkPopoverClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPopoverClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("closed", &self.closed)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPopoverMenuClass {
    pub parent_class: GtkPopoverClass,
    pub reserved: [gpointer; 10],
}

impl ::std::fmt::Debug for GtkPopoverMenuClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPopoverMenuClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkPopoverPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkPopoverPrivate = *mut _GtkPopoverPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPrintOperationClass {
    pub parent_class: gobject::GObjectClass,
    pub done: Option<unsafe extern "C" fn(*mut GtkPrintOperation, GtkPrintOperationResult)>,
    pub begin_print: Option<unsafe extern "C" fn(*mut GtkPrintOperation, *mut GtkPrintContext)>,
    pub paginate:
        Option<unsafe extern "C" fn(*mut GtkPrintOperation, *mut GtkPrintContext) -> gboolean>,
    pub request_page_setup: Option<
        unsafe extern "C" fn(
            *mut GtkPrintOperation,
            *mut GtkPrintContext,
            c_int,
            *mut GtkPageSetup,
        ),
    >,
    pub draw_page:
        Option<unsafe extern "C" fn(*mut GtkPrintOperation, *mut GtkPrintContext, c_int)>,
    pub end_print: Option<unsafe extern "C" fn(*mut GtkPrintOperation, *mut GtkPrintContext)>,
    pub status_changed: Option<unsafe extern "C" fn(*mut GtkPrintOperation)>,
    pub create_custom_widget:
        Option<unsafe extern "C" fn(*mut GtkPrintOperation) -> *mut GtkWidget>,
    pub custom_widget_apply: Option<unsafe extern "C" fn(*mut GtkPrintOperation, *mut GtkWidget)>,
    pub preview: Option<
        unsafe extern "C" fn(
            *mut GtkPrintOperation,
            *mut GtkPrintOperationPreview,
            *mut GtkPrintContext,
            *mut GtkWindow,
        ) -> gboolean,
    >,
    pub update_custom_widget: Option<
        unsafe extern "C" fn(
            *mut GtkPrintOperation,
            *mut GtkWidget,
            *mut GtkPageSetup,
            *mut GtkPrintSettings,
        ),
    >,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkPrintOperationClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPrintOperationClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("done", &self.done)
            .field("begin_print", &self.begin_print)
            .field("paginate", &self.paginate)
            .field("request_page_setup", &self.request_page_setup)
            .field("draw_page", &self.draw_page)
            .field("end_print", &self.end_print)
            .field("status_changed", &self.status_changed)
            .field("create_custom_widget", &self.create_custom_widget)
            .field("custom_widget_apply", &self.custom_widget_apply)
            .field("preview", &self.preview)
            .field("update_custom_widget", &self.update_custom_widget)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPrintOperationPreviewIface {
    pub g_iface: gobject::GTypeInterface,
    pub ready: Option<unsafe extern "C" fn(*mut GtkPrintOperationPreview, *mut GtkPrintContext)>,
    pub got_page_size: Option<
        unsafe extern "C" fn(
            *mut GtkPrintOperationPreview,
            *mut GtkPrintContext,
            *mut GtkPageSetup,
        ),
    >,
    pub render_page: Option<unsafe extern "C" fn(*mut GtkPrintOperationPreview, c_int)>,
    pub is_selected: Option<unsafe extern "C" fn(*mut GtkPrintOperationPreview, c_int) -> gboolean>,
    pub end_preview: Option<unsafe extern "C" fn(*mut GtkPrintOperationPreview)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkPrintOperationPreviewIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPrintOperationPreviewIface @ {self:p}"))
            .field("g_iface", &self.g_iface)
            .field("ready", &self.ready)
            .field("got_page_size", &self.got_page_size)
            .field("render_page", &self.render_page)
            .field("is_selected", &self.is_selected)
            .field("end_preview", &self.end_preview)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkPrintOperationPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkPrintOperationPrivate = *mut _GtkPrintOperationPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkProgressBarAccessibleClass {
    pub parent_class: GtkWidgetAccessibleClass,
}

impl ::std::fmt::Debug for GtkProgressBarAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkProgressBarAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkProgressBarAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkProgressBarAccessiblePrivate = *mut _GtkProgressBarAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkProgressBarClass {
    pub parent_class: GtkWidgetClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkProgressBarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkProgressBarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkProgressBarPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkProgressBarPrivate = *mut _GtkProgressBarPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioActionClass {
    pub parent_class: GtkToggleActionClass,
    pub changed: Option<unsafe extern "C" fn(*mut GtkRadioAction, *mut GtkRadioAction)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkRadioActionClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioActionClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("changed", &self.changed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioActionEntry {
    pub name: *const c_char,
    pub stock_id: *const c_char,
    pub label: *const c_char,
    pub accelerator: *const c_char,
    pub tooltip: *const c_char,
    pub value: c_int,
}

impl ::std::fmt::Debug for GtkRadioActionEntry {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioActionEntry @ {self:p}"))
            .field("name", &self.name)
            .field("stock_id", &self.stock_id)
            .field("label", &self.label)
            .field("accelerator", &self.accelerator)
            .field("tooltip", &self.tooltip)
            .field("value", &self.value)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRadioActionPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRadioActionPrivate = *mut _GtkRadioActionPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioButtonAccessibleClass {
    pub parent_class: GtkToggleButtonAccessibleClass,
}

impl ::std::fmt::Debug for GtkRadioButtonAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioButtonAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRadioButtonAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRadioButtonAccessiblePrivate = *mut _GtkRadioButtonAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioButtonClass {
    pub parent_class: GtkCheckButtonClass,
    pub group_changed: Option<unsafe extern "C" fn(*mut GtkRadioButton)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkRadioButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("group_changed", &self.group_changed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRadioButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRadioButtonPrivate = *mut _GtkRadioButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioMenuItemAccessibleClass {
    pub parent_class: GtkCheckMenuItemAccessibleClass,
}

impl ::std::fmt::Debug for GtkRadioMenuItemAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioMenuItemAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRadioMenuItemAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRadioMenuItemAccessiblePrivate = *mut _GtkRadioMenuItemAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioMenuItemClass {
    pub parent_class: GtkCheckMenuItemClass,
    pub group_changed: Option<unsafe extern "C" fn(*mut GtkRadioMenuItem)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkRadioMenuItemClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioMenuItemClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("group_changed", &self.group_changed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRadioMenuItemPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRadioMenuItemPrivate = *mut _GtkRadioMenuItemPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioToolButtonClass {
    pub parent_class: GtkToggleToolButtonClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkRadioToolButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioToolButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRangeAccessibleClass {
    pub parent_class: GtkWidgetAccessibleClass,
}

impl ::std::fmt::Debug for GtkRangeAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRangeAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRangeAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRangeAccessiblePrivate = *mut _GtkRangeAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRangeClass {
    pub parent_class: GtkWidgetClass,
    pub slider_detail: *mut c_char,
    pub stepper_detail: *mut c_char,
    pub value_changed: Option<unsafe extern "C" fn(*mut GtkRange)>,
    pub adjust_bounds: Option<unsafe extern "C" fn(*mut GtkRange, c_double)>,
    pub move_slider: Option<unsafe extern "C" fn(*mut GtkRange, GtkScrollType)>,
    pub get_range_border: Option<unsafe extern "C" fn(*mut GtkRange, *mut GtkBorder)>,
    pub change_value:
        Option<unsafe extern "C" fn(*mut GtkRange, GtkScrollType, c_double) -> gboolean>,
    pub get_range_size_request:
        Option<unsafe extern "C" fn(*mut GtkRange, GtkOrientation, *mut c_int, *mut c_int)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkRangeClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRangeClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("slider_detail", &self.slider_detail)
            .field("stepper_detail", &self.stepper_detail)
            .field("value_changed", &self.value_changed)
            .field("adjust_bounds", &self.adjust_bounds)
            .field("move_slider", &self.move_slider)
            .field("get_range_border", &self.get_range_border)
            .field("change_value", &self.change_value)
            .field("get_range_size_request", &self.get_range_size_request)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRangePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRangePrivate = *mut _GtkRangePrivate;

#[repr(C)]
pub struct _GtkRcContext {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRcContext = *mut _GtkRcContext;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRcProperty {
    pub type_name: glib::GQuark,
    pub property_name: glib::GQuark,
    pub origin: *mut c_char,
    pub value: gobject::GValue,
}

impl ::std::fmt::Debug for GtkRcProperty {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRcProperty @ {self:p}"))
            .field("type_name", &self.type_name)
            .field("property_name", &self.property_name)
            .field("origin", &self.origin)
            .field("value", &self.value)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRcStyleClass {
    pub parent_class: gobject::GObjectClass,
    pub create_rc_style: Option<unsafe extern "C" fn(*mut GtkRcStyle) -> *mut GtkRcStyle>,
    pub parse: Option<
        unsafe extern "C" fn(*mut GtkRcStyle, *mut GtkSettings, *mut glib::GScanner) -> c_uint,
    >,
    pub merge: Option<unsafe extern "C" fn(*mut GtkRcStyle, *mut GtkRcStyle)>,
    pub create_style: Option<unsafe extern "C" fn(*mut GtkRcStyle) -> *mut GtkStyle>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkRcStyleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRcStyleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("create_rc_style", &self.create_rc_style)
            .field("parse", &self.parse)
            .field("merge", &self.merge)
            .field("create_style", &self.create_style)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentActionClass {
    pub parent_class: GtkActionClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkRecentActionClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentActionClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRecentActionPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRecentActionPrivate = *mut _GtkRecentActionPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentChooserDialogClass {
    pub parent_class: GtkDialogClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkRecentChooserDialogClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentChooserDialogClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRecentChooserDialogPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRecentChooserDialogPrivate = *mut _GtkRecentChooserDialogPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentChooserIface {
    pub base_iface: gobject::GTypeInterface,
    pub set_current_uri: Option<
        unsafe extern "C" fn(
            *mut GtkRecentChooser,
            *const c_char,
            *mut *mut glib::GError,
        ) -> gboolean,
    >,
    pub get_current_uri: Option<unsafe extern "C" fn(*mut GtkRecentChooser) -> *mut c_char>,
    pub select_uri: Option<
        unsafe extern "C" fn(
            *mut GtkRecentChooser,
            *const c_char,
            *mut *mut glib::GError,
        ) -> gboolean,
    >,
    pub unselect_uri: Option<unsafe extern "C" fn(*mut GtkRecentChooser, *const c_char)>,
    pub select_all: Option<unsafe extern "C" fn(*mut GtkRecentChooser)>,
    pub unselect_all: Option<unsafe extern "C" fn(*mut GtkRecentChooser)>,
    pub get_items: Option<unsafe extern "C" fn(*mut GtkRecentChooser) -> *mut glib::GList>,
    pub get_recent_manager:
        Option<unsafe extern "C" fn(*mut GtkRecentChooser) -> *mut GtkRecentManager>,
    pub add_filter: Option<unsafe extern "C" fn(*mut GtkRecentChooser, *mut GtkRecentFilter)>,
    pub remove_filter: Option<unsafe extern "C" fn(*mut GtkRecentChooser, *mut GtkRecentFilter)>,
    pub list_filters: Option<unsafe extern "C" fn(*mut GtkRecentChooser) -> *mut glib::GSList>,
    pub set_sort_func: Option<
        unsafe extern "C" fn(
            *mut GtkRecentChooser,
            GtkRecentSortFunc,
            gpointer,
            glib::GDestroyNotify,
        ),
    >,
    pub item_activated: Option<unsafe extern "C" fn(*mut GtkRecentChooser)>,
    pub selection_changed: Option<unsafe extern "C" fn(*mut GtkRecentChooser)>,
}

impl ::std::fmt::Debug for GtkRecentChooserIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentChooserIface @ {self:p}"))
            .field("set_current_uri", &self.set_current_uri)
            .field("get_current_uri", &self.get_current_uri)
            .field("select_uri", &self.select_uri)
            .field("unselect_uri", &self.unselect_uri)
            .field("select_all", &self.select_all)
            .field("unselect_all", &self.unselect_all)
            .field("get_items", &self.get_items)
            .field("get_recent_manager", &self.get_recent_manager)
            .field("add_filter", &self.add_filter)
            .field("remove_filter", &self.remove_filter)
            .field("list_filters", &self.list_filters)
            .field("set_sort_func", &self.set_sort_func)
            .field("item_activated", &self.item_activated)
            .field("selection_changed", &self.selection_changed)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentChooserMenuClass {
    pub parent_class: GtkMenuClass,
    pub gtk_recent1: Option<unsafe extern "C" fn()>,
    pub gtk_recent2: Option<unsafe extern "C" fn()>,
    pub gtk_recent3: Option<unsafe extern "C" fn()>,
    pub gtk_recent4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkRecentChooserMenuClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentChooserMenuClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("gtk_recent1", &self.gtk_recent1)
            .field("gtk_recent2", &self.gtk_recent2)
            .field("gtk_recent3", &self.gtk_recent3)
            .field("gtk_recent4", &self.gtk_recent4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRecentChooserMenuPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRecentChooserMenuPrivate = *mut _GtkRecentChooserMenuPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentChooserWidgetClass {
    pub parent_class: GtkBoxClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkRecentChooserWidgetClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentChooserWidgetClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRecentChooserWidgetPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRecentChooserWidgetPrivate = *mut _GtkRecentChooserWidgetPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentData {
    pub display_name: *mut c_char,
    pub description: *mut c_char,
    pub mime_type: *mut c_char,
    pub app_name: *mut c_char,
    pub app_exec: *mut c_char,
    pub groups: *mut *mut c_char,
    pub is_private: gboolean,
}

impl ::std::fmt::Debug for GtkRecentData {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentData @ {self:p}"))
            .field("display_name", &self.display_name)
            .field("description", &self.description)
            .field("mime_type", &self.mime_type)
            .field("app_name", &self.app_name)
            .field("app_exec", &self.app_exec)
            .field("groups", &self.groups)
            .field("is_private", &self.is_private)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentFilterInfo {
    pub contains: GtkRecentFilterFlags,
    pub uri: *const c_char,
    pub display_name: *const c_char,
    pub mime_type: *const c_char,
    pub applications: *mut *const c_char,
    pub groups: *mut *const c_char,
    pub age: c_int,
}

impl ::std::fmt::Debug for GtkRecentFilterInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentFilterInfo @ {self:p}"))
            .field("contains", &self.contains)
            .field("uri", &self.uri)
            .field("display_name", &self.display_name)
            .field("mime_type", &self.mime_type)
            .field("applications", &self.applications)
            .field("groups", &self.groups)
            .field("age", &self.age)
            .finish()
    }
}

#[repr(C)]
pub struct GtkRecentInfo {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkRecentInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentInfo @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentManagerClass {
    pub parent_class: gobject::GObjectClass,
    pub changed: Option<unsafe extern "C" fn(*mut GtkRecentManager)>,
    pub _gtk_recent1: Option<unsafe extern "C" fn()>,
    pub _gtk_recent2: Option<unsafe extern "C" fn()>,
    pub _gtk_recent3: Option<unsafe extern "C" fn()>,
    pub _gtk_recent4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkRecentManagerClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentManagerClass @ {self:p}"))
            .field("changed", &self.changed)
            .field("_gtk_recent1", &self._gtk_recent1)
            .field("_gtk_recent2", &self._gtk_recent2)
            .field("_gtk_recent3", &self._gtk_recent3)
            .field("_gtk_recent4", &self._gtk_recent4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRecentManagerPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRecentManagerPrivate = *mut _GtkRecentManagerPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRendererCellAccessibleClass {
    pub parent_class: GtkCellAccessibleClass,
}

impl ::std::fmt::Debug for GtkRendererCellAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRendererCellAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRendererCellAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkRendererCellAccessiblePrivate = *mut _GtkRendererCellAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRequestedSize {
    pub data: gpointer,
    pub minimum_size: c_int,
    pub natural_size: c_int,
}

impl ::std::fmt::Debug for GtkRequestedSize {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRequestedSize @ {self:p}"))
            .field("data", &self.data)
            .field("minimum_size", &self.minimum_size)
            .field("natural_size", &self.natural_size)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRequisition {
    pub width: c_int,
    pub height: c_int,
}

impl ::std::fmt::Debug for GtkRequisition {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRequisition @ {self:p}"))
            .field("width", &self.width)
            .field("height", &self.height)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRevealerClass {
    pub parent_class: GtkBinClass,
}

impl ::std::fmt::Debug for GtkRevealerClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRevealerClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScaleAccessibleClass {
    pub parent_class: GtkRangeAccessibleClass,
}

impl ::std::fmt::Debug for GtkScaleAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScaleAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkScaleAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkScaleAccessiblePrivate = *mut _GtkScaleAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScaleButtonAccessibleClass {
    pub parent_class: GtkButtonAccessibleClass,
}

impl ::std::fmt::Debug for GtkScaleButtonAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScaleButtonAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkScaleButtonAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkScaleButtonAccessiblePrivate = *mut _GtkScaleButtonAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScaleButtonClass {
    pub parent_class: GtkButtonClass,
    pub value_changed: Option<unsafe extern "C" fn(*mut GtkScaleButton, c_double)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkScaleButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScaleButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("value_changed", &self.value_changed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkScaleButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkScaleButtonPrivate = *mut _GtkScaleButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScaleClass {
    pub parent_class: GtkRangeClass,
    pub format_value: Option<unsafe extern "C" fn(*mut GtkScale, c_double) -> *mut c_char>,
    pub draw_value: Option<unsafe extern "C" fn(*mut GtkScale)>,
    pub get_layout_offsets: Option<unsafe extern "C" fn(*mut GtkScale, *mut c_int, *mut c_int)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkScaleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScaleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("format_value", &self.format_value)
            .field("draw_value", &self.draw_value)
            .field("get_layout_offsets", &self.get_layout_offsets)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkScalePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkScalePrivate = *mut _GtkScalePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScrollableInterface {
    pub base_iface: gobject::GTypeInterface,
    pub get_border: Option<unsafe extern "C" fn(*mut GtkScrollable, *mut GtkBorder) -> gboolean>,
}

impl ::std::fmt::Debug for GtkScrollableInterface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScrollableInterface @ {self:p}"))
            .field("base_iface", &self.base_iface)
            .field("get_border", &self.get_border)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScrollbarClass {
    pub parent_class: GtkRangeClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkScrollbarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScrollbarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScrolledWindowAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkScrolledWindowAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScrolledWindowAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkScrolledWindowAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkScrolledWindowAccessiblePrivate = *mut _GtkScrolledWindowAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScrolledWindowClass {
    pub parent_class: GtkBinClass,
    pub scrollbar_spacing: c_int,
    pub scroll_child:
        Option<unsafe extern "C" fn(*mut GtkScrolledWindow, GtkScrollType, gboolean) -> gboolean>,
    pub move_focus_out: Option<unsafe extern "C" fn(*mut GtkScrolledWindow, GtkDirectionType)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkScrolledWindowClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScrolledWindowClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("scrollbar_spacing", &self.scrollbar_spacing)
            .field("scroll_child", &self.scroll_child)
            .field("move_focus_out", &self.move_focus_out)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkScrolledWindowPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkScrolledWindowPrivate = *mut _GtkScrolledWindowPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSearchBarClass {
    pub parent_class: GtkBinClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkSearchBarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSearchBarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSearchEntryClass {
    pub parent_class: GtkEntryClass,
    pub search_changed: Option<unsafe extern "C" fn(*mut GtkSearchEntry)>,
    pub next_match: Option<unsafe extern "C" fn(*mut GtkSearchEntry)>,
    pub previous_match: Option<unsafe extern "C" fn(*mut GtkSearchEntry)>,
    pub stop_search: Option<unsafe extern "C" fn(*mut GtkSearchEntry)>,
}

impl ::std::fmt::Debug for GtkSearchEntryClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSearchEntryClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("search_changed", &self.search_changed)
            .field("next_match", &self.next_match)
            .field("previous_match", &self.previous_match)
            .field("stop_search", &self.stop_search)
            .finish()
    }
}

#[repr(C)]
pub struct GtkSelectionData {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkSelectionData {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSelectionData @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSeparatorClass {
    pub parent_class: GtkWidgetClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkSeparatorClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSeparatorClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSeparatorMenuItemClass {
    pub parent_class: GtkMenuItemClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkSeparatorMenuItemClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSeparatorMenuItemClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSeparatorPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSeparatorPrivate = *mut _GtkSeparatorPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSeparatorToolItemClass {
    pub parent_class: GtkToolItemClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkSeparatorToolItemClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSeparatorToolItemClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSeparatorToolItemPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSeparatorToolItemPrivate = *mut _GtkSeparatorToolItemPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSettingsClass {
    pub parent_class: gobject::GObjectClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkSettingsClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSettingsClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSettingsPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSettingsPrivate = *mut _GtkSettingsPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSettingsValue {
    pub origin: *mut c_char,
    pub value: gobject::GValue,
}

impl ::std::fmt::Debug for GtkSettingsValue {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSettingsValue @ {self:p}"))
            .field("origin", &self.origin)
            .field("value", &self.value)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkShortcutLabelClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkShortcutLabelClass = *mut _GtkShortcutLabelClass;

#[repr(C)]
pub struct _GtkShortcutsGroupClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkShortcutsGroupClass = *mut _GtkShortcutsGroupClass;

#[repr(C)]
pub struct _GtkShortcutsSectionClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkShortcutsSectionClass = *mut _GtkShortcutsSectionClass;

#[repr(C)]
pub struct _GtkShortcutsShortcutClass {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkShortcutsShortcutClass = *mut _GtkShortcutsShortcutClass;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkShortcutsWindowClass {
    pub parent_class: GtkWindowClass,
    pub close: Option<unsafe extern "C" fn(*mut GtkShortcutsWindow)>,
    pub search: Option<unsafe extern "C" fn(*mut GtkShortcutsWindow)>,
}

impl ::std::fmt::Debug for GtkShortcutsWindowClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkShortcutsWindowClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("close", &self.close)
            .field("search", &self.search)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSizeGroupClass {
    pub parent_class: gobject::GObjectClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkSizeGroupClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSizeGroupClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSizeGroupPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSizeGroupPrivate = *mut _GtkSizeGroupPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSocketAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkSocketAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSocketAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSocketAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSocketAccessiblePrivate = *mut _GtkSocketAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSocketClass {
    pub parent_class: GtkContainerClass,
    pub plug_added: Option<unsafe extern "C" fn(*mut GtkSocket)>,
    pub plug_removed: Option<unsafe extern "C" fn(*mut GtkSocket) -> gboolean>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkSocketClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSocketClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("plug_added", &self.plug_added)
            .field("plug_removed", &self.plug_removed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSocketPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSocketPrivate = *mut _GtkSocketPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSpinButtonAccessibleClass {
    pub parent_class: GtkEntryAccessibleClass,
}

impl ::std::fmt::Debug for GtkSpinButtonAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSpinButtonAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSpinButtonAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSpinButtonAccessiblePrivate = *mut _GtkSpinButtonAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSpinButtonClass {
    pub parent_class: GtkEntryClass,
    pub input: Option<unsafe extern "C" fn(*mut GtkSpinButton, *mut c_double) -> c_int>,
    pub output: Option<unsafe extern "C" fn(*mut GtkSpinButton) -> c_int>,
    pub value_changed: Option<unsafe extern "C" fn(*mut GtkSpinButton)>,
    pub change_value: Option<unsafe extern "C" fn(*mut GtkSpinButton, GtkScrollType)>,
    pub wrapped: Option<unsafe extern "C" fn(*mut GtkSpinButton)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkSpinButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSpinButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("input", &self.input)
            .field("output", &self.output)
            .field("value_changed", &self.value_changed)
            .field("change_value", &self.change_value)
            .field("wrapped", &self.wrapped)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSpinButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSpinButtonPrivate = *mut _GtkSpinButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSpinnerAccessibleClass {
    pub parent_class: GtkWidgetAccessibleClass,
}

impl ::std::fmt::Debug for GtkSpinnerAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSpinnerAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSpinnerAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSpinnerAccessiblePrivate = *mut _GtkSpinnerAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSpinnerClass {
    pub parent_class: GtkWidgetClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkSpinnerClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSpinnerClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSpinnerPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSpinnerPrivate = *mut _GtkSpinnerPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStackAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkStackAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStackAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStackClass {
    pub parent_class: GtkContainerClass,
}

impl ::std::fmt::Debug for GtkStackClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStackClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStackSidebarClass {
    pub parent_class: GtkBinClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkStackSidebarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStackSidebarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkStackSidebarPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkStackSidebarPrivate = *mut _GtkStackSidebarPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStackSwitcherClass {
    pub parent_class: GtkBoxClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkStackSwitcherClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStackSwitcherClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStatusIconClass {
    pub parent_class: gobject::GObjectClass,
    pub activate: Option<unsafe extern "C" fn(*mut GtkStatusIcon)>,
    pub popup_menu: Option<unsafe extern "C" fn(*mut GtkStatusIcon, c_uint, u32)>,
    pub size_changed: Option<unsafe extern "C" fn(*mut GtkStatusIcon, c_int) -> gboolean>,
    pub button_press_event:
        Option<unsafe extern "C" fn(*mut GtkStatusIcon, *mut gdk::GdkEventButton) -> gboolean>,
    pub button_release_event:
        Option<unsafe extern "C" fn(*mut GtkStatusIcon, *mut gdk::GdkEventButton) -> gboolean>,
    pub scroll_event:
        Option<unsafe extern "C" fn(*mut GtkStatusIcon, *mut gdk::GdkEventScroll) -> gboolean>,
    pub query_tooltip: Option<
        unsafe extern "C" fn(
            *mut GtkStatusIcon,
            c_int,
            c_int,
            gboolean,
            *mut GtkTooltip,
        ) -> gboolean,
    >,
    pub __gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub __gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub __gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub __gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkStatusIconClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStatusIconClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("activate", &self.activate)
            .field("popup_menu", &self.popup_menu)
            .field("size_changed", &self.size_changed)
            .field("button_press_event", &self.button_press_event)
            .field("button_release_event", &self.button_release_event)
            .field("scroll_event", &self.scroll_event)
            .field("query_tooltip", &self.query_tooltip)
            .field("__gtk_reserved1", &self.__gtk_reserved1)
            .field("__gtk_reserved2", &self.__gtk_reserved2)
            .field("__gtk_reserved3", &self.__gtk_reserved3)
            .field("__gtk_reserved4", &self.__gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkStatusIconPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkStatusIconPrivate = *mut _GtkStatusIconPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStatusbarAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkStatusbarAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStatusbarAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkStatusbarAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkStatusbarAccessiblePrivate = *mut _GtkStatusbarAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStatusbarClass {
    pub parent_class: GtkBoxClass,
    pub reserved: gpointer,
    pub text_pushed: Option<unsafe extern "C" fn(*mut GtkStatusbar, c_uint, *const c_char)>,
    pub text_popped: Option<unsafe extern "C" fn(*mut GtkStatusbar, c_uint, *const c_char)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkStatusbarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStatusbarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("reserved", &self.reserved)
            .field("text_pushed", &self.text_pushed)
            .field("text_popped", &self.text_popped)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkStatusbarPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkStatusbarPrivate = *mut _GtkStatusbarPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStockItem {
    pub stock_id: *mut c_char,
    pub label: *mut c_char,
    pub modifier: gdk::GdkModifierType,
    pub keyval: c_uint,
    pub translation_domain: *mut c_char,
}

impl ::std::fmt::Debug for GtkStockItem {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStockItem @ {self:p}"))
            .field("stock_id", &self.stock_id)
            .field("label", &self.label)
            .field("modifier", &self.modifier)
            .field("keyval", &self.keyval)
            .field("translation_domain", &self.translation_domain)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStyleClass {
    pub parent_class: gobject::GObjectClass,
    pub realize: Option<unsafe extern "C" fn(*mut GtkStyle)>,
    pub unrealize: Option<unsafe extern "C" fn(*mut GtkStyle)>,
    pub copy: Option<unsafe extern "C" fn(*mut GtkStyle, *mut GtkStyle)>,
    pub clone: Option<unsafe extern "C" fn(*mut GtkStyle) -> *mut GtkStyle>,
    pub init_from_rc: Option<unsafe extern "C" fn(*mut GtkStyle, *mut GtkRcStyle)>,
    pub set_background:
        Option<unsafe extern "C" fn(*mut GtkStyle, *mut gdk::GdkWindow, GtkStateType)>,
    pub render_icon: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *const GtkIconSource,
            GtkTextDirection,
            GtkStateType,
            GtkIconSize,
            *mut GtkWidget,
            *const c_char,
        ) -> *mut gdk_pixbuf::GdkPixbuf,
    >,
    pub draw_hline: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_vline: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_shadow: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_arrow: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            GtkArrowType,
            gboolean,
            c_int,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_diamond: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_box: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_flat_box: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_check: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_option: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_tab: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_shadow_gap: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
            GtkPositionType,
            c_int,
            c_int,
        ),
    >,
    pub draw_box_gap: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
            GtkPositionType,
            c_int,
            c_int,
        ),
    >,
    pub draw_extension: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
            GtkPositionType,
        ),
    >,
    pub draw_focus: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_slider: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
            GtkOrientation,
        ),
    >,
    pub draw_handle: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            GtkShadowType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            c_int,
            c_int,
            GtkOrientation,
        ),
    >,
    pub draw_expander: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            GtkExpanderStyle,
        ),
    >,
    pub draw_layout: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            gboolean,
            *mut GtkWidget,
            *const c_char,
            c_int,
            c_int,
            *mut pango::PangoLayout,
        ),
    >,
    pub draw_resize_grip: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            *mut GtkWidget,
            *const c_char,
            gdk::GdkWindowEdge,
            c_int,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub draw_spinner: Option<
        unsafe extern "C" fn(
            *mut GtkStyle,
            *mut cairo::cairo_t,
            GtkStateType,
            *mut GtkWidget,
            *const c_char,
            c_uint,
            c_int,
            c_int,
            c_int,
            c_int,
        ),
    >,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved9: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved10: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved11: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkStyleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStyleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("realize", &self.realize)
            .field("unrealize", &self.unrealize)
            .field("copy", &self.copy)
            .field("clone", &self.clone)
            .field("init_from_rc", &self.init_from_rc)
            .field("set_background", &self.set_background)
            .field("render_icon", &self.render_icon)
            .field("draw_hline", &self.draw_hline)
            .field("draw_vline", &self.draw_vline)
            .field("draw_shadow", &self.draw_shadow)
            .field("draw_arrow", &self.draw_arrow)
            .field("draw_diamond", &self.draw_diamond)
            .field("draw_box", &self.draw_box)
            .field("draw_flat_box", &self.draw_flat_box)
            .field("draw_check", &self.draw_check)
            .field("draw_option", &self.draw_option)
            .field("draw_tab", &self.draw_tab)
            .field("draw_extension", &self.draw_extension)
            .field("draw_focus", &self.draw_focus)
            .field("draw_slider", &self.draw_slider)
            .field("draw_handle", &self.draw_handle)
            .field("draw_expander", &self.draw_expander)
            .field("draw_layout", &self.draw_layout)
            .field("draw_resize_grip", &self.draw_resize_grip)
            .field("draw_spinner", &self.draw_spinner)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .field("_gtk_reserved9", &self._gtk_reserved9)
            .field("_gtk_reserved10", &self._gtk_reserved10)
            .field("_gtk_reserved11", &self._gtk_reserved11)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStyleContextClass {
    pub parent_class: gobject::GObjectClass,
    pub changed: Option<unsafe extern "C" fn(*mut GtkStyleContext)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkStyleContextClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStyleContextClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("changed", &self.changed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkStyleContextPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkStyleContextPrivate = *mut _GtkStyleContextPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStylePropertiesClass {
    pub parent_class: gobject::GObjectClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkStylePropertiesClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStylePropertiesClass @ {self:p}"))
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkStylePropertiesPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkStylePropertiesPrivate = *mut _GtkStylePropertiesPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStyleProviderIface {
    pub g_iface: gobject::GTypeInterface,
    pub get_style: Option<
        unsafe extern "C" fn(*mut GtkStyleProvider, *mut GtkWidgetPath) -> *mut GtkStyleProperties,
    >,
    pub get_style_property: Option<
        unsafe extern "C" fn(
            *mut GtkStyleProvider,
            *mut GtkWidgetPath,
            GtkStateFlags,
            *mut gobject::GParamSpec,
            *mut gobject::GValue,
        ) -> gboolean,
    >,
    pub get_icon_factory: Option<
        unsafe extern "C" fn(*mut GtkStyleProvider, *mut GtkWidgetPath) -> *mut GtkIconFactory,
    >,
}

impl ::std::fmt::Debug for GtkStyleProviderIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStyleProviderIface @ {self:p}"))
            .field("get_style", &self.get_style)
            .field("get_style_property", &self.get_style_property)
            .field("get_icon_factory", &self.get_icon_factory)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSwitchAccessibleClass {
    pub parent_class: GtkWidgetAccessibleClass,
}

impl ::std::fmt::Debug for GtkSwitchAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSwitchAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSwitchAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSwitchAccessiblePrivate = *mut _GtkSwitchAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSwitchClass {
    pub parent_class: GtkWidgetClass,
    pub activate: Option<unsafe extern "C" fn(*mut GtkSwitch)>,
    pub state_set: Option<unsafe extern "C" fn(*mut GtkSwitch, gboolean) -> gboolean>,
    pub _switch_padding_1: Option<unsafe extern "C" fn()>,
    pub _switch_padding_2: Option<unsafe extern "C" fn()>,
    pub _switch_padding_3: Option<unsafe extern "C" fn()>,
    pub _switch_padding_4: Option<unsafe extern "C" fn()>,
    pub _switch_padding_5: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkSwitchClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSwitchClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("activate", &self.activate)
            .field("state_set", &self.state_set)
            .field("_switch_padding_1", &self._switch_padding_1)
            .field("_switch_padding_2", &self._switch_padding_2)
            .field("_switch_padding_3", &self._switch_padding_3)
            .field("_switch_padding_4", &self._switch_padding_4)
            .field("_switch_padding_5", &self._switch_padding_5)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkSwitchPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkSwitchPrivate = *mut _GtkSwitchPrivate;

#[repr(C)]
pub struct GtkSymbolicColor {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkSymbolicColor {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSymbolicColor @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkTableChild {
    pub widget: *mut GtkWidget,
    pub left_attach: u16,
    pub right_attach: u16,
    pub top_attach: u16,
    pub bottom_attach: u16,
    pub xpadding: u16,
    pub ypadding: u16,
    pub xexpand: c_uint,
    _truncated_record_marker: c_void,
    // field yexpand has incomplete type
}

impl ::std::fmt::Debug for GtkTableChild {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTableChild @ {self:p}"))
            .field("widget", &self.widget)
            .field("left_attach", &self.left_attach)
            .field("right_attach", &self.right_attach)
            .field("top_attach", &self.top_attach)
            .field("bottom_attach", &self.bottom_attach)
            .field("xpadding", &self.xpadding)
            .field("ypadding", &self.ypadding)
            .field("xexpand", &self.xexpand)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTableClass {
    pub parent_class: GtkContainerClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTableClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTableClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTablePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTablePrivate = *mut _GtkTablePrivate;

#[repr(C)]
pub struct GtkTableRowCol {
    pub requisition: u16,
    pub allocation: u16,
    pub spacing: u16,
    pub need_expand: c_uint,
    _truncated_record_marker: c_void,
    // field need_shrink has incomplete type
}

impl ::std::fmt::Debug for GtkTableRowCol {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTableRowCol @ {self:p}"))
            .field("requisition", &self.requisition)
            .field("allocation", &self.allocation)
            .field("spacing", &self.spacing)
            .field("need_expand", &self.need_expand)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTargetEntry {
    pub target: *mut c_char,
    pub flags: c_uint,
    pub info: c_uint,
}

impl ::std::fmt::Debug for GtkTargetEntry {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTargetEntry @ {self:p}"))
            .field("target", &self.target)
            .field("flags", &self.flags)
            .field("info", &self.info)
            .finish()
    }
}

#[repr(C)]
pub struct GtkTargetList {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkTargetList {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTargetList @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTargetPair {
    pub target: gdk::GdkAtom,
    pub flags: c_uint,
    pub info: c_uint,
}

impl ::std::fmt::Debug for GtkTargetPair {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTargetPair @ {self:p}"))
            .field("target", &self.target)
            .field("flags", &self.flags)
            .field("info", &self.info)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTearoffMenuItemClass {
    pub parent_class: GtkMenuItemClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTearoffMenuItemClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTearoffMenuItemClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTearoffMenuItemPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTearoffMenuItemPrivate = *mut _GtkTearoffMenuItemPrivate;

#[repr(C)]
pub struct GtkTextAppearance {
    pub bg_color: gdk::GdkColor,
    pub fg_color: gdk::GdkColor,
    pub rise: c_int,
    pub underline: c_uint,
    _truncated_record_marker: c_void,
    // field strikethrough has incomplete type
}

impl ::std::fmt::Debug for GtkTextAppearance {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextAppearance @ {self:p}"))
            .field("bg_color", &self.bg_color)
            .field("fg_color", &self.fg_color)
            .field("rise", &self.rise)
            .field("underline", &self.underline)
            .finish()
    }
}

#[repr(C)]
pub struct GtkTextAttributes {
    pub refcount: c_uint,
    _truncated_record_marker: c_void,
    // /*Ignored*/field appearance has incomplete type
}

impl ::std::fmt::Debug for GtkTextAttributes {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextAttributes @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTextBTree {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTextBTree = *mut _GtkTextBTree;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextBufferClass {
    pub parent_class: gobject::GObjectClass,
    pub insert_text:
        Option<unsafe extern "C" fn(*mut GtkTextBuffer, *mut GtkTextIter, *const c_char, c_int)>,
    pub insert_pixbuf: Option<
        unsafe extern "C" fn(*mut GtkTextBuffer, *mut GtkTextIter, *mut gdk_pixbuf::GdkPixbuf),
    >,
    pub insert_child_anchor:
        Option<unsafe extern "C" fn(*mut GtkTextBuffer, *mut GtkTextIter, *mut GtkTextChildAnchor)>,
    pub delete_range:
        Option<unsafe extern "C" fn(*mut GtkTextBuffer, *mut GtkTextIter, *mut GtkTextIter)>,
    pub changed: Option<unsafe extern "C" fn(*mut GtkTextBuffer)>,
    pub modified_changed: Option<unsafe extern "C" fn(*mut GtkTextBuffer)>,
    pub mark_set:
        Option<unsafe extern "C" fn(*mut GtkTextBuffer, *const GtkTextIter, *mut GtkTextMark)>,
    pub mark_deleted: Option<unsafe extern "C" fn(*mut GtkTextBuffer, *mut GtkTextMark)>,
    pub apply_tag: Option<
        unsafe extern "C" fn(
            *mut GtkTextBuffer,
            *mut GtkTextTag,
            *const GtkTextIter,
            *const GtkTextIter,
        ),
    >,
    pub remove_tag: Option<
        unsafe extern "C" fn(
            *mut GtkTextBuffer,
            *mut GtkTextTag,
            *const GtkTextIter,
            *const GtkTextIter,
        ),
    >,
    pub begin_user_action: Option<unsafe extern "C" fn(*mut GtkTextBuffer)>,
    pub end_user_action: Option<unsafe extern "C" fn(*mut GtkTextBuffer)>,
    pub paste_done: Option<unsafe extern "C" fn(*mut GtkTextBuffer, *mut GtkClipboard)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTextBufferClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextBufferClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("insert_text", &self.insert_text)
            .field("insert_pixbuf", &self.insert_pixbuf)
            .field("insert_child_anchor", &self.insert_child_anchor)
            .field("delete_range", &self.delete_range)
            .field("changed", &self.changed)
            .field("modified_changed", &self.modified_changed)
            .field("mark_set", &self.mark_set)
            .field("mark_deleted", &self.mark_deleted)
            .field("apply_tag", &self.apply_tag)
            .field("remove_tag", &self.remove_tag)
            .field("begin_user_action", &self.begin_user_action)
            .field("end_user_action", &self.end_user_action)
            .field("paste_done", &self.paste_done)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTextBufferPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTextBufferPrivate = *mut _GtkTextBufferPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextCellAccessibleClass {
    pub parent_class: GtkRendererCellAccessibleClass,
}

impl ::std::fmt::Debug for GtkTextCellAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextCellAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTextCellAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTextCellAccessiblePrivate = *mut _GtkTextCellAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextChildAnchorClass {
    pub parent_class: gobject::GObjectClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTextChildAnchorClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextChildAnchorClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextIter {
    pub dummy1: gpointer,
    pub dummy2: gpointer,
    pub dummy3: c_int,
    pub dummy4: c_int,
    pub dummy5: c_int,
    pub dummy6: c_int,
    pub dummy7: c_int,
    pub dummy8: c_int,
    pub dummy9: gpointer,
    pub dummy10: gpointer,
    pub dummy11: c_int,
    pub dummy12: c_int,
    pub dummy13: c_int,
    pub dummy14: gpointer,
}

impl ::std::fmt::Debug for GtkTextIter {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextIter @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextMarkClass {
    pub parent_class: gobject::GObjectClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTextMarkClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextMarkClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextTagClass {
    pub parent_class: gobject::GObjectClass,
    pub event: Option<
        unsafe extern "C" fn(
            *mut GtkTextTag,
            *mut gobject::GObject,
            *mut gdk::GdkEvent,
            *const GtkTextIter,
        ) -> gboolean,
    >,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTextTagClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextTagClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("event", &self.event)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTextTagPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTextTagPrivate = *mut _GtkTextTagPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextTagTableClass {
    pub parent_class: gobject::GObjectClass,
    pub tag_changed: Option<unsafe extern "C" fn(*mut GtkTextTagTable, *mut GtkTextTag, gboolean)>,
    pub tag_added: Option<unsafe extern "C" fn(*mut GtkTextTagTable, *mut GtkTextTag)>,
    pub tag_removed: Option<unsafe extern "C" fn(*mut GtkTextTagTable, *mut GtkTextTag)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTextTagTableClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextTagTableClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("tag_changed", &self.tag_changed)
            .field("tag_added", &self.tag_added)
            .field("tag_removed", &self.tag_removed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTextTagTablePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTextTagTablePrivate = *mut _GtkTextTagTablePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextViewAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkTextViewAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextViewAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTextViewAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTextViewAccessiblePrivate = *mut _GtkTextViewAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextViewClass {
    pub parent_class: GtkContainerClass,
    pub populate_popup: Option<unsafe extern "C" fn(*mut GtkTextView, *mut GtkWidget)>,
    pub move_cursor:
        Option<unsafe extern "C" fn(*mut GtkTextView, GtkMovementStep, c_int, gboolean)>,
    pub set_anchor: Option<unsafe extern "C" fn(*mut GtkTextView)>,
    pub insert_at_cursor: Option<unsafe extern "C" fn(*mut GtkTextView, *const c_char)>,
    pub delete_from_cursor: Option<unsafe extern "C" fn(*mut GtkTextView, GtkDeleteType, c_int)>,
    pub backspace: Option<unsafe extern "C" fn(*mut GtkTextView)>,
    pub cut_clipboard: Option<unsafe extern "C" fn(*mut GtkTextView)>,
    pub copy_clipboard: Option<unsafe extern "C" fn(*mut GtkTextView)>,
    pub paste_clipboard: Option<unsafe extern "C" fn(*mut GtkTextView)>,
    pub toggle_overwrite: Option<unsafe extern "C" fn(*mut GtkTextView)>,
    pub create_buffer: Option<unsafe extern "C" fn(*mut GtkTextView) -> *mut GtkTextBuffer>,
    pub draw_layer:
        Option<unsafe extern "C" fn(*mut GtkTextView, GtkTextViewLayer, *mut cairo::cairo_t)>,
    pub extend_selection: Option<
        unsafe extern "C" fn(
            *mut GtkTextView,
            GtkTextExtendSelection,
            *const GtkTextIter,
            *mut GtkTextIter,
            *mut GtkTextIter,
        ) -> gboolean,
    >,
    pub insert_emoji: Option<unsafe extern "C" fn(*mut GtkTextView)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTextViewClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextViewClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("populate_popup", &self.populate_popup)
            .field("move_cursor", &self.move_cursor)
            .field("set_anchor", &self.set_anchor)
            .field("insert_at_cursor", &self.insert_at_cursor)
            .field("delete_from_cursor", &self.delete_from_cursor)
            .field("backspace", &self.backspace)
            .field("cut_clipboard", &self.cut_clipboard)
            .field("copy_clipboard", &self.copy_clipboard)
            .field("paste_clipboard", &self.paste_clipboard)
            .field("toggle_overwrite", &self.toggle_overwrite)
            .field("create_buffer", &self.create_buffer)
            .field("draw_layer", &self.draw_layer)
            .field("extend_selection", &self.extend_selection)
            .field("insert_emoji", &self.insert_emoji)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTextViewPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTextViewPrivate = *mut _GtkTextViewPrivate;

#[repr(C)]
pub struct _GtkThemeEngine {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkThemeEngine = *mut _GtkThemeEngine;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkThemingEngineClass {
    pub parent_class: gobject::GObjectClass,
    pub render_line: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
        ),
    >,
    pub render_background: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
        ),
    >,
    pub render_frame: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
        ),
    >,
    pub render_frame_gap: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
            GtkPositionType,
            c_double,
            c_double,
        ),
    >,
    pub render_extension: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
            GtkPositionType,
        ),
    >,
    pub render_check: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
        ),
    >,
    pub render_option: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
        ),
    >,
    pub render_arrow: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
        ),
    >,
    pub render_expander: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
        ),
    >,
    pub render_focus: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
        ),
    >,
    pub render_layout: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            *mut pango::PangoLayout,
        ),
    >,
    pub render_slider: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
            GtkOrientation,
        ),
    >,
    pub render_handle: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
        ),
    >,
    pub render_activity: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            c_double,
            c_double,
            c_double,
            c_double,
        ),
    >,
    pub render_icon_pixbuf: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *const GtkIconSource,
            GtkIconSize,
        ) -> *mut gdk_pixbuf::GdkPixbuf,
    >,
    pub render_icon: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            *mut gdk_pixbuf::GdkPixbuf,
            c_double,
            c_double,
        ),
    >,
    pub render_icon_surface: Option<
        unsafe extern "C" fn(
            *mut GtkThemingEngine,
            *mut cairo::cairo_t,
            *mut cairo::cairo_surface_t,
            c_double,
            c_double,
        ),
    >,
    pub padding: [gpointer; 14],
}

impl ::std::fmt::Debug for GtkThemingEngineClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkThemingEngineClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("render_line", &self.render_line)
            .field("render_background", &self.render_background)
            .field("render_frame", &self.render_frame)
            .field("render_frame_gap", &self.render_frame_gap)
            .field("render_extension", &self.render_extension)
            .field("render_check", &self.render_check)
            .field("render_option", &self.render_option)
            .field("render_arrow", &self.render_arrow)
            .field("render_expander", &self.render_expander)
            .field("render_focus", &self.render_focus)
            .field("render_layout", &self.render_layout)
            .field("render_slider", &self.render_slider)
            .field("render_handle", &self.render_handle)
            .field("render_activity", &self.render_activity)
            .field("render_icon_pixbuf", &self.render_icon_pixbuf)
            .field("render_icon", &self.render_icon)
            .field("render_icon_surface", &self.render_icon_surface)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkThemingEnginePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkThemingEnginePrivate = *mut _GtkThemingEnginePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToggleActionClass {
    pub parent_class: GtkActionClass,
    pub toggled: Option<unsafe extern "C" fn(*mut GtkToggleAction)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkToggleActionClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToggleActionClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("toggled", &self.toggled)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToggleActionEntry {
    pub name: *const c_char,
    pub stock_id: *const c_char,
    pub label: *const c_char,
    pub accelerator: *const c_char,
    pub tooltip: *const c_char,
    pub callback: gobject::GCallback,
    pub is_active: gboolean,
}

impl ::std::fmt::Debug for GtkToggleActionEntry {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToggleActionEntry @ {self:p}"))
            .field("name", &self.name)
            .field("stock_id", &self.stock_id)
            .field("label", &self.label)
            .field("accelerator", &self.accelerator)
            .field("tooltip", &self.tooltip)
            .field("callback", &self.callback)
            .field("is_active", &self.is_active)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkToggleActionPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkToggleActionPrivate = *mut _GtkToggleActionPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToggleButtonAccessibleClass {
    pub parent_class: GtkButtonAccessibleClass,
}

impl ::std::fmt::Debug for GtkToggleButtonAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToggleButtonAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkToggleButtonAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkToggleButtonAccessiblePrivate = *mut _GtkToggleButtonAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToggleButtonClass {
    pub parent_class: GtkButtonClass,
    pub toggled: Option<unsafe extern "C" fn(*mut GtkToggleButton)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkToggleButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToggleButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("toggled", &self.toggled)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkToggleButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkToggleButtonPrivate = *mut _GtkToggleButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToggleToolButtonClass {
    pub parent_class: GtkToolButtonClass,
    pub toggled: Option<unsafe extern "C" fn(*mut GtkToggleToolButton)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkToggleToolButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToggleToolButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("toggled", &self.toggled)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkToggleToolButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkToggleToolButtonPrivate = *mut _GtkToggleToolButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToolButtonClass {
    pub parent_class: GtkToolItemClass,
    pub button_type: GType,
    pub clicked: Option<unsafe extern "C" fn(*mut GtkToolButton)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkToolButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToolButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("button_type", &self.button_type)
            .field("clicked", &self.clicked)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkToolButtonPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkToolButtonPrivate = *mut _GtkToolButtonPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToolItemClass {
    pub parent_class: GtkBinClass,
    pub create_menu_proxy: Option<unsafe extern "C" fn(*mut GtkToolItem) -> gboolean>,
    pub toolbar_reconfigured: Option<unsafe extern "C" fn(*mut GtkToolItem)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkToolItemClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToolItemClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("create_menu_proxy", &self.create_menu_proxy)
            .field("toolbar_reconfigured", &self.toolbar_reconfigured)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToolItemGroupClass {
    pub parent_class: GtkContainerClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkToolItemGroupClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToolItemGroupClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkToolItemGroupPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkToolItemGroupPrivate = *mut _GtkToolItemGroupPrivate;

#[repr(C)]
pub struct _GtkToolItemPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkToolItemPrivate = *mut _GtkToolItemPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToolPaletteClass {
    pub parent_class: GtkContainerClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkToolPaletteClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToolPaletteClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkToolPalettePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkToolPalettePrivate = *mut _GtkToolPalettePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToolShellIface {
    pub g_iface: gobject::GTypeInterface,
    pub get_icon_size: Option<unsafe extern "C" fn(*mut GtkToolShell) -> GtkIconSize>,
    pub get_orientation: Option<unsafe extern "C" fn(*mut GtkToolShell) -> GtkOrientation>,
    pub get_style: Option<unsafe extern "C" fn(*mut GtkToolShell) -> GtkToolbarStyle>,
    pub get_relief_style: Option<unsafe extern "C" fn(*mut GtkToolShell) -> GtkReliefStyle>,
    pub rebuild_menu: Option<unsafe extern "C" fn(*mut GtkToolShell)>,
    pub get_text_orientation: Option<unsafe extern "C" fn(*mut GtkToolShell) -> GtkOrientation>,
    pub get_text_alignment: Option<unsafe extern "C" fn(*mut GtkToolShell) -> c_float>,
    pub get_ellipsize_mode:
        Option<unsafe extern "C" fn(*mut GtkToolShell) -> pango::PangoEllipsizeMode>,
    pub get_text_size_group: Option<unsafe extern "C" fn(*mut GtkToolShell) -> *mut GtkSizeGroup>,
}

impl ::std::fmt::Debug for GtkToolShellIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToolShellIface @ {self:p}"))
            .field("get_icon_size", &self.get_icon_size)
            .field("get_orientation", &self.get_orientation)
            .field("get_style", &self.get_style)
            .field("get_relief_style", &self.get_relief_style)
            .field("rebuild_menu", &self.rebuild_menu)
            .field("get_text_orientation", &self.get_text_orientation)
            .field("get_text_alignment", &self.get_text_alignment)
            .field("get_ellipsize_mode", &self.get_ellipsize_mode)
            .field("get_text_size_group", &self.get_text_size_group)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToolbarClass {
    pub parent_class: GtkContainerClass,
    pub orientation_changed: Option<unsafe extern "C" fn(*mut GtkToolbar, GtkOrientation)>,
    pub style_changed: Option<unsafe extern "C" fn(*mut GtkToolbar, GtkToolbarStyle)>,
    pub popup_context_menu:
        Option<unsafe extern "C" fn(*mut GtkToolbar, c_int, c_int, c_int) -> gboolean>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkToolbarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToolbarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("orientation_changed", &self.orientation_changed)
            .field("style_changed", &self.style_changed)
            .field("popup_context_menu", &self.popup_context_menu)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkToolbarPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkToolbarPrivate = *mut _GtkToolbarPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToplevelAccessibleClass {
    pub parent_class: atk::AtkObjectClass,
}

impl ::std::fmt::Debug for GtkToplevelAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToplevelAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkToplevelAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkToplevelAccessiblePrivate = *mut _GtkToplevelAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeDragDestIface {
    pub g_iface: gobject::GTypeInterface,
    pub drag_data_received: Option<
        unsafe extern "C" fn(
            *mut GtkTreeDragDest,
            *mut GtkTreePath,
            *mut GtkSelectionData,
        ) -> gboolean,
    >,
    pub row_drop_possible: Option<
        unsafe extern "C" fn(
            *mut GtkTreeDragDest,
            *mut GtkTreePath,
            *mut GtkSelectionData,
        ) -> gboolean,
    >,
}

impl ::std::fmt::Debug for GtkTreeDragDestIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeDragDestIface @ {self:p}"))
            .field("drag_data_received", &self.drag_data_received)
            .field("row_drop_possible", &self.row_drop_possible)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeDragSourceIface {
    pub g_iface: gobject::GTypeInterface,
    pub row_draggable:
        Option<unsafe extern "C" fn(*mut GtkTreeDragSource, *mut GtkTreePath) -> gboolean>,
    pub drag_data_get: Option<
        unsafe extern "C" fn(
            *mut GtkTreeDragSource,
            *mut GtkTreePath,
            *mut GtkSelectionData,
        ) -> gboolean,
    >,
    pub drag_data_delete:
        Option<unsafe extern "C" fn(*mut GtkTreeDragSource, *mut GtkTreePath) -> gboolean>,
}

impl ::std::fmt::Debug for GtkTreeDragSourceIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeDragSourceIface @ {self:p}"))
            .field("row_draggable", &self.row_draggable)
            .field("drag_data_get", &self.drag_data_get)
            .field("drag_data_delete", &self.drag_data_delete)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeIter {
    pub stamp: c_int,
    pub user_data: gpointer,
    pub user_data2: gpointer,
    pub user_data3: gpointer,
}

impl ::std::fmt::Debug for GtkTreeIter {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeIter @ {self:p}"))
            .field("stamp", &self.stamp)
            .field("user_data", &self.user_data)
            .field("user_data2", &self.user_data2)
            .field("user_data3", &self.user_data3)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeModelFilterClass {
    pub parent_class: gobject::GObjectClass,
    pub visible: Option<
        unsafe extern "C" fn(
            *mut GtkTreeModelFilter,
            *mut GtkTreeModel,
            *mut GtkTreeIter,
        ) -> gboolean,
    >,
    pub modify: Option<
        unsafe extern "C" fn(
            *mut GtkTreeModelFilter,
            *mut GtkTreeModel,
            *mut GtkTreeIter,
            *mut gobject::GValue,
            c_int,
        ),
    >,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTreeModelFilterClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeModelFilterClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("visible", &self.visible)
            .field("modify", &self.modify)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTreeModelFilterPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTreeModelFilterPrivate = *mut _GtkTreeModelFilterPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeModelIface {
    pub g_iface: gobject::GTypeInterface,
    pub row_changed:
        Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreePath, *mut GtkTreeIter)>,
    pub row_inserted:
        Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreePath, *mut GtkTreeIter)>,
    pub row_has_child_toggled:
        Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreePath, *mut GtkTreeIter)>,
    pub row_deleted: Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreePath)>,
    pub rows_reordered: Option<
        unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreePath, *mut GtkTreeIter, *mut c_int),
    >,
    pub get_flags: Option<unsafe extern "C" fn(*mut GtkTreeModel) -> GtkTreeModelFlags>,
    pub get_n_columns: Option<unsafe extern "C" fn(*mut GtkTreeModel) -> c_int>,
    pub get_column_type: Option<unsafe extern "C" fn(*mut GtkTreeModel, c_int) -> GType>,
    pub get_iter: Option<
        unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter, *mut GtkTreePath) -> gboolean,
    >,
    pub get_path:
        Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter) -> *mut GtkTreePath>,
    pub get_value: Option<
        unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter, c_int, *mut gobject::GValue),
    >,
    pub iter_next: Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter) -> gboolean>,
    pub iter_previous:
        Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter) -> gboolean>,
    pub iter_children: Option<
        unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter, *mut GtkTreeIter) -> gboolean,
    >,
    pub iter_has_child:
        Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter) -> gboolean>,
    pub iter_n_children: Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter) -> c_int>,
    pub iter_nth_child: Option<
        unsafe extern "C" fn(
            *mut GtkTreeModel,
            *mut GtkTreeIter,
            *mut GtkTreeIter,
            c_int,
        ) -> gboolean,
    >,
    pub iter_parent: Option<
        unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter, *mut GtkTreeIter) -> gboolean,
    >,
    pub ref_node: Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter)>,
    pub unref_node: Option<unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter)>,
}

impl ::std::fmt::Debug for GtkTreeModelIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeModelIface @ {self:p}"))
            .field("row_changed", &self.row_changed)
            .field("row_inserted", &self.row_inserted)
            .field("row_has_child_toggled", &self.row_has_child_toggled)
            .field("row_deleted", &self.row_deleted)
            .field("rows_reordered", &self.rows_reordered)
            .field("get_flags", &self.get_flags)
            .field("get_n_columns", &self.get_n_columns)
            .field("get_column_type", &self.get_column_type)
            .field("get_iter", &self.get_iter)
            .field("get_path", &self.get_path)
            .field("get_value", &self.get_value)
            .field("iter_next", &self.iter_next)
            .field("iter_previous", &self.iter_previous)
            .field("iter_children", &self.iter_children)
            .field("iter_has_child", &self.iter_has_child)
            .field("iter_n_children", &self.iter_n_children)
            .field("iter_nth_child", &self.iter_nth_child)
            .field("iter_parent", &self.iter_parent)
            .field("ref_node", &self.ref_node)
            .field("unref_node", &self.unref_node)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeModelSortClass {
    pub parent_class: gobject::GObjectClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTreeModelSortClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeModelSortClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTreeModelSortPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTreeModelSortPrivate = *mut _GtkTreeModelSortPrivate;

#[repr(C)]
pub struct GtkTreePath {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkTreePath {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreePath @ {self:p}")).finish()
    }
}

#[repr(C)]
pub struct GtkTreeRowReference {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkTreeRowReference {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeRowReference @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeSelectionClass {
    pub parent_class: gobject::GObjectClass,
    pub changed: Option<unsafe extern "C" fn(*mut GtkTreeSelection)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTreeSelectionClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeSelectionClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("changed", &self.changed)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTreeSelectionPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTreeSelectionPrivate = *mut _GtkTreeSelectionPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeSortableIface {
    pub g_iface: gobject::GTypeInterface,
    pub sort_column_changed: Option<unsafe extern "C" fn(*mut GtkTreeSortable)>,
    pub get_sort_column_id: Option<
        unsafe extern "C" fn(*mut GtkTreeSortable, *mut c_int, *mut GtkSortType) -> gboolean,
    >,
    pub set_sort_column_id: Option<unsafe extern "C" fn(*mut GtkTreeSortable, c_int, GtkSortType)>,
    pub set_sort_func: Option<
        unsafe extern "C" fn(
            *mut GtkTreeSortable,
            c_int,
            GtkTreeIterCompareFunc,
            gpointer,
            glib::GDestroyNotify,
        ),
    >,
    pub set_default_sort_func: Option<
        unsafe extern "C" fn(
            *mut GtkTreeSortable,
            GtkTreeIterCompareFunc,
            gpointer,
            glib::GDestroyNotify,
        ),
    >,
    pub has_default_sort_func: Option<unsafe extern "C" fn(*mut GtkTreeSortable) -> gboolean>,
}

impl ::std::fmt::Debug for GtkTreeSortableIface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeSortableIface @ {self:p}"))
            .field("sort_column_changed", &self.sort_column_changed)
            .field("get_sort_column_id", &self.get_sort_column_id)
            .field("set_sort_column_id", &self.set_sort_column_id)
            .field("set_sort_func", &self.set_sort_func)
            .field("set_default_sort_func", &self.set_default_sort_func)
            .field("has_default_sort_func", &self.has_default_sort_func)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeStoreClass {
    pub parent_class: gobject::GObjectClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTreeStoreClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeStoreClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTreeStorePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTreeStorePrivate = *mut _GtkTreeStorePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeViewAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkTreeViewAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeViewAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTreeViewAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTreeViewAccessiblePrivate = *mut _GtkTreeViewAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeViewClass {
    pub parent_class: GtkContainerClass,
    pub row_activated:
        Option<unsafe extern "C" fn(*mut GtkTreeView, *mut GtkTreePath, *mut GtkTreeViewColumn)>,
    pub test_expand_row: Option<
        unsafe extern "C" fn(*mut GtkTreeView, *mut GtkTreeIter, *mut GtkTreePath) -> gboolean,
    >,
    pub test_collapse_row: Option<
        unsafe extern "C" fn(*mut GtkTreeView, *mut GtkTreeIter, *mut GtkTreePath) -> gboolean,
    >,
    pub row_expanded:
        Option<unsafe extern "C" fn(*mut GtkTreeView, *mut GtkTreeIter, *mut GtkTreePath)>,
    pub row_collapsed:
        Option<unsafe extern "C" fn(*mut GtkTreeView, *mut GtkTreeIter, *mut GtkTreePath)>,
    pub columns_changed: Option<unsafe extern "C" fn(*mut GtkTreeView)>,
    pub cursor_changed: Option<unsafe extern "C" fn(*mut GtkTreeView)>,
    pub move_cursor:
        Option<unsafe extern "C" fn(*mut GtkTreeView, GtkMovementStep, c_int) -> gboolean>,
    pub select_all: Option<unsafe extern "C" fn(*mut GtkTreeView) -> gboolean>,
    pub unselect_all: Option<unsafe extern "C" fn(*mut GtkTreeView) -> gboolean>,
    pub select_cursor_row: Option<unsafe extern "C" fn(*mut GtkTreeView, gboolean) -> gboolean>,
    pub toggle_cursor_row: Option<unsafe extern "C" fn(*mut GtkTreeView) -> gboolean>,
    pub expand_collapse_cursor_row:
        Option<unsafe extern "C" fn(*mut GtkTreeView, gboolean, gboolean, gboolean) -> gboolean>,
    pub select_cursor_parent: Option<unsafe extern "C" fn(*mut GtkTreeView) -> gboolean>,
    pub start_interactive_search: Option<unsafe extern "C" fn(*mut GtkTreeView) -> gboolean>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved5: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved8: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTreeViewClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeViewClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("row_activated", &self.row_activated)
            .field("test_expand_row", &self.test_expand_row)
            .field("test_collapse_row", &self.test_collapse_row)
            .field("row_expanded", &self.row_expanded)
            .field("row_collapsed", &self.row_collapsed)
            .field("columns_changed", &self.columns_changed)
            .field("cursor_changed", &self.cursor_changed)
            .field("move_cursor", &self.move_cursor)
            .field("select_all", &self.select_all)
            .field("unselect_all", &self.unselect_all)
            .field("select_cursor_row", &self.select_cursor_row)
            .field("toggle_cursor_row", &self.toggle_cursor_row)
            .field(
                "expand_collapse_cursor_row",
                &self.expand_collapse_cursor_row,
            )
            .field("select_cursor_parent", &self.select_cursor_parent)
            .field("start_interactive_search", &self.start_interactive_search)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .field("_gtk_reserved5", &self._gtk_reserved5)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .field("_gtk_reserved8", &self._gtk_reserved8)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeViewColumnClass {
    pub parent_class: gobject::GInitiallyUnownedClass,
    pub clicked: Option<unsafe extern "C" fn(*mut GtkTreeViewColumn)>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkTreeViewColumnClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeViewColumnClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("clicked", &self.clicked)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTreeViewColumnPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTreeViewColumnPrivate = *mut _GtkTreeViewColumnPrivate;

#[repr(C)]
pub struct _GtkTreeViewPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkTreeViewPrivate = *mut _GtkTreeViewPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkUIManagerClass {
    pub parent_class: gobject::GObjectClass,
    pub add_widget: Option<unsafe extern "C" fn(*mut GtkUIManager, *mut GtkWidget)>,
    pub actions_changed: Option<unsafe extern "C" fn(*mut GtkUIManager)>,
    pub connect_proxy:
        Option<unsafe extern "C" fn(*mut GtkUIManager, *mut GtkAction, *mut GtkWidget)>,
    pub disconnect_proxy:
        Option<unsafe extern "C" fn(*mut GtkUIManager, *mut GtkAction, *mut GtkWidget)>,
    pub pre_activate: Option<unsafe extern "C" fn(*mut GtkUIManager, *mut GtkAction)>,
    pub post_activate: Option<unsafe extern "C" fn(*mut GtkUIManager, *mut GtkAction)>,
    pub get_widget:
        Option<unsafe extern "C" fn(*mut GtkUIManager, *const c_char) -> *mut GtkWidget>,
    pub get_action:
        Option<unsafe extern "C" fn(*mut GtkUIManager, *const c_char) -> *mut GtkAction>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkUIManagerClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkUIManagerClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("add_widget", &self.add_widget)
            .field("actions_changed", &self.actions_changed)
            .field("connect_proxy", &self.connect_proxy)
            .field("disconnect_proxy", &self.disconnect_proxy)
            .field("pre_activate", &self.pre_activate)
            .field("post_activate", &self.post_activate)
            .field("get_widget", &self.get_widget)
            .field("get_action", &self.get_action)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkUIManagerPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkUIManagerPrivate = *mut _GtkUIManagerPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVBoxClass {
    pub parent_class: GtkBoxClass,
}

impl ::std::fmt::Debug for GtkVBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVBoxClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVButtonBoxClass {
    pub parent_class: GtkButtonBoxClass,
}

impl ::std::fmt::Debug for GtkVButtonBoxClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVButtonBoxClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVPanedClass {
    pub parent_class: GtkPanedClass,
}

impl ::std::fmt::Debug for GtkVPanedClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVPanedClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVScaleClass {
    pub parent_class: GtkScaleClass,
}

impl ::std::fmt::Debug for GtkVScaleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVScaleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVScrollbarClass {
    pub parent_class: GtkScrollbarClass,
}

impl ::std::fmt::Debug for GtkVScrollbarClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVScrollbarClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVSeparatorClass {
    pub parent_class: GtkSeparatorClass,
}

impl ::std::fmt::Debug for GtkVSeparatorClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVSeparatorClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkViewportClass {
    pub parent_class: GtkBinClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkViewportClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkViewportClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkViewportPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkViewportPrivate = *mut _GtkViewportPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVolumeButtonClass {
    pub parent_class: GtkScaleButtonClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkVolumeButtonClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVolumeButtonClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkWidgetAccessibleClass {
    pub parent_class: GtkAccessibleClass,
    pub notify_gtk: Option<unsafe extern "C" fn(*mut gobject::GObject, *mut gobject::GParamSpec)>,
}

impl ::std::fmt::Debug for GtkWidgetAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWidgetAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("notify_gtk", &self.notify_gtk)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkWidgetAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkWidgetAccessiblePrivate = *mut _GtkWidgetAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkWidgetClass {
    pub parent_class: gobject::GInitiallyUnownedClass,
    pub activate_signal: c_uint,
    pub dispatch_child_properties_changed:
        Option<unsafe extern "C" fn(*mut GtkWidget, c_uint, *mut *mut gobject::GParamSpec)>,
    pub destroy: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub show: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub show_all: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub hide: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub map: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub unmap: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub realize: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub unrealize: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub size_allocate: Option<unsafe extern "C" fn(*mut GtkWidget, *mut GtkAllocation)>,
    pub state_changed: Option<unsafe extern "C" fn(*mut GtkWidget, GtkStateType)>,
    pub state_flags_changed: Option<unsafe extern "C" fn(*mut GtkWidget, GtkStateFlags)>,
    pub parent_set: Option<unsafe extern "C" fn(*mut GtkWidget, *mut GtkWidget)>,
    pub hierarchy_changed: Option<unsafe extern "C" fn(*mut GtkWidget, *mut GtkWidget)>,
    pub style_set: Option<unsafe extern "C" fn(*mut GtkWidget, *mut GtkStyle)>,
    pub direction_changed: Option<unsafe extern "C" fn(*mut GtkWidget, GtkTextDirection)>,
    pub grab_notify: Option<unsafe extern "C" fn(*mut GtkWidget, gboolean)>,
    pub child_notify: Option<unsafe extern "C" fn(*mut GtkWidget, *mut gobject::GParamSpec)>,
    pub draw: Option<unsafe extern "C" fn(*mut GtkWidget, *mut cairo::cairo_t) -> gboolean>,
    pub get_request_mode: Option<unsafe extern "C" fn(*mut GtkWidget) -> GtkSizeRequestMode>,
    pub get_preferred_height: Option<unsafe extern "C" fn(*mut GtkWidget, *mut c_int, *mut c_int)>,
    pub get_preferred_width_for_height:
        Option<unsafe extern "C" fn(*mut GtkWidget, c_int, *mut c_int, *mut c_int)>,
    pub get_preferred_width: Option<unsafe extern "C" fn(*mut GtkWidget, *mut c_int, *mut c_int)>,
    pub get_preferred_height_for_width:
        Option<unsafe extern "C" fn(*mut GtkWidget, c_int, *mut c_int, *mut c_int)>,
    pub mnemonic_activate: Option<unsafe extern "C" fn(*mut GtkWidget, gboolean) -> gboolean>,
    pub grab_focus: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub focus: Option<unsafe extern "C" fn(*mut GtkWidget, GtkDirectionType) -> gboolean>,
    pub move_focus: Option<unsafe extern "C" fn(*mut GtkWidget, GtkDirectionType)>,
    pub keynav_failed: Option<unsafe extern "C" fn(*mut GtkWidget, GtkDirectionType) -> gboolean>,
    pub event: Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEvent) -> gboolean>,
    pub button_press_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventButton) -> gboolean>,
    pub button_release_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventButton) -> gboolean>,
    pub scroll_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventScroll) -> gboolean>,
    pub motion_notify_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventMotion) -> gboolean>,
    pub delete_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventAny) -> gboolean>,
    pub destroy_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventAny) -> gboolean>,
    pub key_press_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventKey) -> gboolean>,
    pub key_release_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventKey) -> gboolean>,
    pub enter_notify_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventCrossing) -> gboolean>,
    pub leave_notify_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventCrossing) -> gboolean>,
    pub configure_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventConfigure) -> gboolean>,
    pub focus_in_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventFocus) -> gboolean>,
    pub focus_out_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventFocus) -> gboolean>,
    pub map_event: Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventAny) -> gboolean>,
    pub unmap_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventAny) -> gboolean>,
    pub property_notify_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventProperty) -> gboolean>,
    pub selection_clear_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventSelection) -> gboolean>,
    pub selection_request_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventSelection) -> gboolean>,
    pub selection_notify_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventSelection) -> gboolean>,
    pub proximity_in_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventProximity) -> gboolean>,
    pub proximity_out_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventProximity) -> gboolean>,
    pub visibility_notify_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventVisibility) -> gboolean>,
    pub window_state_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventWindowState) -> gboolean>,
    pub damage_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventExpose) -> gboolean>,
    pub grab_broken_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventGrabBroken) -> gboolean>,
    pub selection_get:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut GtkSelectionData, c_uint, c_uint)>,
    pub selection_received:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut GtkSelectionData, c_uint)>,
    pub drag_begin: Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkDragContext)>,
    pub drag_end: Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkDragContext)>,
    pub drag_data_get: Option<
        unsafe extern "C" fn(
            *mut GtkWidget,
            *mut gdk::GdkDragContext,
            *mut GtkSelectionData,
            c_uint,
            c_uint,
        ),
    >,
    pub drag_data_delete: Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkDragContext)>,
    pub drag_leave: Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkDragContext, c_uint)>,
    pub drag_motion: Option<
        unsafe extern "C" fn(
            *mut GtkWidget,
            *mut gdk::GdkDragContext,
            c_int,
            c_int,
            c_uint,
        ) -> gboolean,
    >,
    pub drag_drop: Option<
        unsafe extern "C" fn(
            *mut GtkWidget,
            *mut gdk::GdkDragContext,
            c_int,
            c_int,
            c_uint,
        ) -> gboolean,
    >,
    pub drag_data_received: Option<
        unsafe extern "C" fn(
            *mut GtkWidget,
            *mut gdk::GdkDragContext,
            c_int,
            c_int,
            *mut GtkSelectionData,
            c_uint,
            c_uint,
        ),
    >,
    pub drag_failed: Option<
        unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkDragContext, GtkDragResult) -> gboolean,
    >,
    pub popup_menu: Option<unsafe extern "C" fn(*mut GtkWidget) -> gboolean>,
    pub show_help: Option<unsafe extern "C" fn(*mut GtkWidget, GtkWidgetHelpType) -> gboolean>,
    pub get_accessible: Option<unsafe extern "C" fn(*mut GtkWidget) -> *mut atk::AtkObject>,
    pub screen_changed: Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkScreen)>,
    pub can_activate_accel: Option<unsafe extern "C" fn(*mut GtkWidget, c_uint) -> gboolean>,
    pub composited_changed: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub query_tooltip: Option<
        unsafe extern "C" fn(*mut GtkWidget, c_int, c_int, gboolean, *mut GtkTooltip) -> gboolean,
    >,
    pub compute_expand: Option<unsafe extern "C" fn(*mut GtkWidget, *mut gboolean, *mut gboolean)>,
    pub adjust_size_request:
        Option<unsafe extern "C" fn(*mut GtkWidget, GtkOrientation, *mut c_int, *mut c_int)>,
    pub adjust_size_allocation: Option<
        unsafe extern "C" fn(
            *mut GtkWidget,
            GtkOrientation,
            *mut c_int,
            *mut c_int,
            *mut c_int,
            *mut c_int,
        ),
    >,
    pub style_updated: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub touch_event:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut gdk::GdkEventTouch) -> gboolean>,
    pub get_preferred_height_and_baseline_for_width: Option<
        unsafe extern "C" fn(*mut GtkWidget, c_int, *mut c_int, *mut c_int, *mut c_int, *mut c_int),
    >,
    pub adjust_baseline_request:
        Option<unsafe extern "C" fn(*mut GtkWidget, *mut c_int, *mut c_int)>,
    pub adjust_baseline_allocation: Option<unsafe extern "C" fn(*mut GtkWidget, *mut c_int)>,
    pub queue_draw_region:
        Option<unsafe extern "C" fn(*mut GtkWidget, *const cairo::cairo_region_t)>,
    pub priv_: *mut GtkWidgetClassPrivate,
    pub _gtk_reserved6: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved7: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkWidgetClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWidgetClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("activate_signal", &self.activate_signal)
            .field(
                "dispatch_child_properties_changed",
                &self.dispatch_child_properties_changed,
            )
            .field("destroy", &self.destroy)
            .field("show", &self.show)
            .field("show_all", &self.show_all)
            .field("hide", &self.hide)
            .field("map", &self.map)
            .field("unmap", &self.unmap)
            .field("realize", &self.realize)
            .field("unrealize", &self.unrealize)
            .field("size_allocate", &self.size_allocate)
            .field("state_changed", &self.state_changed)
            .field("state_flags_changed", &self.state_flags_changed)
            .field("parent_set", &self.parent_set)
            .field("hierarchy_changed", &self.hierarchy_changed)
            .field("style_set", &self.style_set)
            .field("direction_changed", &self.direction_changed)
            .field("grab_notify", &self.grab_notify)
            .field("child_notify", &self.child_notify)
            .field("draw", &self.draw)
            .field("get_request_mode", &self.get_request_mode)
            .field("get_preferred_height", &self.get_preferred_height)
            .field(
                "get_preferred_width_for_height",
                &self.get_preferred_width_for_height,
            )
            .field("get_preferred_width", &self.get_preferred_width)
            .field(
                "get_preferred_height_for_width",
                &self.get_preferred_height_for_width,
            )
            .field("mnemonic_activate", &self.mnemonic_activate)
            .field("grab_focus", &self.grab_focus)
            .field("focus", &self.focus)
            .field("move_focus", &self.move_focus)
            .field("keynav_failed", &self.keynav_failed)
            .field("event", &self.event)
            .field("button_press_event", &self.button_press_event)
            .field("button_release_event", &self.button_release_event)
            .field("scroll_event", &self.scroll_event)
            .field("motion_notify_event", &self.motion_notify_event)
            .field("delete_event", &self.delete_event)
            .field("destroy_event", &self.destroy_event)
            .field("key_press_event", &self.key_press_event)
            .field("key_release_event", &self.key_release_event)
            .field("enter_notify_event", &self.enter_notify_event)
            .field("leave_notify_event", &self.leave_notify_event)
            .field("configure_event", &self.configure_event)
            .field("focus_in_event", &self.focus_in_event)
            .field("focus_out_event", &self.focus_out_event)
            .field("map_event", &self.map_event)
            .field("unmap_event", &self.unmap_event)
            .field("property_notify_event", &self.property_notify_event)
            .field("selection_clear_event", &self.selection_clear_event)
            .field("selection_request_event", &self.selection_request_event)
            .field("selection_notify_event", &self.selection_notify_event)
            .field("proximity_in_event", &self.proximity_in_event)
            .field("proximity_out_event", &self.proximity_out_event)
            .field("visibility_notify_event", &self.visibility_notify_event)
            .field("window_state_event", &self.window_state_event)
            .field("damage_event", &self.damage_event)
            .field("grab_broken_event", &self.grab_broken_event)
            .field("selection_get", &self.selection_get)
            .field("selection_received", &self.selection_received)
            .field("drag_begin", &self.drag_begin)
            .field("drag_end", &self.drag_end)
            .field("drag_data_get", &self.drag_data_get)
            .field("drag_data_delete", &self.drag_data_delete)
            .field("drag_leave", &self.drag_leave)
            .field("drag_motion", &self.drag_motion)
            .field("drag_drop", &self.drag_drop)
            .field("drag_data_received", &self.drag_data_received)
            .field("drag_failed", &self.drag_failed)
            .field("popup_menu", &self.popup_menu)
            .field("show_help", &self.show_help)
            .field("get_accessible", &self.get_accessible)
            .field("screen_changed", &self.screen_changed)
            .field("can_activate_accel", &self.can_activate_accel)
            .field("composited_changed", &self.composited_changed)
            .field("query_tooltip", &self.query_tooltip)
            .field("compute_expand", &self.compute_expand)
            .field("adjust_size_request", &self.adjust_size_request)
            .field("adjust_size_allocation", &self.adjust_size_allocation)
            .field("style_updated", &self.style_updated)
            .field("touch_event", &self.touch_event)
            .field(
                "get_preferred_height_and_baseline_for_width",
                &self.get_preferred_height_and_baseline_for_width,
            )
            .field("adjust_baseline_request", &self.adjust_baseline_request)
            .field(
                "adjust_baseline_allocation",
                &self.adjust_baseline_allocation,
            )
            .field("queue_draw_region", &self.queue_draw_region)
            .field("_gtk_reserved6", &self._gtk_reserved6)
            .field("_gtk_reserved7", &self._gtk_reserved7)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkWidgetClassPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkWidgetClassPrivate = *mut _GtkWidgetClassPrivate;

#[repr(C)]
pub struct GtkWidgetPath {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkWidgetPath {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWidgetPath @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct _GtkWidgetPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkWidgetPrivate = *mut _GtkWidgetPrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkWindowAccessibleClass {
    pub parent_class: GtkContainerAccessibleClass,
}

impl ::std::fmt::Debug for GtkWindowAccessibleClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWindowAccessibleClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkWindowAccessiblePrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkWindowAccessiblePrivate = *mut _GtkWindowAccessiblePrivate;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkWindowClass {
    pub parent_class: GtkBinClass,
    pub set_focus: Option<unsafe extern "C" fn(*mut GtkWindow, *mut GtkWidget)>,
    pub activate_focus: Option<unsafe extern "C" fn(*mut GtkWindow)>,
    pub activate_default: Option<unsafe extern "C" fn(*mut GtkWindow)>,
    pub keys_changed: Option<unsafe extern "C" fn(*mut GtkWindow)>,
    pub enable_debugging: Option<unsafe extern "C" fn(*mut GtkWindow, gboolean) -> gboolean>,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkWindowClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWindowClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("set_focus", &self.set_focus)
            .field("activate_focus", &self.activate_focus)
            .field("activate_default", &self.activate_default)
            .field("keys_changed", &self.keys_changed)
            .field("enable_debugging", &self.enable_debugging)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkWindowGeometryInfo {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkWindowGeometryInfo = *mut _GtkWindowGeometryInfo;

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkWindowGroupClass {
    pub parent_class: gobject::GObjectClass,
    pub _gtk_reserved1: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved2: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved3: Option<unsafe extern "C" fn()>,
    pub _gtk_reserved4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for GtkWindowGroupClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWindowGroupClass @ {self:p}"))
            .field("parent_class", &self.parent_class)
            .field("_gtk_reserved1", &self._gtk_reserved1)
            .field("_gtk_reserved2", &self._gtk_reserved2)
            .field("_gtk_reserved3", &self._gtk_reserved3)
            .field("_gtk_reserved4", &self._gtk_reserved4)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkWindowGroupPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkWindowGroupPrivate = *mut _GtkWindowGroupPrivate;

#[repr(C)]
pub struct _GtkWindowPrivate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

pub type GtkWindowPrivate = *mut _GtkWindowPrivate;

// Classes
#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAboutDialog {
    pub parent_instance: GtkDialog,
    pub priv_: *mut GtkAboutDialogPrivate,
}

impl ::std::fmt::Debug for GtkAboutDialog {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAboutDialog @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAccelGroup {
    pub parent: gobject::GObject,
    pub priv_: *mut GtkAccelGroupPrivate,
}

impl ::std::fmt::Debug for GtkAccelGroup {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAccelGroup @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAccelLabel {
    pub label: GtkLabel,
    pub priv_: *mut GtkAccelLabelPrivate,
}

impl ::std::fmt::Debug for GtkAccelLabel {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAccelLabel @ {self:p}"))
            .field("label", &self.label)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
pub struct GtkAccelMap {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkAccelMap {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAccelMap @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAccessible {
    pub parent: atk::AtkObject,
    pub priv_: *mut GtkAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAction {
    pub object: gobject::GObject,
    pub private_data: *mut GtkActionPrivate,
}

impl ::std::fmt::Debug for GtkAction {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAction @ {self:p}"))
            .field("object", &self.object)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkActionBar {
    pub bin: GtkBin,
}

impl ::std::fmt::Debug for GtkActionBar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkActionBar @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkActionGroup {
    pub parent: gobject::GObject,
    pub priv_: *mut GtkActionGroupPrivate,
}

impl ::std::fmt::Debug for GtkActionGroup {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkActionGroup @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAdjustment {
    pub parent_instance: gobject::GInitiallyUnowned,
    pub priv_: *mut GtkAdjustmentPrivate,
}

impl ::std::fmt::Debug for GtkAdjustment {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAdjustment @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAlignment {
    pub bin: GtkBin,
    pub priv_: *mut GtkAlignmentPrivate,
}

impl ::std::fmt::Debug for GtkAlignment {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAlignment @ {self:p}"))
            .field("bin", &self.bin)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAppChooserButton {
    pub parent: GtkComboBox,
    pub priv_: *mut GtkAppChooserButtonPrivate,
}

impl ::std::fmt::Debug for GtkAppChooserButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAppChooserButton @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAppChooserDialog {
    pub parent: GtkDialog,
    pub priv_: *mut GtkAppChooserDialogPrivate,
}

impl ::std::fmt::Debug for GtkAppChooserDialog {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAppChooserDialog @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAppChooserWidget {
    pub parent: GtkBox,
    pub priv_: *mut GtkAppChooserWidgetPrivate,
}

impl ::std::fmt::Debug for GtkAppChooserWidget {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAppChooserWidget @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkApplication {
    pub parent: gio::GApplication,
    pub priv_: *mut GtkApplicationPrivate,
}

impl ::std::fmt::Debug for GtkApplication {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkApplication @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkApplicationWindow {
    pub parent_instance: GtkWindow,
    pub priv_: *mut GtkApplicationWindowPrivate,
}

impl ::std::fmt::Debug for GtkApplicationWindow {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkApplicationWindow @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkArrow {
    pub misc: GtkMisc,
    pub priv_: *mut GtkArrowPrivate,
}

impl ::std::fmt::Debug for GtkArrow {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkArrow @ {self:p}"))
            .field("misc", &self.misc)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkArrowAccessible {
    pub parent: GtkWidgetAccessible,
    pub priv_: *mut GtkArrowAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkArrowAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkArrowAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAspectFrame {
    pub frame: GtkFrame,
    pub priv_: *mut GtkAspectFramePrivate,
}

impl ::std::fmt::Debug for GtkAspectFrame {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAspectFrame @ {self:p}"))
            .field("frame", &self.frame)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkAssistant {
    pub parent: GtkWindow,
    pub priv_: *mut GtkAssistantPrivate,
}

impl ::std::fmt::Debug for GtkAssistant {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkAssistant @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBin {
    pub container: GtkContainer,
    pub priv_: *mut GtkBinPrivate,
}

impl ::std::fmt::Debug for GtkBin {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBin @ {self:p}"))
            .field("container", &self.container)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBooleanCellAccessible {
    pub parent: GtkRendererCellAccessible,
    pub priv_: *mut GtkBooleanCellAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkBooleanCellAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBooleanCellAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBox {
    pub container: GtkContainer,
    pub priv_: *mut GtkBoxPrivate,
}

impl ::std::fmt::Debug for GtkBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBox @ {self:p}"))
            .field("container", &self.container)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkBuilder {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkBuilderPrivate,
}

impl ::std::fmt::Debug for GtkBuilder {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkBuilder @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkButton {
    pub bin: GtkBin,
    pub priv_: *mut GtkButtonPrivate,
}

impl ::std::fmt::Debug for GtkButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkButton @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkButtonAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkButtonAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkButtonAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkButtonAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkButtonBox {
    pub box_: GtkBox,
    pub priv_: *mut GtkButtonBoxPrivate,
}

impl ::std::fmt::Debug for GtkButtonBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkButtonBox @ {self:p}"))
            .field("box_", &self.box_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCalendar {
    pub widget: GtkWidget,
    pub priv_: *mut GtkCalendarPrivate,
}

impl ::std::fmt::Debug for GtkCalendar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCalendar @ {self:p}"))
            .field("widget", &self.widget)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellAccessible {
    pub parent: GtkAccessible,
    pub priv_: *mut GtkCellAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkCellAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellArea {
    pub parent_instance: gobject::GInitiallyUnowned,
    pub priv_: *mut GtkCellAreaPrivate,
}

impl ::std::fmt::Debug for GtkCellArea {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellArea @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellAreaBox {
    pub parent_instance: GtkCellArea,
    pub priv_: *mut GtkCellAreaBoxPrivate,
}

impl ::std::fmt::Debug for GtkCellAreaBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellAreaBox @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellAreaContext {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkCellAreaContextPrivate,
}

impl ::std::fmt::Debug for GtkCellAreaContext {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellAreaContext @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRenderer {
    pub parent_instance: gobject::GInitiallyUnowned,
    pub priv_: *mut GtkCellRendererPrivate,
}

impl ::std::fmt::Debug for GtkCellRenderer {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRenderer @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererAccel {
    pub parent: GtkCellRendererText,
    pub priv_: *mut GtkCellRendererAccelPrivate,
}

impl ::std::fmt::Debug for GtkCellRendererAccel {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererAccel @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererCombo {
    pub parent: GtkCellRendererText,
    pub priv_: *mut GtkCellRendererComboPrivate,
}

impl ::std::fmt::Debug for GtkCellRendererCombo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererCombo @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererPixbuf {
    pub parent: GtkCellRenderer,
    pub priv_: *mut GtkCellRendererPixbufPrivate,
}

impl ::std::fmt::Debug for GtkCellRendererPixbuf {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererPixbuf @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererProgress {
    pub parent_instance: GtkCellRenderer,
    pub priv_: *mut GtkCellRendererProgressPrivate,
}

impl ::std::fmt::Debug for GtkCellRendererProgress {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererProgress @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererSpin {
    pub parent: GtkCellRendererText,
    pub priv_: *mut GtkCellRendererSpinPrivate,
}

impl ::std::fmt::Debug for GtkCellRendererSpin {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererSpin @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererSpinner {
    pub parent: GtkCellRenderer,
    pub priv_: *mut GtkCellRendererSpinnerPrivate,
}

impl ::std::fmt::Debug for GtkCellRendererSpinner {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererSpinner @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererText {
    pub parent: GtkCellRenderer,
    pub priv_: *mut GtkCellRendererTextPrivate,
}

impl ::std::fmt::Debug for GtkCellRendererText {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererText @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellRendererToggle {
    pub parent: GtkCellRenderer,
    pub priv_: *mut GtkCellRendererTogglePrivate,
}

impl ::std::fmt::Debug for GtkCellRendererToggle {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererToggle @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCellView {
    pub parent_instance: GtkWidget,
    pub priv_: *mut GtkCellViewPrivate,
}

impl ::std::fmt::Debug for GtkCellView {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellView @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCheckButton {
    pub toggle_button: GtkToggleButton,
}

impl ::std::fmt::Debug for GtkCheckButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCheckButton @ {self:p}"))
            .field("toggle_button", &self.toggle_button)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCheckMenuItem {
    pub menu_item: GtkMenuItem,
    pub priv_: *mut GtkCheckMenuItemPrivate,
}

impl ::std::fmt::Debug for GtkCheckMenuItem {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCheckMenuItem @ {self:p}"))
            .field("menu_item", &self.menu_item)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCheckMenuItemAccessible {
    pub parent: GtkMenuItemAccessible,
    pub priv_: *mut GtkCheckMenuItemAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkCheckMenuItemAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCheckMenuItemAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
pub struct GtkClipboard {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkClipboard {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkClipboard @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkColorButton {
    pub button: GtkButton,
    pub priv_: *mut GtkColorButtonPrivate,
}

impl ::std::fmt::Debug for GtkColorButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkColorButton @ {self:p}"))
            .field("button", &self.button)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkColorChooserDialog {
    pub parent_instance: GtkDialog,
    pub priv_: *mut GtkColorChooserDialogPrivate,
}

impl ::std::fmt::Debug for GtkColorChooserDialog {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkColorChooserDialog @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkColorChooserWidget {
    pub parent_instance: GtkBox,
    pub priv_: *mut GtkColorChooserWidgetPrivate,
}

impl ::std::fmt::Debug for GtkColorChooserWidget {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkColorChooserWidget @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkColorSelection {
    pub parent_instance: GtkBox,
    pub private_data: *mut GtkColorSelectionPrivate,
}

impl ::std::fmt::Debug for GtkColorSelection {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkColorSelection @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkColorSelectionDialog {
    pub parent_instance: GtkDialog,
    pub priv_: *mut GtkColorSelectionDialogPrivate,
}

impl ::std::fmt::Debug for GtkColorSelectionDialog {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkColorSelectionDialog @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkComboBox {
    pub parent_instance: GtkBin,
    pub priv_: *mut GtkComboBoxPrivate,
}

impl ::std::fmt::Debug for GtkComboBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkComboBox @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkComboBoxAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkComboBoxAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkComboBoxAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkComboBoxAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkComboBoxText {
    pub parent_instance: GtkComboBox,
    pub priv_: *mut GtkComboBoxTextPrivate,
}

impl ::std::fmt::Debug for GtkComboBoxText {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkComboBoxText @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkContainer {
    pub widget: GtkWidget,
    pub priv_: *mut GtkContainerPrivate,
}

impl ::std::fmt::Debug for GtkContainer {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkContainer @ {self:p}"))
            .field("widget", &self.widget)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkContainerAccessible {
    pub parent: GtkWidgetAccessible,
    pub priv_: *mut GtkContainerAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkContainerAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkContainerAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkContainerCellAccessible {
    pub parent: GtkCellAccessible,
    pub priv_: *mut GtkContainerCellAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkContainerCellAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkContainerCellAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkCssProvider {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkCssProviderPrivate,
}

impl ::std::fmt::Debug for GtkCssProvider {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCssProvider @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkDialog {
    pub window: GtkWindow,
    pub priv_: *mut GtkDialogPrivate,
}

impl ::std::fmt::Debug for GtkDialog {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkDialog @ {self:p}"))
            .field("window", &self.window)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkDrawingArea {
    pub widget: GtkWidget,
    pub dummy: gpointer,
}

impl ::std::fmt::Debug for GtkDrawingArea {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkDrawingArea @ {self:p}"))
            .field("widget", &self.widget)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkEntry {
    pub parent_instance: GtkWidget,
    pub priv_: *mut GtkEntryPrivate,
}

impl ::std::fmt::Debug for GtkEntry {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEntry @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkEntryAccessible {
    pub parent: GtkWidgetAccessible,
    pub priv_: *mut GtkEntryAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkEntryAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEntryAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkEntryBuffer {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkEntryBufferPrivate,
}

impl ::std::fmt::Debug for GtkEntryBuffer {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEntryBuffer @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkEntryCompletion {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkEntryCompletionPrivate,
}

impl ::std::fmt::Debug for GtkEntryCompletion {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEntryCompletion @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
pub struct GtkEntryIconAccessible {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkEntryIconAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEntryIconAccessible @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkEventBox {
    pub bin: GtkBin,
    pub priv_: *mut GtkEventBoxPrivate,
}

impl ::std::fmt::Debug for GtkEventBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEventBox @ {self:p}"))
            .field("bin", &self.bin)
            .finish()
    }
}

#[repr(C)]
pub struct GtkEventController {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkEventController {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEventController @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkEventControllerKey {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkEventControllerKey {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEventControllerKey @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkEventControllerMotion {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkEventControllerMotion {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEventControllerMotion @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkEventControllerScroll {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkEventControllerScroll {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkEventControllerScroll @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkExpander {
    pub bin: GtkBin,
    pub priv_: *mut GtkExpanderPrivate,
}

impl ::std::fmt::Debug for GtkExpander {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkExpander @ {self:p}"))
            .field("bin", &self.bin)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkExpanderAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkExpanderAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkExpanderAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkExpanderAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFileChooserButton {
    pub parent: GtkBox,
    pub priv_: *mut GtkFileChooserButtonPrivate,
}

impl ::std::fmt::Debug for GtkFileChooserButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileChooserButton @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFileChooserDialog {
    pub parent_instance: GtkDialog,
    pub priv_: *mut GtkFileChooserDialogPrivate,
}

impl ::std::fmt::Debug for GtkFileChooserDialog {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileChooserDialog @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
pub struct GtkFileChooserNative {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkFileChooserNative {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileChooserNative @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFileChooserWidget {
    pub parent_instance: GtkBox,
    pub priv_: *mut GtkFileChooserWidgetPrivate,
}

impl ::std::fmt::Debug for GtkFileChooserWidget {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileChooserWidget @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFileChooserWidgetAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkFileChooserWidgetAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkFileChooserWidgetAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileChooserWidgetAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
pub struct GtkFileFilter {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkFileFilter {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFileFilter @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFixed {
    pub container: GtkContainer,
    pub priv_: *mut GtkFixedPrivate,
}

impl ::std::fmt::Debug for GtkFixed {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFixed @ {self:p}"))
            .field("container", &self.container)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFlowBox {
    pub container: GtkContainer,
}

impl ::std::fmt::Debug for GtkFlowBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFlowBox @ {self:p}"))
            .field("container", &self.container)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFlowBoxAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkFlowBoxAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkFlowBoxAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFlowBoxAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFlowBoxChild {
    pub parent_instance: GtkBin,
}

impl ::std::fmt::Debug for GtkFlowBoxChild {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFlowBoxChild @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFlowBoxChildAccessible {
    pub parent: GtkContainerAccessible,
}

impl ::std::fmt::Debug for GtkFlowBoxChildAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFlowBoxChildAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFontButton {
    pub button: GtkButton,
    pub priv_: *mut GtkFontButtonPrivate,
}

impl ::std::fmt::Debug for GtkFontButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFontButton @ {self:p}"))
            .field("button", &self.button)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFontChooserDialog {
    pub parent_instance: GtkDialog,
    pub priv_: *mut GtkFontChooserDialogPrivate,
}

impl ::std::fmt::Debug for GtkFontChooserDialog {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFontChooserDialog @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFontChooserWidget {
    pub parent_instance: GtkBox,
    pub priv_: *mut GtkFontChooserWidgetPrivate,
}

impl ::std::fmt::Debug for GtkFontChooserWidget {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFontChooserWidget @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFontSelection {
    pub parent_instance: GtkBox,
    pub priv_: *mut GtkFontSelectionPrivate,
}

impl ::std::fmt::Debug for GtkFontSelection {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFontSelection @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFontSelectionDialog {
    pub parent_instance: GtkDialog,
    pub priv_: *mut GtkFontSelectionDialogPrivate,
}

impl ::std::fmt::Debug for GtkFontSelectionDialog {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFontSelectionDialog @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFrame {
    pub bin: GtkBin,
    pub priv_: *mut GtkFramePrivate,
}

impl ::std::fmt::Debug for GtkFrame {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFrame @ {self:p}"))
            .field("bin", &self.bin)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkFrameAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkFrameAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkFrameAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFrameAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkGLArea {
    pub parent_instance: GtkWidget,
}

impl ::std::fmt::Debug for GtkGLArea {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGLArea @ {self:p}")).finish()
    }
}

#[repr(C)]
pub struct GtkGesture {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkGesture {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGesture @ {self:p}")).finish()
    }
}

#[repr(C)]
pub struct GtkGestureDrag {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkGestureDrag {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGestureDrag @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkGestureLongPress {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkGestureLongPress {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGestureLongPress @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkGestureMultiPress {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkGestureMultiPress {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGestureMultiPress @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkGesturePan {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkGesturePan {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGesturePan @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkGestureRotate {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkGestureRotate {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGestureRotate @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkGestureSingle {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkGestureSingle {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGestureSingle @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkGestureStylus {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkGestureStylus {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGestureStylus @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkGestureSwipe {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkGestureSwipe {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGestureSwipe @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkGestureZoom {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkGestureZoom {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGestureZoom @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkGrid {
    pub container: GtkContainer,
    pub priv_: *mut GtkGridPrivate,
}

impl ::std::fmt::Debug for GtkGrid {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkGrid @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHBox {
    pub box_: GtkBox,
}

impl ::std::fmt::Debug for GtkHBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHBox @ {self:p}"))
            .field("box_", &self.box_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHButtonBox {
    pub button_box: GtkButtonBox,
}

impl ::std::fmt::Debug for GtkHButtonBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHButtonBox @ {self:p}"))
            .field("button_box", &self.button_box)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHPaned {
    pub paned: GtkPaned,
}

impl ::std::fmt::Debug for GtkHPaned {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHPaned @ {self:p}"))
            .field("paned", &self.paned)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHSV {
    pub parent_instance: GtkWidget,
    pub priv_: *mut GtkHSVPrivate,
}

impl ::std::fmt::Debug for GtkHSV {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHSV @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHScale {
    pub scale: GtkScale,
}

impl ::std::fmt::Debug for GtkHScale {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHScale @ {self:p}"))
            .field("scale", &self.scale)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHScrollbar {
    pub scrollbar: GtkScrollbar,
}

impl ::std::fmt::Debug for GtkHScrollbar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHScrollbar @ {self:p}"))
            .field("scrollbar", &self.scrollbar)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHSeparator {
    pub separator: GtkSeparator,
}

impl ::std::fmt::Debug for GtkHSeparator {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHSeparator @ {self:p}"))
            .field("separator", &self.separator)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHandleBox {
    pub bin: GtkBin,
    pub priv_: *mut GtkHandleBoxPrivate,
}

impl ::std::fmt::Debug for GtkHandleBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHandleBox @ {self:p}"))
            .field("bin", &self.bin)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHeaderBar {
    pub container: GtkContainer,
}

impl ::std::fmt::Debug for GtkHeaderBar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHeaderBar @ {self:p}"))
            .field("container", &self.container)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkHeaderBarAccessible {
    pub parent: GtkContainerAccessible,
}

impl ::std::fmt::Debug for GtkHeaderBarAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkHeaderBarAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIMContext {
    pub parent_instance: gobject::GObject,
}

impl ::std::fmt::Debug for GtkIMContext {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIMContext @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIMContextSimple {
    pub object: GtkIMContext,
    pub priv_: *mut GtkIMContextSimplePrivate,
}

impl ::std::fmt::Debug for GtkIMContextSimple {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIMContextSimple @ {self:p}"))
            .field("object", &self.object)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIMMulticontext {
    pub object: GtkIMContext,
    pub priv_: *mut GtkIMMulticontextPrivate,
}

impl ::std::fmt::Debug for GtkIMMulticontext {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIMMulticontext @ {self:p}"))
            .field("object", &self.object)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIconFactory {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkIconFactoryPrivate,
}

impl ::std::fmt::Debug for GtkIconFactory {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIconFactory @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
pub struct GtkIconInfo {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkIconInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIconInfo @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIconTheme {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkIconThemePrivate,
}

impl ::std::fmt::Debug for GtkIconTheme {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIconTheme @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIconView {
    pub parent: GtkContainer,
    pub priv_: *mut GtkIconViewPrivate,
}

impl ::std::fmt::Debug for GtkIconView {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIconView @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkIconViewAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkIconViewAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkIconViewAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIconViewAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkImage {
    pub misc: GtkMisc,
    pub priv_: *mut GtkImagePrivate,
}

impl ::std::fmt::Debug for GtkImage {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkImage @ {self:p}"))
            .field("misc", &self.misc)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkImageAccessible {
    pub parent: GtkWidgetAccessible,
    pub priv_: *mut GtkImageAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkImageAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkImageAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkImageCellAccessible {
    pub parent: GtkRendererCellAccessible,
    pub priv_: *mut GtkImageCellAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkImageCellAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkImageCellAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkImageMenuItem {
    pub menu_item: GtkMenuItem,
    pub priv_: *mut GtkImageMenuItemPrivate,
}

impl ::std::fmt::Debug for GtkImageMenuItem {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkImageMenuItem @ {self:p}"))
            .field("menu_item", &self.menu_item)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkInfoBar {
    pub parent: GtkBox,
    pub priv_: *mut GtkInfoBarPrivate,
}

impl ::std::fmt::Debug for GtkInfoBar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkInfoBar @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkInvisible {
    pub widget: GtkWidget,
    pub priv_: *mut GtkInvisiblePrivate,
}

impl ::std::fmt::Debug for GtkInvisible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkInvisible @ {self:p}"))
            .field("widget", &self.widget)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLabel {
    pub misc: GtkMisc,
    pub priv_: *mut GtkLabelPrivate,
}

impl ::std::fmt::Debug for GtkLabel {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLabel @ {self:p}"))
            .field("misc", &self.misc)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLabelAccessible {
    pub parent: GtkWidgetAccessible,
    pub priv_: *mut GtkLabelAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkLabelAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLabelAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLayout {
    pub container: GtkContainer,
    pub priv_: *mut GtkLayoutPrivate,
}

impl ::std::fmt::Debug for GtkLayout {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLayout @ {self:p}"))
            .field("container", &self.container)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLevelBar {
    pub parent: GtkWidget,
    pub priv_: *mut GtkLevelBarPrivate,
}

impl ::std::fmt::Debug for GtkLevelBar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLevelBar @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLevelBarAccessible {
    pub parent: GtkWidgetAccessible,
    pub priv_: *mut GtkLevelBarAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkLevelBarAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLevelBarAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLinkButton {
    pub parent_instance: GtkButton,
    pub priv_: *mut GtkLinkButtonPrivate,
}

impl ::std::fmt::Debug for GtkLinkButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLinkButton @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLinkButtonAccessible {
    pub parent: GtkButtonAccessible,
    pub priv_: *mut GtkLinkButtonAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkLinkButtonAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLinkButtonAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkListBox {
    pub parent_instance: GtkContainer,
}

impl ::std::fmt::Debug for GtkListBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkListBox @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkListBoxAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkListBoxAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkListBoxAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkListBoxAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkListBoxRow {
    pub parent_instance: GtkBin,
}

impl ::std::fmt::Debug for GtkListBoxRow {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkListBoxRow @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkListBoxRowAccessible {
    pub parent: GtkContainerAccessible,
}

impl ::std::fmt::Debug for GtkListBoxRowAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkListBoxRowAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkListStore {
    pub parent: gobject::GObject,
    pub priv_: *mut GtkListStorePrivate,
}

impl ::std::fmt::Debug for GtkListStore {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkListStore @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLockButton {
    pub parent: GtkButton,
    pub priv_: *mut GtkLockButtonPrivate,
}

impl ::std::fmt::Debug for GtkLockButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLockButton @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkLockButtonAccessible {
    pub parent: GtkButtonAccessible,
    pub priv_: *mut GtkLockButtonAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkLockButtonAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLockButtonAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenu {
    pub menu_shell: GtkMenuShell,
    pub priv_: *mut GtkMenuPrivate,
}

impl ::std::fmt::Debug for GtkMenu {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenu @ {self:p}"))
            .field("menu_shell", &self.menu_shell)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuAccessible {
    pub parent: GtkMenuShellAccessible,
    pub priv_: *mut GtkMenuAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkMenuAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuBar {
    pub menu_shell: GtkMenuShell,
    pub priv_: *mut GtkMenuBarPrivate,
}

impl ::std::fmt::Debug for GtkMenuBar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuBar @ {self:p}"))
            .field("menu_shell", &self.menu_shell)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuButton {
    pub parent: GtkToggleButton,
    pub priv_: *mut GtkMenuButtonPrivate,
}

impl ::std::fmt::Debug for GtkMenuButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuButton @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuButtonAccessible {
    pub parent: GtkToggleButtonAccessible,
    pub priv_: *mut GtkMenuButtonAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkMenuButtonAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuButtonAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuItem {
    pub bin: GtkBin,
    pub priv_: *mut GtkMenuItemPrivate,
}

impl ::std::fmt::Debug for GtkMenuItem {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuItem @ {self:p}"))
            .field("bin", &self.bin)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuItemAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkMenuItemAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkMenuItemAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuItemAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuShell {
    pub container: GtkContainer,
    pub priv_: *mut GtkMenuShellPrivate,
}

impl ::std::fmt::Debug for GtkMenuShell {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuShell @ {self:p}"))
            .field("container", &self.container)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuShellAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkMenuShellAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkMenuShellAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuShellAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMenuToolButton {
    pub parent: GtkToolButton,
    pub priv_: *mut GtkMenuToolButtonPrivate,
}

impl ::std::fmt::Debug for GtkMenuToolButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMenuToolButton @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMessageDialog {
    pub parent_instance: GtkDialog,
    pub priv_: *mut GtkMessageDialogPrivate,
}

impl ::std::fmt::Debug for GtkMessageDialog {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMessageDialog @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMisc {
    pub widget: GtkWidget,
    pub priv_: *mut GtkMiscPrivate,
}

impl ::std::fmt::Debug for GtkMisc {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMisc @ {self:p}"))
            .field("widget", &self.widget)
            .finish()
    }
}

#[repr(C)]
pub struct GtkModelButton {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkModelButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkModelButton @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkMountOperation {
    pub parent_instance: gio::GMountOperation,
    pub priv_: *mut GtkMountOperationPrivate,
}

impl ::std::fmt::Debug for GtkMountOperation {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMountOperation @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkNativeDialog {
    pub parent_instance: gobject::GObject,
}

impl ::std::fmt::Debug for GtkNativeDialog {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkNativeDialog @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkNotebook {
    pub container: GtkContainer,
    pub priv_: *mut GtkNotebookPrivate,
}

impl ::std::fmt::Debug for GtkNotebook {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkNotebook @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkNotebookAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkNotebookAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkNotebookAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkNotebookAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkNotebookPageAccessible {
    pub parent: atk::AtkObject,
    pub priv_: *mut GtkNotebookPageAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkNotebookPageAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkNotebookPageAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkNumerableIcon {
    pub parent: gio::GEmblemedIcon,
    pub priv_: *mut GtkNumerableIconPrivate,
}

impl ::std::fmt::Debug for GtkNumerableIcon {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkNumerableIcon @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkOffscreenWindow {
    pub parent_object: GtkWindow,
}

impl ::std::fmt::Debug for GtkOffscreenWindow {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkOffscreenWindow @ {self:p}"))
            .field("parent_object", &self.parent_object)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkOverlay {
    pub parent: GtkBin,
    pub priv_: *mut GtkOverlayPrivate,
}

impl ::std::fmt::Debug for GtkOverlay {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkOverlay @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
pub struct GtkPadController {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkPadController {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPadController @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkPageSetup {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkPageSetup {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPageSetup @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPaned {
    pub container: GtkContainer,
    pub priv_: *mut GtkPanedPrivate,
}

impl ::std::fmt::Debug for GtkPaned {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPaned @ {self:p}"))
            .field("container", &self.container)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPanedAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkPanedAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkPanedAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPanedAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
pub struct GtkPlacesSidebar {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkPlacesSidebar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPlacesSidebar @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPlug {
    pub window: GtkWindow,
    pub priv_: *mut GtkPlugPrivate,
}

impl ::std::fmt::Debug for GtkPlug {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPlug @ {self:p}"))
            .field("window", &self.window)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPlugAccessible {
    pub parent: GtkWindowAccessible,
    pub priv_: *mut GtkPlugAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkPlugAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPlugAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPopover {
    pub parent_instance: GtkBin,
    pub priv_: *mut GtkPopoverPrivate,
}

impl ::std::fmt::Debug for GtkPopover {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPopover @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPopoverAccessible {
    pub parent: GtkContainerAccessible,
}

impl ::std::fmt::Debug for GtkPopoverAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPopoverAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[repr(C)]
pub struct GtkPopoverMenu {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkPopoverMenu {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPopoverMenu @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkPrintContext {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkPrintContext {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPrintContext @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkPrintOperation {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkPrintOperationPrivate,
}

impl ::std::fmt::Debug for GtkPrintOperation {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPrintOperation @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
pub struct GtkPrintSettings {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkPrintSettings {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPrintSettings @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkProgressBar {
    pub parent: GtkWidget,
    pub priv_: *mut GtkProgressBarPrivate,
}

impl ::std::fmt::Debug for GtkProgressBar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkProgressBar @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkProgressBarAccessible {
    pub parent: GtkWidgetAccessible,
    pub priv_: *mut GtkProgressBarAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkProgressBarAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkProgressBarAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioAction {
    pub parent: GtkToggleAction,
    pub private_data: *mut GtkRadioActionPrivate,
}

impl ::std::fmt::Debug for GtkRadioAction {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioAction @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioButton {
    pub check_button: GtkCheckButton,
    pub priv_: *mut GtkRadioButtonPrivate,
}

impl ::std::fmt::Debug for GtkRadioButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioButton @ {self:p}"))
            .field("check_button", &self.check_button)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioButtonAccessible {
    pub parent: GtkToggleButtonAccessible,
    pub priv_: *mut GtkRadioButtonAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkRadioButtonAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioButtonAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioMenuItem {
    pub check_menu_item: GtkCheckMenuItem,
    pub priv_: *mut GtkRadioMenuItemPrivate,
}

impl ::std::fmt::Debug for GtkRadioMenuItem {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioMenuItem @ {self:p}"))
            .field("check_menu_item", &self.check_menu_item)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioMenuItemAccessible {
    pub parent: GtkCheckMenuItemAccessible,
    pub priv_: *mut GtkRadioMenuItemAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkRadioMenuItemAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioMenuItemAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRadioToolButton {
    pub parent: GtkToggleToolButton,
}

impl ::std::fmt::Debug for GtkRadioToolButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRadioToolButton @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRange {
    pub widget: GtkWidget,
    pub priv_: *mut GtkRangePrivate,
}

impl ::std::fmt::Debug for GtkRange {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRange @ {self:p}"))
            .field("widget", &self.widget)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRangeAccessible {
    pub parent: GtkWidgetAccessible,
    pub priv_: *mut GtkRangeAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkRangeAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRangeAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRcStyle {
    pub parent_instance: gobject::GObject,
    pub name: *mut c_char,
    pub bg_pixmap_name: [*mut c_char; 5],
    pub font_desc: *mut pango::PangoFontDescription,
    pub color_flags: [GtkRcFlags; 5],
    pub fg: [gdk::GdkColor; 5],
    pub bg: [gdk::GdkColor; 5],
    pub text: [gdk::GdkColor; 5],
    pub base: [gdk::GdkColor; 5],
    pub xthickness: c_int,
    pub ythickness: c_int,
    pub rc_properties: *mut glib::GArray,
    pub rc_style_lists: *mut glib::GSList,
    pub icon_factories: *mut glib::GSList,
    pub engine_specified: c_uint,
}

impl ::std::fmt::Debug for GtkRcStyle {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRcStyle @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("name", &self.name)
            .field("bg_pixmap_name", &self.bg_pixmap_name)
            .field("font_desc", &self.font_desc)
            .field("color_flags", &self.color_flags)
            .field("fg", &self.fg)
            .field("bg", &self.bg)
            .field("text", &self.text)
            .field("base", &self.base)
            .field("xthickness", &self.xthickness)
            .field("ythickness", &self.ythickness)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentAction {
    pub parent_instance: GtkAction,
    pub priv_: *mut GtkRecentActionPrivate,
}

impl ::std::fmt::Debug for GtkRecentAction {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentAction @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentChooserDialog {
    pub parent_instance: GtkDialog,
    pub priv_: *mut GtkRecentChooserDialogPrivate,
}

impl ::std::fmt::Debug for GtkRecentChooserDialog {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentChooserDialog @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentChooserMenu {
    pub parent_instance: GtkMenu,
    pub priv_: *mut GtkRecentChooserMenuPrivate,
}

impl ::std::fmt::Debug for GtkRecentChooserMenu {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentChooserMenu @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentChooserWidget {
    pub parent_instance: GtkBox,
    pub priv_: *mut GtkRecentChooserWidgetPrivate,
}

impl ::std::fmt::Debug for GtkRecentChooserWidget {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentChooserWidget @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
pub struct GtkRecentFilter {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkRecentFilter {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentFilter @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRecentManager {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkRecentManagerPrivate,
}

impl ::std::fmt::Debug for GtkRecentManager {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRecentManager @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRendererCellAccessible {
    pub parent: GtkCellAccessible,
    pub priv_: *mut GtkRendererCellAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkRendererCellAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRendererCellAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkRevealer {
    pub parent_instance: GtkBin,
}

impl ::std::fmt::Debug for GtkRevealer {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRevealer @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScale {
    pub range: GtkRange,
    pub priv_: *mut GtkScalePrivate,
}

impl ::std::fmt::Debug for GtkScale {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScale @ {self:p}"))
            .field("range", &self.range)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScaleAccessible {
    pub parent: GtkRangeAccessible,
    pub priv_: *mut GtkScaleAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkScaleAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScaleAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScaleButton {
    pub parent: GtkButton,
    pub priv_: *mut GtkScaleButtonPrivate,
}

impl ::std::fmt::Debug for GtkScaleButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScaleButton @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScaleButtonAccessible {
    pub parent: GtkButtonAccessible,
    pub priv_: *mut GtkScaleButtonAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkScaleButtonAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScaleButtonAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScrollbar {
    pub range: GtkRange,
}

impl ::std::fmt::Debug for GtkScrollbar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScrollbar @ {self:p}"))
            .field("range", &self.range)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScrolledWindow {
    pub container: GtkBin,
    pub priv_: *mut GtkScrolledWindowPrivate,
}

impl ::std::fmt::Debug for GtkScrolledWindow {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScrolledWindow @ {self:p}"))
            .field("container", &self.container)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkScrolledWindowAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkScrolledWindowAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkScrolledWindowAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkScrolledWindowAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSearchBar {
    pub parent: GtkBin,
}

impl ::std::fmt::Debug for GtkSearchBar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSearchBar @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSearchEntry {
    pub parent: GtkEntry,
}

impl ::std::fmt::Debug for GtkSearchEntry {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSearchEntry @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSeparator {
    pub widget: GtkWidget,
    pub priv_: *mut GtkSeparatorPrivate,
}

impl ::std::fmt::Debug for GtkSeparator {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSeparator @ {self:p}"))
            .field("widget", &self.widget)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSeparatorMenuItem {
    pub menu_item: GtkMenuItem,
}

impl ::std::fmt::Debug for GtkSeparatorMenuItem {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSeparatorMenuItem @ {self:p}"))
            .field("menu_item", &self.menu_item)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSeparatorToolItem {
    pub parent: GtkToolItem,
    pub priv_: *mut GtkSeparatorToolItemPrivate,
}

impl ::std::fmt::Debug for GtkSeparatorToolItem {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSeparatorToolItem @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSettings {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkSettingsPrivate,
}

impl ::std::fmt::Debug for GtkSettings {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSettings @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
pub struct GtkShortcutLabel {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkShortcutLabel {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkShortcutLabel @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkShortcutsGroup {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkShortcutsGroup {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkShortcutsGroup @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkShortcutsSection {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkShortcutsSection {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkShortcutsSection @ {self:p}"))
            .finish()
    }
}

#[repr(C)]
pub struct GtkShortcutsShortcut {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkShortcutsShortcut {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkShortcutsShortcut @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkShortcutsWindow {
    pub window: GtkWindow,
}

impl ::std::fmt::Debug for GtkShortcutsWindow {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkShortcutsWindow @ {self:p}"))
            .field("window", &self.window)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSizeGroup {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkSizeGroupPrivate,
}

impl ::std::fmt::Debug for GtkSizeGroup {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSizeGroup @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSocket {
    pub container: GtkContainer,
    pub priv_: *mut GtkSocketPrivate,
}

impl ::std::fmt::Debug for GtkSocket {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSocket @ {self:p}"))
            .field("container", &self.container)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSocketAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkSocketAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkSocketAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSocketAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSpinButton {
    pub entry: GtkEntry,
    pub priv_: *mut GtkSpinButtonPrivate,
}

impl ::std::fmt::Debug for GtkSpinButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSpinButton @ {self:p}"))
            .field("entry", &self.entry)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSpinButtonAccessible {
    pub parent: GtkEntryAccessible,
    pub priv_: *mut GtkSpinButtonAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkSpinButtonAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSpinButtonAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSpinner {
    pub parent: GtkWidget,
    pub priv_: *mut GtkSpinnerPrivate,
}

impl ::std::fmt::Debug for GtkSpinner {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSpinner @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSpinnerAccessible {
    pub parent: GtkWidgetAccessible,
    pub priv_: *mut GtkSpinnerAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkSpinnerAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSpinnerAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStack {
    pub parent_instance: GtkContainer,
}

impl ::std::fmt::Debug for GtkStack {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStack @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStackAccessible {
    pub parent: GtkContainerAccessible,
}

impl ::std::fmt::Debug for GtkStackAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStackAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStackSidebar {
    pub parent: GtkBin,
}

impl ::std::fmt::Debug for GtkStackSidebar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStackSidebar @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStackSwitcher {
    pub widget: GtkBox,
}

impl ::std::fmt::Debug for GtkStackSwitcher {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStackSwitcher @ {self:p}"))
            .field("widget", &self.widget)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStatusIcon {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkStatusIconPrivate,
}

impl ::std::fmt::Debug for GtkStatusIcon {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStatusIcon @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStatusbar {
    pub parent_widget: GtkBox,
    pub priv_: *mut GtkStatusbarPrivate,
}

impl ::std::fmt::Debug for GtkStatusbar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStatusbar @ {self:p}"))
            .field("parent_widget", &self.parent_widget)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStatusbarAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkStatusbarAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkStatusbarAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStatusbarAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
pub struct GtkStyle {
    pub parent_instance: gobject::GObject,
    pub fg: [gdk::GdkColor; 5],
    pub bg: [gdk::GdkColor; 5],
    pub light: [gdk::GdkColor; 5],
    pub dark: [gdk::GdkColor; 5],
    pub mid: [gdk::GdkColor; 5],
    pub text: [gdk::GdkColor; 5],
    pub base: [gdk::GdkColor; 5],
    pub text_aa: [gdk::GdkColor; 5],
    pub black: gdk::GdkColor,
    pub white: gdk::GdkColor,
    pub font_desc: *mut pango::PangoFontDescription,
    pub xthickness: c_int,
    pub ythickness: c_int,
    _truncated_record_marker: c_void,
    // /*Ignored*/field background has incomplete type
}

impl ::std::fmt::Debug for GtkStyle {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStyle @ {self:p}"))
            .field("fg", &self.fg)
            .field("bg", &self.bg)
            .field("light", &self.light)
            .field("dark", &self.dark)
            .field("mid", &self.mid)
            .field("text", &self.text)
            .field("base", &self.base)
            .field("text_aa", &self.text_aa)
            .field("black", &self.black)
            .field("white", &self.white)
            .field("font_desc", &self.font_desc)
            .field("xthickness", &self.xthickness)
            .field("ythickness", &self.ythickness)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStyleContext {
    pub parent_object: gobject::GObject,
    pub priv_: *mut GtkStyleContextPrivate,
}

impl ::std::fmt::Debug for GtkStyleContext {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStyleContext @ {self:p}"))
            .field("parent_object", &self.parent_object)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkStyleProperties {
    pub parent_object: gobject::GObject,
    pub priv_: *mut GtkStylePropertiesPrivate,
}

impl ::std::fmt::Debug for GtkStyleProperties {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkStyleProperties @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSwitch {
    pub parent_instance: GtkWidget,
    pub priv_: *mut GtkSwitchPrivate,
}

impl ::std::fmt::Debug for GtkSwitch {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSwitch @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkSwitchAccessible {
    pub parent: GtkWidgetAccessible,
    pub priv_: *mut GtkSwitchAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkSwitchAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSwitchAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTable {
    pub container: GtkContainer,
    pub priv_: *mut GtkTablePrivate,
}

impl ::std::fmt::Debug for GtkTable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTable @ {self:p}"))
            .field("container", &self.container)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTearoffMenuItem {
    pub menu_item: GtkMenuItem,
    pub priv_: *mut GtkTearoffMenuItemPrivate,
}

impl ::std::fmt::Debug for GtkTearoffMenuItem {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTearoffMenuItem @ {self:p}"))
            .field("menu_item", &self.menu_item)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextBuffer {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkTextBufferPrivate,
}

impl ::std::fmt::Debug for GtkTextBuffer {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextBuffer @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextCellAccessible {
    pub parent: GtkRendererCellAccessible,
    pub priv_: *mut GtkTextCellAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkTextCellAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextCellAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextChildAnchor {
    pub parent_instance: gobject::GObject,
    pub segment: gpointer,
}

impl ::std::fmt::Debug for GtkTextChildAnchor {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextChildAnchor @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextMark {
    pub parent_instance: gobject::GObject,
    pub segment: gpointer,
}

impl ::std::fmt::Debug for GtkTextMark {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextMark @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextTag {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkTextTagPrivate,
}

impl ::std::fmt::Debug for GtkTextTag {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextTag @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextTagTable {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkTextTagTablePrivate,
}

impl ::std::fmt::Debug for GtkTextTagTable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextTagTable @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextView {
    pub parent_instance: GtkContainer,
    pub priv_: *mut GtkTextViewPrivate,
}

impl ::std::fmt::Debug for GtkTextView {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextView @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTextViewAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkTextViewAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkTextViewAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextViewAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkThemingEngine {
    pub parent_object: gobject::GObject,
    pub priv_: *mut GtkThemingEnginePrivate,
}

impl ::std::fmt::Debug for GtkThemingEngine {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkThemingEngine @ {self:p}"))
            .field("parent_object", &self.parent_object)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToggleAction {
    pub parent: GtkAction,
    pub private_data: *mut GtkToggleActionPrivate,
}

impl ::std::fmt::Debug for GtkToggleAction {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToggleAction @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToggleButton {
    pub button: GtkButton,
    pub priv_: *mut GtkToggleButtonPrivate,
}

impl ::std::fmt::Debug for GtkToggleButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToggleButton @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToggleButtonAccessible {
    pub parent: GtkButtonAccessible,
    pub priv_: *mut GtkToggleButtonAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkToggleButtonAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToggleButtonAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToggleToolButton {
    pub parent: GtkToolButton,
    pub priv_: *mut GtkToggleToolButtonPrivate,
}

impl ::std::fmt::Debug for GtkToggleToolButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToggleToolButton @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToolButton {
    pub parent: GtkToolItem,
    pub priv_: *mut GtkToolButtonPrivate,
}

impl ::std::fmt::Debug for GtkToolButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToolButton @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToolItem {
    pub parent: GtkBin,
    pub priv_: *mut GtkToolItemPrivate,
}

impl ::std::fmt::Debug for GtkToolItem {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToolItem @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToolItemGroup {
    pub parent_instance: GtkContainer,
    pub priv_: *mut GtkToolItemGroupPrivate,
}

impl ::std::fmt::Debug for GtkToolItemGroup {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToolItemGroup @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToolPalette {
    pub parent_instance: GtkContainer,
    pub priv_: *mut GtkToolPalettePrivate,
}

impl ::std::fmt::Debug for GtkToolPalette {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToolPalette @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToolbar {
    pub container: GtkContainer,
    pub priv_: *mut GtkToolbarPrivate,
}

impl ::std::fmt::Debug for GtkToolbar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToolbar @ {self:p}"))
            .field("container", &self.container)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
pub struct GtkTooltip {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkTooltip {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTooltip @ {self:p}")).finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkToplevelAccessible {
    pub parent: atk::AtkObject,
    pub priv_: *mut GtkToplevelAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkToplevelAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkToplevelAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeModelFilter {
    pub parent: gobject::GObject,
    pub priv_: *mut GtkTreeModelFilterPrivate,
}

impl ::std::fmt::Debug for GtkTreeModelFilter {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeModelFilter @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeModelSort {
    pub parent: gobject::GObject,
    pub priv_: *mut GtkTreeModelSortPrivate,
}

impl ::std::fmt::Debug for GtkTreeModelSort {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeModelSort @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeSelection {
    pub parent: gobject::GObject,
    pub priv_: *mut GtkTreeSelectionPrivate,
}

impl ::std::fmt::Debug for GtkTreeSelection {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeSelection @ {self:p}"))
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeStore {
    pub parent: gobject::GObject,
    pub priv_: *mut GtkTreeStorePrivate,
}

impl ::std::fmt::Debug for GtkTreeStore {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeStore @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeView {
    pub parent: GtkContainer,
    pub priv_: *mut GtkTreeViewPrivate,
}

impl ::std::fmt::Debug for GtkTreeView {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeView @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeViewAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkTreeViewAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkTreeViewAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeViewAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkTreeViewColumn {
    pub parent_instance: gobject::GInitiallyUnowned,
    pub priv_: *mut GtkTreeViewColumnPrivate,
}

impl ::std::fmt::Debug for GtkTreeViewColumn {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeViewColumn @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkUIManager {
    pub parent: gobject::GObject,
    pub private_data: *mut GtkUIManagerPrivate,
}

impl ::std::fmt::Debug for GtkUIManager {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkUIManager @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVBox {
    pub box_: GtkBox,
}

impl ::std::fmt::Debug for GtkVBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVBox @ {self:p}"))
            .field("box_", &self.box_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVButtonBox {
    pub button_box: GtkButtonBox,
}

impl ::std::fmt::Debug for GtkVButtonBox {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVButtonBox @ {self:p}"))
            .field("button_box", &self.button_box)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVPaned {
    pub paned: GtkPaned,
}

impl ::std::fmt::Debug for GtkVPaned {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVPaned @ {self:p}"))
            .field("paned", &self.paned)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVScale {
    pub scale: GtkScale,
}

impl ::std::fmt::Debug for GtkVScale {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVScale @ {self:p}"))
            .field("scale", &self.scale)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVScrollbar {
    pub scrollbar: GtkScrollbar,
}

impl ::std::fmt::Debug for GtkVScrollbar {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVScrollbar @ {self:p}"))
            .field("scrollbar", &self.scrollbar)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVSeparator {
    pub separator: GtkSeparator,
}

impl ::std::fmt::Debug for GtkVSeparator {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVSeparator @ {self:p}"))
            .field("separator", &self.separator)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkViewport {
    pub bin: GtkBin,
    pub priv_: *mut GtkViewportPrivate,
}

impl ::std::fmt::Debug for GtkViewport {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkViewport @ {self:p}"))
            .field("bin", &self.bin)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkVolumeButton {
    pub parent: GtkScaleButton,
}

impl ::std::fmt::Debug for GtkVolumeButton {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkVolumeButton @ {self:p}"))
            .field("parent", &self.parent)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkWidget {
    pub parent_instance: gobject::GInitiallyUnowned,
    pub priv_: *mut GtkWidgetPrivate,
}

impl ::std::fmt::Debug for GtkWidget {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWidget @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkWidgetAccessible {
    pub parent: GtkAccessible,
    pub priv_: *mut GtkWidgetAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkWidgetAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWidgetAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkWindow {
    pub bin: GtkBin,
    pub priv_: *mut GtkWindowPrivate,
}

impl ::std::fmt::Debug for GtkWindow {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWindow @ {self:p}"))
            .field("bin", &self.bin)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkWindowAccessible {
    pub parent: GtkContainerAccessible,
    pub priv_: *mut GtkWindowAccessiblePrivate,
}

impl ::std::fmt::Debug for GtkWindowAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWindowAccessible @ {self:p}"))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct GtkWindowGroup {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut GtkWindowGroupPrivate,
}

impl ::std::fmt::Debug for GtkWindowGroup {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWindowGroup @ {self:p}"))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

// Interfaces
#[repr(C)]
pub struct GtkActionable {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkActionable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkActionable @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkActivatable {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkActivatable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkActivatable @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkAppChooser {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkAppChooser {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkAppChooser @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkBuildable {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkBuildable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkBuildable @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkCellAccessibleParent {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkCellAccessibleParent {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkCellAccessibleParent @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkCellEditable {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkCellEditable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkCellEditable @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkCellLayout {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkCellLayout {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkCellLayout @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkColorChooser {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkColorChooser {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkColorChooser @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkEditable {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkEditable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkEditable @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkFileChooser {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkFileChooser {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkFileChooser @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkFontChooser {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkFontChooser {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkFontChooser @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkOrientable {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkOrientable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkOrientable @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkPrintOperationPreview {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkPrintOperationPreview {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkPrintOperationPreview @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkRecentChooser {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkRecentChooser {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkRecentChooser @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkScrollable {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkScrollable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkScrollable @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkStyleProvider {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkStyleProvider {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkStyleProvider @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkToolShell {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkToolShell {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkToolShell @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkTreeDragDest {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkTreeDragDest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkTreeDragDest @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkTreeDragSource {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkTreeDragSource {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkTreeDragSource @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkTreeModel {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkTreeModel {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkTreeModel @ {self:p}")
    }
}

#[repr(C)]
pub struct GtkTreeSortable {
    _data: [u8; 0],
    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}

impl ::std::fmt::Debug for GtkTreeSortable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkTreeSortable @ {self:p}")
    }
}

#[link(name = "gtk-3")]
extern "C" {

    //=========================================================================
    // GtkAlign
    //=========================================================================
    pub fn gtk_align_get_type() -> GType;

    //=========================================================================
    // GtkArrowPlacement
    //=========================================================================
    pub fn gtk_arrow_placement_get_type() -> GType;

    //=========================================================================
    // GtkArrowType
    //=========================================================================
    pub fn gtk_arrow_type_get_type() -> GType;

    //=========================================================================
    // GtkAssistantPageType
    //=========================================================================
    pub fn gtk_assistant_page_type_get_type() -> GType;

    //=========================================================================
    // GtkBaselinePosition
    //=========================================================================
    pub fn gtk_baseline_position_get_type() -> GType;

    //=========================================================================
    // GtkBorderStyle
    //=========================================================================
    pub fn gtk_border_style_get_type() -> GType;

    //=========================================================================
    // GtkBuilderError
    //=========================================================================
    pub fn gtk_builder_error_get_type() -> GType;
    pub fn gtk_builder_error_quark() -> glib::GQuark;

    //=========================================================================
    // GtkButtonBoxStyle
    //=========================================================================
    pub fn gtk_button_box_style_get_type() -> GType;

    //=========================================================================
    // GtkButtonRole
    //=========================================================================
    pub fn gtk_button_role_get_type() -> GType;

    //=========================================================================
    // GtkButtonsType
    //=========================================================================
    pub fn gtk_buttons_type_get_type() -> GType;

    //=========================================================================
    // GtkCellRendererAccelMode
    //=========================================================================
    pub fn gtk_cell_renderer_accel_mode_get_type() -> GType;

    //=========================================================================
    // GtkCellRendererMode
    //=========================================================================
    pub fn gtk_cell_renderer_mode_get_type() -> GType;

    //=========================================================================
    // GtkCornerType
    //=========================================================================
    pub fn gtk_corner_type_get_type() -> GType;

    //=========================================================================
    // GtkCssProviderError
    //=========================================================================
    pub fn gtk_css_provider_error_get_type() -> GType;
    pub fn gtk_css_provider_error_quark() -> glib::GQuark;

    //=========================================================================
    // GtkCssSectionType
    //=========================================================================
    pub fn gtk_css_section_type_get_type() -> GType;

    //=========================================================================
    // GtkDeleteType
    //=========================================================================
    pub fn gtk_delete_type_get_type() -> GType;

    //=========================================================================
    // GtkDirectionType
    //=========================================================================
    pub fn gtk_direction_type_get_type() -> GType;

    //=========================================================================
    // GtkDragResult
    //=========================================================================
    pub fn gtk_drag_result_get_type() -> GType;

    //=========================================================================
    // GtkEntryIconPosition
    //=========================================================================
    pub fn gtk_entry_icon_position_get_type() -> GType;

    //=========================================================================
    // GtkEventSequenceState
    //=========================================================================
    pub fn gtk_event_sequence_state_get_type() -> GType;

    //=========================================================================
    // GtkExpanderStyle
    //=========================================================================
    pub fn gtk_expander_style_get_type() -> GType;

    //=========================================================================
    // GtkFileChooserAction
    //=========================================================================
    pub fn gtk_file_chooser_action_get_type() -> GType;

    //=========================================================================
    // GtkFileChooserConfirmation
    //=========================================================================
    pub fn gtk_file_chooser_confirmation_get_type() -> GType;

    //=========================================================================
    // GtkFileChooserError
    //=========================================================================
    pub fn gtk_file_chooser_error_get_type() -> GType;
    pub fn gtk_file_chooser_error_quark() -> glib::GQuark;

    //=========================================================================
    // GtkIMPreeditStyle
    //=========================================================================
    pub fn gtk_im_preedit_style_get_type() -> GType;

    //=========================================================================
    // GtkIMStatusStyle
    //=========================================================================
    pub fn gtk_im_status_style_get_type() -> GType;

    //=========================================================================
    // GtkIconSize
    //=========================================================================
    pub fn gtk_icon_size_get_type() -> GType;
    pub fn gtk_icon_size_from_name(name: *const c_char) -> GtkIconSize;
    pub fn gtk_icon_size_get_name(size: GtkIconSize) -> *const c_char;
    pub fn gtk_icon_size_lookup(
        size: GtkIconSize,
        width: *mut c_int,
        height: *mut c_int,
    ) -> gboolean;
    pub fn gtk_icon_size_lookup_for_settings(
        settings: *mut GtkSettings,
        size: GtkIconSize,
        width: *mut c_int,
        height: *mut c_int,
    ) -> gboolean;
    pub fn gtk_icon_size_register(name: *const c_char, width: c_int, height: c_int) -> GtkIconSize;
    pub fn gtk_icon_size_register_alias(alias: *const c_char, target: GtkIconSize);

    //=========================================================================
    // GtkIconThemeError
    //=========================================================================
    pub fn gtk_icon_theme_error_get_type() -> GType;
    pub fn gtk_icon_theme_error_quark() -> glib::GQuark;

    //=========================================================================
    // GtkIconViewDropPosition
    //=========================================================================
    pub fn gtk_icon_view_drop_position_get_type() -> GType;

    //=========================================================================
    // GtkImageType
    //=========================================================================
    pub fn gtk_image_type_get_type() -> GType;

    //=========================================================================
    // GtkInputPurpose
    //=========================================================================
    pub fn gtk_input_purpose_get_type() -> GType;

    //=========================================================================
    // GtkJustification
    //=========================================================================
    pub fn gtk_justification_get_type() -> GType;

    //=========================================================================
    // GtkLevelBarMode
    //=========================================================================
    pub fn gtk_level_bar_mode_get_type() -> GType;

    //=========================================================================
    // GtkLicense
    //=========================================================================
    pub fn gtk_license_get_type() -> GType;

    //=========================================================================
    // GtkMenuDirectionType
    //=========================================================================
    pub fn gtk_menu_direction_type_get_type() -> GType;

    //=========================================================================
    // GtkMessageType
    //=========================================================================
    pub fn gtk_message_type_get_type() -> GType;

    //=========================================================================
    // GtkMovementStep
    //=========================================================================
    pub fn gtk_movement_step_get_type() -> GType;

    //=========================================================================
    // GtkNotebookTab
    //=========================================================================
    pub fn gtk_notebook_tab_get_type() -> GType;

    //=========================================================================
    // GtkNumberUpLayout
    //=========================================================================
    pub fn gtk_number_up_layout_get_type() -> GType;

    //=========================================================================
    // GtkOrientation
    //=========================================================================
    pub fn gtk_orientation_get_type() -> GType;

    //=========================================================================
    // GtkPackDirection
    //=========================================================================
    pub fn gtk_pack_direction_get_type() -> GType;

    //=========================================================================
    // GtkPackType
    //=========================================================================
    pub fn gtk_pack_type_get_type() -> GType;

    //=========================================================================
    // GtkPadActionType
    //=========================================================================
    pub fn gtk_pad_action_type_get_type() -> GType;

    //=========================================================================
    // GtkPageOrientation
    //=========================================================================
    pub fn gtk_page_orientation_get_type() -> GType;

    //=========================================================================
    // GtkPageSet
    //=========================================================================
    pub fn gtk_page_set_get_type() -> GType;

    //=========================================================================
    // GtkPanDirection
    //=========================================================================
    pub fn gtk_pan_direction_get_type() -> GType;

    //=========================================================================
    // GtkPathPriorityType
    //=========================================================================
    pub fn gtk_path_priority_type_get_type() -> GType;

    //=========================================================================
    // GtkPathType
    //=========================================================================
    pub fn gtk_path_type_get_type() -> GType;

    //=========================================================================
    // GtkPolicyType
    //=========================================================================
    pub fn gtk_policy_type_get_type() -> GType;

    //=========================================================================
    // GtkPopoverConstraint
    //=========================================================================
    pub fn gtk_popover_constraint_get_type() -> GType;

    //=========================================================================
    // GtkPositionType
    //=========================================================================
    pub fn gtk_position_type_get_type() -> GType;

    //=========================================================================
    // GtkPrintDuplex
    //=========================================================================
    pub fn gtk_print_duplex_get_type() -> GType;

    //=========================================================================
    // GtkPrintError
    //=========================================================================
    pub fn gtk_print_error_get_type() -> GType;
    pub fn gtk_print_error_quark() -> glib::GQuark;

    //=========================================================================
    // GtkPrintOperationAction
    //=========================================================================
    pub fn gtk_print_operation_action_get_type() -> GType;

    //=========================================================================
    // GtkPrintOperationResult
    //=========================================================================
    pub fn gtk_print_operation_result_get_type() -> GType;

    //=========================================================================
    // GtkPrintPages
    //=========================================================================
    pub fn gtk_print_pages_get_type() -> GType;

    //=========================================================================
    // GtkPrintQuality
    //=========================================================================
    pub fn gtk_print_quality_get_type() -> GType;

    //=========================================================================
    // GtkPrintStatus
    //=========================================================================
    pub fn gtk_print_status_get_type() -> GType;

    //=========================================================================
    // GtkPropagationPhase
    //=========================================================================
    pub fn gtk_propagation_phase_get_type() -> GType;

    //=========================================================================
    // GtkRcTokenType
    //=========================================================================
    pub fn gtk_rc_token_type_get_type() -> GType;

    //=========================================================================
    // GtkRecentChooserError
    //=========================================================================
    pub fn gtk_recent_chooser_error_get_type() -> GType;
    pub fn gtk_recent_chooser_error_quark() -> glib::GQuark;

    //=========================================================================
    // GtkRecentManagerError
    //=========================================================================
    pub fn gtk_recent_manager_error_get_type() -> GType;
    pub fn gtk_recent_manager_error_quark() -> glib::GQuark;

    //=========================================================================
    // GtkRecentSortType
    //=========================================================================
    pub fn gtk_recent_sort_type_get_type() -> GType;

    //=========================================================================
    // GtkReliefStyle
    //=========================================================================
    pub fn gtk_relief_style_get_type() -> GType;

    //=========================================================================
    // GtkResizeMode
    //=========================================================================
    pub fn gtk_resize_mode_get_type() -> GType;

    //=========================================================================
    // GtkResponseType
    //=========================================================================
    pub fn gtk_response_type_get_type() -> GType;

    //=========================================================================
    // GtkRevealerTransitionType
    //=========================================================================
    pub fn gtk_revealer_transition_type_get_type() -> GType;

    //=========================================================================
    // GtkScrollStep
    //=========================================================================
    pub fn gtk_scroll_step_get_type() -> GType;

    //=========================================================================
    // GtkScrollType
    //=========================================================================
    pub fn gtk_scroll_type_get_type() -> GType;

    //=========================================================================
    // GtkScrollablePolicy
    //=========================================================================
    pub fn gtk_scrollable_policy_get_type() -> GType;

    //=========================================================================
    // GtkSelectionMode
    //=========================================================================
    pub fn gtk_selection_mode_get_type() -> GType;

    //=========================================================================
    // GtkSensitivityType
    //=========================================================================
    pub fn gtk_sensitivity_type_get_type() -> GType;

    //=========================================================================
    // GtkShadowType
    //=========================================================================
    pub fn gtk_shadow_type_get_type() -> GType;

    //=========================================================================
    // GtkShortcutType
    //=========================================================================
    pub fn gtk_shortcut_type_get_type() -> GType;

    //=========================================================================
    // GtkSizeGroupMode
    //=========================================================================
    pub fn gtk_size_group_mode_get_type() -> GType;

    //=========================================================================
    // GtkSizeRequestMode
    //=========================================================================
    pub fn gtk_size_request_mode_get_type() -> GType;

    //=========================================================================
    // GtkSortType
    //=========================================================================
    pub fn gtk_sort_type_get_type() -> GType;

    //=========================================================================
    // GtkSpinButtonUpdatePolicy
    //=========================================================================
    pub fn gtk_spin_button_update_policy_get_type() -> GType;

    //=========================================================================
    // GtkSpinType
    //=========================================================================
    pub fn gtk_spin_type_get_type() -> GType;

    //=========================================================================
    // GtkStackTransitionType
    //=========================================================================
    pub fn gtk_stack_transition_type_get_type() -> GType;

    //=========================================================================
    // GtkStateType
    //=========================================================================
    pub fn gtk_state_type_get_type() -> GType;

    //=========================================================================
    // GtkTextBufferTargetInfo
    //=========================================================================
    pub fn gtk_text_buffer_target_info_get_type() -> GType;

    //=========================================================================
    // GtkTextDirection
    //=========================================================================
    pub fn gtk_text_direction_get_type() -> GType;

    //=========================================================================
    // GtkTextExtendSelection
    //=========================================================================
    pub fn gtk_text_extend_selection_get_type() -> GType;

    //=========================================================================
    // GtkTextViewLayer
    //=========================================================================
    pub fn gtk_text_view_layer_get_type() -> GType;

    //=========================================================================
    // GtkTextWindowType
    //=========================================================================
    pub fn gtk_text_window_type_get_type() -> GType;

    //=========================================================================
    // GtkToolbarSpaceStyle
    //=========================================================================
    pub fn gtk_toolbar_space_style_get_type() -> GType;

    //=========================================================================
    // GtkToolbarStyle
    //=========================================================================
    pub fn gtk_toolbar_style_get_type() -> GType;

    //=========================================================================
    // GtkTreeViewColumnSizing
    //=========================================================================
    pub fn gtk_tree_view_column_sizing_get_type() -> GType;

    //=========================================================================
    // GtkTreeViewDropPosition
    //=========================================================================
    pub fn gtk_tree_view_drop_position_get_type() -> GType;

    //=========================================================================
    // GtkTreeViewGridLines
    //=========================================================================
    pub fn gtk_tree_view_grid_lines_get_type() -> GType;

    //=========================================================================
    // GtkUnit
    //=========================================================================
    pub fn gtk_unit_get_type() -> GType;

    //=========================================================================
    // GtkWidgetHelpType
    //=========================================================================
    pub fn gtk_widget_help_type_get_type() -> GType;

    //=========================================================================
    // GtkWindowPosition
    //=========================================================================
    pub fn gtk_window_position_get_type() -> GType;

    //=========================================================================
    // GtkWindowType
    //=========================================================================
    pub fn gtk_window_type_get_type() -> GType;

    //=========================================================================
    // GtkWrapMode
    //=========================================================================
    pub fn gtk_wrap_mode_get_type() -> GType;

    //=========================================================================
    // GtkAccelFlags
    //=========================================================================
    pub fn gtk_accel_flags_get_type() -> GType;

    //=========================================================================
    // GtkApplicationInhibitFlags
    //=========================================================================
    pub fn gtk_application_inhibit_flags_get_type() -> GType;

    //=========================================================================
    // GtkAttachOptions
    //=========================================================================
    pub fn gtk_attach_options_get_type() -> GType;

    //=========================================================================
    // GtkCalendarDisplayOptions
    //=========================================================================
    pub fn gtk_calendar_display_options_get_type() -> GType;

    //=========================================================================
    // GtkCellRendererState
    //=========================================================================
    pub fn gtk_cell_renderer_state_get_type() -> GType;

    //=========================================================================
    // GtkDebugFlag
    //=========================================================================
    pub fn gtk_debug_flag_get_type() -> GType;

    //=========================================================================
    // GtkDestDefaults
    //=========================================================================
    pub fn gtk_dest_defaults_get_type() -> GType;

    //=========================================================================
    // GtkDialogFlags
    //=========================================================================
    pub fn gtk_dialog_flags_get_type() -> GType;

    //=========================================================================
    // GtkEventControllerScrollFlags
    //=========================================================================
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_scroll_flags_get_type() -> GType;

    //=========================================================================
    // GtkFileFilterFlags
    //=========================================================================
    pub fn gtk_file_filter_flags_get_type() -> GType;

    //=========================================================================
    // GtkFontChooserLevel
    //=========================================================================
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_font_chooser_level_get_type() -> GType;

    //=========================================================================
    // GtkIconLookupFlags
    //=========================================================================
    pub fn gtk_icon_lookup_flags_get_type() -> GType;

    //=========================================================================
    // GtkInputHints
    //=========================================================================
    pub fn gtk_input_hints_get_type() -> GType;

    //=========================================================================
    // GtkJunctionSides
    //=========================================================================
    pub fn gtk_junction_sides_get_type() -> GType;

    //=========================================================================
    // GtkPlacesOpenFlags
    //=========================================================================
    pub fn gtk_places_open_flags_get_type() -> GType;

    //=========================================================================
    // GtkRcFlags
    //=========================================================================
    pub fn gtk_rc_flags_get_type() -> GType;

    //=========================================================================
    // GtkRecentFilterFlags
    //=========================================================================
    pub fn gtk_recent_filter_flags_get_type() -> GType;

    //=========================================================================
    // GtkRegionFlags
    //=========================================================================
    pub fn gtk_region_flags_get_type() -> GType;

    //=========================================================================
    // GtkStateFlags
    //=========================================================================
    pub fn gtk_state_flags_get_type() -> GType;

    //=========================================================================
    // GtkStyleContextPrintFlags
    //=========================================================================
    pub fn gtk_style_context_print_flags_get_type() -> GType;

    //=========================================================================
    // GtkTargetFlags
    //=========================================================================
    pub fn gtk_target_flags_get_type() -> GType;

    //=========================================================================
    // GtkTextSearchFlags
    //=========================================================================
    pub fn gtk_text_search_flags_get_type() -> GType;

    //=========================================================================
    // GtkToolPaletteDragTargets
    //=========================================================================
    pub fn gtk_tool_palette_drag_targets_get_type() -> GType;

    //=========================================================================
    // GtkTreeModelFlags
    //=========================================================================
    pub fn gtk_tree_model_flags_get_type() -> GType;

    //=========================================================================
    // GtkUIManagerItemType
    //=========================================================================
    pub fn gtk_ui_manager_item_type_get_type() -> GType;

    //=========================================================================
    // GtkBindingEntry
    //=========================================================================
    pub fn gtk_binding_entry_add_signal(
        binding_set: *mut GtkBindingSet,
        keyval: c_uint,
        modifiers: gdk::GdkModifierType,
        signal_name: *const c_char,
        n_args: c_uint,
        ...
    );
    pub fn gtk_binding_entry_add_signal_from_string(
        binding_set: *mut GtkBindingSet,
        signal_desc: *const c_char,
    ) -> glib::GTokenType;
    pub fn gtk_binding_entry_add_signall(
        binding_set: *mut GtkBindingSet,
        keyval: c_uint,
        modifiers: gdk::GdkModifierType,
        signal_name: *const c_char,
        binding_args: *mut glib::GSList,
    );
    pub fn gtk_binding_entry_remove(
        binding_set: *mut GtkBindingSet,
        keyval: c_uint,
        modifiers: gdk::GdkModifierType,
    );
    pub fn gtk_binding_entry_skip(
        binding_set: *mut GtkBindingSet,
        keyval: c_uint,
        modifiers: gdk::GdkModifierType,
    );

    //=========================================================================
    // GtkBindingSet
    //=========================================================================
    pub fn gtk_binding_set_activate(
        binding_set: *mut GtkBindingSet,
        keyval: c_uint,
        modifiers: gdk::GdkModifierType,
        object: *mut gobject::GObject,
    ) -> gboolean;
    pub fn gtk_binding_set_add_path(
        binding_set: *mut GtkBindingSet,
        path_type: GtkPathType,
        path_pattern: *const c_char,
        priority: GtkPathPriorityType,
    );
    pub fn gtk_binding_set_by_class(object_class: gpointer) -> *mut GtkBindingSet;
    pub fn gtk_binding_set_find(set_name: *const c_char) -> *mut GtkBindingSet;
    pub fn gtk_binding_set_new(set_name: *const c_char) -> *mut GtkBindingSet;

    //=========================================================================
    // GtkBorder
    //=========================================================================
    pub fn gtk_border_get_type() -> GType;
    pub fn gtk_border_new() -> *mut GtkBorder;
    pub fn gtk_border_copy(border_: *const GtkBorder) -> *mut GtkBorder;
    pub fn gtk_border_free(border_: *mut GtkBorder);

    //=========================================================================
    // GtkCellAreaClass
    //=========================================================================
    pub fn gtk_cell_area_class_find_cell_property(
        aclass: *mut GtkCellAreaClass,
        property_name: *const c_char,
    ) -> *mut gobject::GParamSpec;
    pub fn gtk_cell_area_class_install_cell_property(
        aclass: *mut GtkCellAreaClass,
        property_id: c_uint,
        pspec: *mut gobject::GParamSpec,
    );
    pub fn gtk_cell_area_class_list_cell_properties(
        aclass: *mut GtkCellAreaClass,
        n_properties: *mut c_uint,
    ) -> *mut *mut gobject::GParamSpec;

    //=========================================================================
    // GtkCellRendererClass
    //=========================================================================
    pub fn gtk_cell_renderer_class_set_accessible_type(
        renderer_class: *mut GtkCellRendererClass,
        type_: GType,
    );

    //=========================================================================
    // GtkContainerClass
    //=========================================================================
    //pub fn gtk_container_class_find_child_property(cclass: /*Metadata mismatch*/*mut [c:type mismatch `GObjectClass` != `GtkContainerClass` of `ContainerClass`], property_name: *const c_char) -> *mut gobject::GParamSpec;
    pub fn gtk_container_class_handle_border_width(klass: *mut GtkContainerClass);
    pub fn gtk_container_class_install_child_properties(
        cclass: *mut GtkContainerClass,
        n_pspecs: c_uint,
        pspecs: *mut *mut gobject::GParamSpec,
    );
    pub fn gtk_container_class_install_child_property(
        cclass: *mut GtkContainerClass,
        property_id: c_uint,
        pspec: *mut gobject::GParamSpec,
    );
    //pub fn gtk_container_class_list_child_properties(cclass: /*Metadata mismatch*/*mut [c:type mismatch `GObjectClass` != `GtkContainerClass` of `ContainerClass`], n_properties: *mut c_uint) -> *mut *mut gobject::GParamSpec;

    //=========================================================================
    // GtkCssSection
    //=========================================================================
    pub fn gtk_css_section_get_type() -> GType;
    pub fn gtk_css_section_get_end_line(section: *const GtkCssSection) -> c_uint;
    pub fn gtk_css_section_get_end_position(section: *const GtkCssSection) -> c_uint;
    pub fn gtk_css_section_get_file(section: *const GtkCssSection) -> *mut gio::GFile;
    pub fn gtk_css_section_get_parent(section: *const GtkCssSection) -> *mut GtkCssSection;
    pub fn gtk_css_section_get_section_type(section: *const GtkCssSection) -> GtkCssSectionType;
    pub fn gtk_css_section_get_start_line(section: *const GtkCssSection) -> c_uint;
    pub fn gtk_css_section_get_start_position(section: *const GtkCssSection) -> c_uint;
    pub fn gtk_css_section_ref(section: *mut GtkCssSection) -> *mut GtkCssSection;
    pub fn gtk_css_section_unref(section: *mut GtkCssSection);

    //=========================================================================
    // GtkGradient
    //=========================================================================
    pub fn gtk_gradient_get_type() -> GType;
    pub fn gtk_gradient_new_linear(
        x0: c_double,
        y0: c_double,
        x1: c_double,
        y1: c_double,
    ) -> *mut GtkGradient;
    pub fn gtk_gradient_new_radial(
        x0: c_double,
        y0: c_double,
        radius0: c_double,
        x1: c_double,
        y1: c_double,
        radius1: c_double,
    ) -> *mut GtkGradient;
    pub fn gtk_gradient_add_color_stop(
        gradient: *mut GtkGradient,
        offset: c_double,
        color: *mut GtkSymbolicColor,
    );
    pub fn gtk_gradient_ref(gradient: *mut GtkGradient) -> *mut GtkGradient;
    pub fn gtk_gradient_resolve(
        gradient: *mut GtkGradient,
        props: *mut GtkStyleProperties,
        resolved_gradient: *mut *mut cairo::cairo_pattern_t,
    ) -> gboolean;
    pub fn gtk_gradient_resolve_for_context(
        gradient: *mut GtkGradient,
        context: *mut GtkStyleContext,
    ) -> *mut cairo::cairo_pattern_t;
    pub fn gtk_gradient_to_string(gradient: *mut GtkGradient) -> *mut c_char;
    pub fn gtk_gradient_unref(gradient: *mut GtkGradient);

    //=========================================================================
    // GtkIconSet
    //=========================================================================
    pub fn gtk_icon_set_get_type() -> GType;
    pub fn gtk_icon_set_new() -> *mut GtkIconSet;
    pub fn gtk_icon_set_new_from_pixbuf(pixbuf: *mut gdk_pixbuf::GdkPixbuf) -> *mut GtkIconSet;
    pub fn gtk_icon_set_add_source(icon_set: *mut GtkIconSet, source: *const GtkIconSource);
    pub fn gtk_icon_set_copy(icon_set: *mut GtkIconSet) -> *mut GtkIconSet;
    pub fn gtk_icon_set_get_sizes(
        icon_set: *mut GtkIconSet,
        sizes: *mut *mut GtkIconSize,
        n_sizes: *mut c_int,
    );
    pub fn gtk_icon_set_ref(icon_set: *mut GtkIconSet) -> *mut GtkIconSet;
    pub fn gtk_icon_set_render_icon(
        icon_set: *mut GtkIconSet,
        style: *mut GtkStyle,
        direction: GtkTextDirection,
        state: GtkStateType,
        size: GtkIconSize,
        widget: *mut GtkWidget,
        detail: *const c_char,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_set_render_icon_pixbuf(
        icon_set: *mut GtkIconSet,
        context: *mut GtkStyleContext,
        size: GtkIconSize,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_set_render_icon_surface(
        icon_set: *mut GtkIconSet,
        context: *mut GtkStyleContext,
        size: GtkIconSize,
        scale: c_int,
        for_window: *mut gdk::GdkWindow,
    ) -> *mut cairo::cairo_surface_t;
    pub fn gtk_icon_set_unref(icon_set: *mut GtkIconSet);

    //=========================================================================
    // GtkIconSource
    //=========================================================================
    pub fn gtk_icon_source_get_type() -> GType;
    pub fn gtk_icon_source_new() -> *mut GtkIconSource;
    pub fn gtk_icon_source_copy(source: *const GtkIconSource) -> *mut GtkIconSource;
    pub fn gtk_icon_source_free(source: *mut GtkIconSource);
    pub fn gtk_icon_source_get_direction(source: *const GtkIconSource) -> GtkTextDirection;
    pub fn gtk_icon_source_get_direction_wildcarded(source: *const GtkIconSource) -> gboolean;
    pub fn gtk_icon_source_get_filename(source: *const GtkIconSource) -> *const c_char;
    pub fn gtk_icon_source_get_icon_name(source: *const GtkIconSource) -> *const c_char;
    pub fn gtk_icon_source_get_pixbuf(source: *const GtkIconSource) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_source_get_size(source: *const GtkIconSource) -> GtkIconSize;
    pub fn gtk_icon_source_get_size_wildcarded(source: *const GtkIconSource) -> gboolean;
    pub fn gtk_icon_source_get_state(source: *const GtkIconSource) -> GtkStateType;
    pub fn gtk_icon_source_get_state_wildcarded(source: *const GtkIconSource) -> gboolean;
    pub fn gtk_icon_source_set_direction(source: *mut GtkIconSource, direction: GtkTextDirection);
    pub fn gtk_icon_source_set_direction_wildcarded(source: *mut GtkIconSource, setting: gboolean);
    pub fn gtk_icon_source_set_filename(source: *mut GtkIconSource, filename: *const c_char);
    pub fn gtk_icon_source_set_icon_name(source: *mut GtkIconSource, icon_name: *const c_char);
    pub fn gtk_icon_source_set_pixbuf(
        source: *mut GtkIconSource,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    );
    pub fn gtk_icon_source_set_size(source: *mut GtkIconSource, size: GtkIconSize);
    pub fn gtk_icon_source_set_size_wildcarded(source: *mut GtkIconSource, setting: gboolean);
    pub fn gtk_icon_source_set_state(source: *mut GtkIconSource, state: GtkStateType);
    pub fn gtk_icon_source_set_state_wildcarded(source: *mut GtkIconSource, setting: gboolean);

    //=========================================================================
    // GtkPaperSize
    //=========================================================================
    pub fn gtk_paper_size_get_type() -> GType;
    pub fn gtk_paper_size_new(name: *const c_char) -> *mut GtkPaperSize;
    pub fn gtk_paper_size_new_custom(
        name: *const c_char,
        display_name: *const c_char,
        width: c_double,
        height: c_double,
        unit: GtkUnit,
    ) -> *mut GtkPaperSize;
    pub fn gtk_paper_size_new_from_gvariant(variant: *mut glib::GVariant) -> *mut GtkPaperSize;
    pub fn gtk_paper_size_new_from_ipp(
        ipp_name: *const c_char,
        width: c_double,
        height: c_double,
    ) -> *mut GtkPaperSize;
    pub fn gtk_paper_size_new_from_key_file(
        key_file: *mut glib::GKeyFile,
        group_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> *mut GtkPaperSize;
    pub fn gtk_paper_size_new_from_ppd(
        ppd_name: *const c_char,
        ppd_display_name: *const c_char,
        width: c_double,
        height: c_double,
    ) -> *mut GtkPaperSize;
    pub fn gtk_paper_size_copy(other: *mut GtkPaperSize) -> *mut GtkPaperSize;
    pub fn gtk_paper_size_free(size: *mut GtkPaperSize);
    pub fn gtk_paper_size_get_default_bottom_margin(
        size: *mut GtkPaperSize,
        unit: GtkUnit,
    ) -> c_double;
    pub fn gtk_paper_size_get_default_left_margin(
        size: *mut GtkPaperSize,
        unit: GtkUnit,
    ) -> c_double;
    pub fn gtk_paper_size_get_default_right_margin(
        size: *mut GtkPaperSize,
        unit: GtkUnit,
    ) -> c_double;
    pub fn gtk_paper_size_get_default_top_margin(
        size: *mut GtkPaperSize,
        unit: GtkUnit,
    ) -> c_double;
    pub fn gtk_paper_size_get_display_name(size: *mut GtkPaperSize) -> *const c_char;
    pub fn gtk_paper_size_get_height(size: *mut GtkPaperSize, unit: GtkUnit) -> c_double;
    pub fn gtk_paper_size_get_name(size: *mut GtkPaperSize) -> *const c_char;
    pub fn gtk_paper_size_get_ppd_name(size: *mut GtkPaperSize) -> *const c_char;
    pub fn gtk_paper_size_get_width(size: *mut GtkPaperSize, unit: GtkUnit) -> c_double;
    pub fn gtk_paper_size_is_custom(size: *mut GtkPaperSize) -> gboolean;
    pub fn gtk_paper_size_is_equal(size1: *mut GtkPaperSize, size2: *mut GtkPaperSize) -> gboolean;
    pub fn gtk_paper_size_is_ipp(size: *mut GtkPaperSize) -> gboolean;
    pub fn gtk_paper_size_set_size(
        size: *mut GtkPaperSize,
        width: c_double,
        height: c_double,
        unit: GtkUnit,
    );
    pub fn gtk_paper_size_to_gvariant(paper_size: *mut GtkPaperSize) -> *mut glib::GVariant;
    pub fn gtk_paper_size_to_key_file(
        size: *mut GtkPaperSize,
        key_file: *mut glib::GKeyFile,
        group_name: *const c_char,
    );
    pub fn gtk_paper_size_get_default() -> *const c_char;
    pub fn gtk_paper_size_get_paper_sizes(include_custom: gboolean) -> *mut glib::GList;

    //=========================================================================
    // GtkRcProperty
    //=========================================================================
    pub fn gtk_rc_property_parse_border(
        pspec: *const gobject::GParamSpec,
        gstring: *const glib::GString,
        property_value: *mut gobject::GValue,
    ) -> gboolean;
    pub fn gtk_rc_property_parse_color(
        pspec: *const gobject::GParamSpec,
        gstring: *const glib::GString,
        property_value: *mut gobject::GValue,
    ) -> gboolean;
    pub fn gtk_rc_property_parse_enum(
        pspec: *const gobject::GParamSpec,
        gstring: *const glib::GString,
        property_value: *mut gobject::GValue,
    ) -> gboolean;
    pub fn gtk_rc_property_parse_flags(
        pspec: *const gobject::GParamSpec,
        gstring: *const glib::GString,
        property_value: *mut gobject::GValue,
    ) -> gboolean;
    pub fn gtk_rc_property_parse_requisition(
        pspec: *const gobject::GParamSpec,
        gstring: *const glib::GString,
        property_value: *mut gobject::GValue,
    ) -> gboolean;

    //=========================================================================
    // GtkRecentInfo
    //=========================================================================
    pub fn gtk_recent_info_get_type() -> GType;
    pub fn gtk_recent_info_create_app_info(
        info: *mut GtkRecentInfo,
        app_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> *mut gio::GAppInfo;
    pub fn gtk_recent_info_exists(info: *mut GtkRecentInfo) -> gboolean;
    pub fn gtk_recent_info_get_added(info: *mut GtkRecentInfo) -> c_long;
    pub fn gtk_recent_info_get_age(info: *mut GtkRecentInfo) -> c_int;
    pub fn gtk_recent_info_get_application_info(
        info: *mut GtkRecentInfo,
        app_name: *const c_char,
        app_exec: *mut *const c_char,
        count: *mut c_uint,
        time_: *mut c_long,
    ) -> gboolean;
    pub fn gtk_recent_info_get_applications(
        info: *mut GtkRecentInfo,
        length: *mut size_t,
    ) -> *mut *mut c_char;
    pub fn gtk_recent_info_get_description(info: *mut GtkRecentInfo) -> *const c_char;
    pub fn gtk_recent_info_get_display_name(info: *mut GtkRecentInfo) -> *const c_char;
    pub fn gtk_recent_info_get_gicon(info: *mut GtkRecentInfo) -> *mut gio::GIcon;
    pub fn gtk_recent_info_get_groups(
        info: *mut GtkRecentInfo,
        length: *mut size_t,
    ) -> *mut *mut c_char;
    pub fn gtk_recent_info_get_icon(
        info: *mut GtkRecentInfo,
        size: c_int,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_recent_info_get_mime_type(info: *mut GtkRecentInfo) -> *const c_char;
    pub fn gtk_recent_info_get_modified(info: *mut GtkRecentInfo) -> c_long;
    pub fn gtk_recent_info_get_private_hint(info: *mut GtkRecentInfo) -> gboolean;
    pub fn gtk_recent_info_get_short_name(info: *mut GtkRecentInfo) -> *mut c_char;
    pub fn gtk_recent_info_get_uri(info: *mut GtkRecentInfo) -> *const c_char;
    pub fn gtk_recent_info_get_uri_display(info: *mut GtkRecentInfo) -> *mut c_char;
    pub fn gtk_recent_info_get_visited(info: *mut GtkRecentInfo) -> c_long;
    pub fn gtk_recent_info_has_application(
        info: *mut GtkRecentInfo,
        app_name: *const c_char,
    ) -> gboolean;
    pub fn gtk_recent_info_has_group(
        info: *mut GtkRecentInfo,
        group_name: *const c_char,
    ) -> gboolean;
    pub fn gtk_recent_info_is_local(info: *mut GtkRecentInfo) -> gboolean;
    pub fn gtk_recent_info_last_application(info: *mut GtkRecentInfo) -> *mut c_char;
    pub fn gtk_recent_info_match(
        info_a: *mut GtkRecentInfo,
        info_b: *mut GtkRecentInfo,
    ) -> gboolean;
    pub fn gtk_recent_info_ref(info: *mut GtkRecentInfo) -> *mut GtkRecentInfo;
    pub fn gtk_recent_info_unref(info: *mut GtkRecentInfo);

    //=========================================================================
    // GtkRequisition
    //=========================================================================
    pub fn gtk_requisition_get_type() -> GType;
    pub fn gtk_requisition_new() -> *mut GtkRequisition;
    pub fn gtk_requisition_copy(requisition: *const GtkRequisition) -> *mut GtkRequisition;
    pub fn gtk_requisition_free(requisition: *mut GtkRequisition);

    //=========================================================================
    // GtkSelectionData
    //=========================================================================
    pub fn gtk_selection_data_get_type() -> GType;
    pub fn gtk_selection_data_copy(data: *const GtkSelectionData) -> *mut GtkSelectionData;
    pub fn gtk_selection_data_free(data: *mut GtkSelectionData);
    pub fn gtk_selection_data_get_data(selection_data: *const GtkSelectionData) -> *const u8;
    pub fn gtk_selection_data_get_data_type(
        selection_data: *const GtkSelectionData,
    ) -> gdk::GdkAtom;
    pub fn gtk_selection_data_get_data_with_length(
        selection_data: *const GtkSelectionData,
        length: *mut c_int,
    ) -> *const u8;
    pub fn gtk_selection_data_get_display(
        selection_data: *const GtkSelectionData,
    ) -> *mut gdk::GdkDisplay;
    pub fn gtk_selection_data_get_format(selection_data: *const GtkSelectionData) -> c_int;
    pub fn gtk_selection_data_get_length(selection_data: *const GtkSelectionData) -> c_int;
    pub fn gtk_selection_data_get_pixbuf(
        selection_data: *const GtkSelectionData,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_selection_data_get_selection(
        selection_data: *const GtkSelectionData,
    ) -> gdk::GdkAtom;
    pub fn gtk_selection_data_get_target(selection_data: *const GtkSelectionData) -> gdk::GdkAtom;
    pub fn gtk_selection_data_get_targets(
        selection_data: *const GtkSelectionData,
        targets: *mut *mut gdk::GdkAtom,
        n_atoms: *mut c_int,
    ) -> gboolean;
    pub fn gtk_selection_data_get_text(selection_data: *const GtkSelectionData) -> *mut c_char;
    pub fn gtk_selection_data_get_uris(selection_data: *const GtkSelectionData)
        -> *mut *mut c_char;
    pub fn gtk_selection_data_set(
        selection_data: *mut GtkSelectionData,
        type_: gdk::GdkAtom,
        format: c_int,
        data: *const u8,
        length: c_int,
    );
    pub fn gtk_selection_data_set_pixbuf(
        selection_data: *mut GtkSelectionData,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    ) -> gboolean;
    pub fn gtk_selection_data_set_text(
        selection_data: *mut GtkSelectionData,
        str: *const c_char,
        len: c_int,
    ) -> gboolean;
    pub fn gtk_selection_data_set_uris(
        selection_data: *mut GtkSelectionData,
        uris: *mut *mut c_char,
    ) -> gboolean;
    pub fn gtk_selection_data_targets_include_image(
        selection_data: *const GtkSelectionData,
        writable: gboolean,
    ) -> gboolean;
    pub fn gtk_selection_data_targets_include_rich_text(
        selection_data: *const GtkSelectionData,
        buffer: *mut GtkTextBuffer,
    ) -> gboolean;
    pub fn gtk_selection_data_targets_include_text(
        selection_data: *const GtkSelectionData,
    ) -> gboolean;
    pub fn gtk_selection_data_targets_include_uri(
        selection_data: *const GtkSelectionData,
    ) -> gboolean;

    //=========================================================================
    // GtkStockItem
    //=========================================================================
    pub fn gtk_stock_item_copy(item: *const GtkStockItem) -> *mut GtkStockItem;
    pub fn gtk_stock_item_free(item: *mut GtkStockItem);

    //=========================================================================
    // GtkSymbolicColor
    //=========================================================================
    pub fn gtk_symbolic_color_get_type() -> GType;
    pub fn gtk_symbolic_color_new_alpha(
        color: *mut GtkSymbolicColor,
        factor: c_double,
    ) -> *mut GtkSymbolicColor;
    pub fn gtk_symbolic_color_new_literal(color: *const gdk::GdkRGBA) -> *mut GtkSymbolicColor;
    pub fn gtk_symbolic_color_new_mix(
        color1: *mut GtkSymbolicColor,
        color2: *mut GtkSymbolicColor,
        factor: c_double,
    ) -> *mut GtkSymbolicColor;
    pub fn gtk_symbolic_color_new_name(name: *const c_char) -> *mut GtkSymbolicColor;
    pub fn gtk_symbolic_color_new_shade(
        color: *mut GtkSymbolicColor,
        factor: c_double,
    ) -> *mut GtkSymbolicColor;
    pub fn gtk_symbolic_color_new_win32(
        theme_class: *const c_char,
        id: c_int,
    ) -> *mut GtkSymbolicColor;
    pub fn gtk_symbolic_color_ref(color: *mut GtkSymbolicColor) -> *mut GtkSymbolicColor;
    pub fn gtk_symbolic_color_resolve(
        color: *mut GtkSymbolicColor,
        props: *mut GtkStyleProperties,
        resolved_color: *mut gdk::GdkRGBA,
    ) -> gboolean;
    pub fn gtk_symbolic_color_to_string(color: *mut GtkSymbolicColor) -> *mut c_char;
    pub fn gtk_symbolic_color_unref(color: *mut GtkSymbolicColor);

    //=========================================================================
    // GtkTargetEntry
    //=========================================================================
    pub fn gtk_target_entry_get_type() -> GType;
    pub fn gtk_target_entry_new(
        target: *const c_char,
        flags: c_uint,
        info: c_uint,
    ) -> *mut GtkTargetEntry;
    pub fn gtk_target_entry_copy(data: *mut GtkTargetEntry) -> *mut GtkTargetEntry;
    pub fn gtk_target_entry_free(data: *mut GtkTargetEntry);

    //=========================================================================
    // GtkTargetList
    //=========================================================================
    pub fn gtk_target_list_get_type() -> GType;
    pub fn gtk_target_list_new(
        targets: *const GtkTargetEntry,
        ntargets: c_uint,
    ) -> *mut GtkTargetList;
    pub fn gtk_target_list_add(
        list: *mut GtkTargetList,
        target: gdk::GdkAtom,
        flags: c_uint,
        info: c_uint,
    );
    pub fn gtk_target_list_add_image_targets(
        list: *mut GtkTargetList,
        info: c_uint,
        writable: gboolean,
    );
    pub fn gtk_target_list_add_rich_text_targets(
        list: *mut GtkTargetList,
        info: c_uint,
        deserializable: gboolean,
        buffer: *mut GtkTextBuffer,
    );
    pub fn gtk_target_list_add_table(
        list: *mut GtkTargetList,
        targets: *const GtkTargetEntry,
        ntargets: c_uint,
    );
    pub fn gtk_target_list_add_text_targets(list: *mut GtkTargetList, info: c_uint);
    pub fn gtk_target_list_add_uri_targets(list: *mut GtkTargetList, info: c_uint);
    pub fn gtk_target_list_find(
        list: *mut GtkTargetList,
        target: gdk::GdkAtom,
        info: *mut c_uint,
    ) -> gboolean;
    pub fn gtk_target_list_ref(list: *mut GtkTargetList) -> *mut GtkTargetList;
    pub fn gtk_target_list_remove(list: *mut GtkTargetList, target: gdk::GdkAtom);
    pub fn gtk_target_list_unref(list: *mut GtkTargetList);

    //=========================================================================
    // GtkTextAttributes
    //=========================================================================
    pub fn gtk_text_attributes_get_type() -> GType;
    pub fn gtk_text_attributes_new() -> *mut GtkTextAttributes;
    pub fn gtk_text_attributes_copy(src: *mut GtkTextAttributes) -> *mut GtkTextAttributes;
    pub fn gtk_text_attributes_copy_values(
        src: *mut GtkTextAttributes,
        dest: *mut GtkTextAttributes,
    );
    pub fn gtk_text_attributes_ref(values: *mut GtkTextAttributes) -> *mut GtkTextAttributes;
    pub fn gtk_text_attributes_unref(values: *mut GtkTextAttributes);

    //=========================================================================
    // GtkTextIter
    //=========================================================================
    pub fn gtk_text_iter_get_type() -> GType;
    pub fn gtk_text_iter_assign(iter: *mut GtkTextIter, other: *const GtkTextIter);
    pub fn gtk_text_iter_backward_char(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_backward_chars(iter: *mut GtkTextIter, count: c_int) -> gboolean;
    pub fn gtk_text_iter_backward_cursor_position(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_backward_cursor_positions(
        iter: *mut GtkTextIter,
        count: c_int,
    ) -> gboolean;
    pub fn gtk_text_iter_backward_find_char(
        iter: *mut GtkTextIter,
        pred: GtkTextCharPredicate,
        user_data: gpointer,
        limit: *const GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_iter_backward_line(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_backward_lines(iter: *mut GtkTextIter, count: c_int) -> gboolean;
    pub fn gtk_text_iter_backward_search(
        iter: *const GtkTextIter,
        str: *const c_char,
        flags: GtkTextSearchFlags,
        match_start: *mut GtkTextIter,
        match_end: *mut GtkTextIter,
        limit: *const GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_iter_backward_sentence_start(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_backward_sentence_starts(iter: *mut GtkTextIter, count: c_int)
        -> gboolean;
    pub fn gtk_text_iter_backward_to_tag_toggle(
        iter: *mut GtkTextIter,
        tag: *mut GtkTextTag,
    ) -> gboolean;
    pub fn gtk_text_iter_backward_visible_cursor_position(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_backward_visible_cursor_positions(
        iter: *mut GtkTextIter,
        count: c_int,
    ) -> gboolean;
    pub fn gtk_text_iter_backward_visible_line(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_backward_visible_lines(iter: *mut GtkTextIter, count: c_int) -> gboolean;
    pub fn gtk_text_iter_backward_visible_word_start(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_backward_visible_word_starts(
        iter: *mut GtkTextIter,
        count: c_int,
    ) -> gboolean;
    pub fn gtk_text_iter_backward_word_start(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_backward_word_starts(iter: *mut GtkTextIter, count: c_int) -> gboolean;
    pub fn gtk_text_iter_begins_tag(iter: *const GtkTextIter, tag: *mut GtkTextTag) -> gboolean;
    pub fn gtk_text_iter_can_insert(
        iter: *const GtkTextIter,
        default_editability: gboolean,
    ) -> gboolean;
    pub fn gtk_text_iter_compare(lhs: *const GtkTextIter, rhs: *const GtkTextIter) -> c_int;
    pub fn gtk_text_iter_copy(iter: *const GtkTextIter) -> *mut GtkTextIter;
    pub fn gtk_text_iter_editable(iter: *const GtkTextIter, default_setting: gboolean) -> gboolean;
    pub fn gtk_text_iter_ends_line(iter: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_ends_sentence(iter: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_ends_tag(iter: *const GtkTextIter, tag: *mut GtkTextTag) -> gboolean;
    pub fn gtk_text_iter_ends_word(iter: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_equal(lhs: *const GtkTextIter, rhs: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_forward_char(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_forward_chars(iter: *mut GtkTextIter, count: c_int) -> gboolean;
    pub fn gtk_text_iter_forward_cursor_position(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_forward_cursor_positions(iter: *mut GtkTextIter, count: c_int)
        -> gboolean;
    pub fn gtk_text_iter_forward_find_char(
        iter: *mut GtkTextIter,
        pred: GtkTextCharPredicate,
        user_data: gpointer,
        limit: *const GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_iter_forward_line(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_forward_lines(iter: *mut GtkTextIter, count: c_int) -> gboolean;
    pub fn gtk_text_iter_forward_search(
        iter: *const GtkTextIter,
        str: *const c_char,
        flags: GtkTextSearchFlags,
        match_start: *mut GtkTextIter,
        match_end: *mut GtkTextIter,
        limit: *const GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_iter_forward_sentence_end(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_forward_sentence_ends(iter: *mut GtkTextIter, count: c_int) -> gboolean;
    pub fn gtk_text_iter_forward_to_end(iter: *mut GtkTextIter);
    pub fn gtk_text_iter_forward_to_line_end(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_forward_to_tag_toggle(
        iter: *mut GtkTextIter,
        tag: *mut GtkTextTag,
    ) -> gboolean;
    pub fn gtk_text_iter_forward_visible_cursor_position(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_forward_visible_cursor_positions(
        iter: *mut GtkTextIter,
        count: c_int,
    ) -> gboolean;
    pub fn gtk_text_iter_forward_visible_line(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_forward_visible_lines(iter: *mut GtkTextIter, count: c_int) -> gboolean;
    pub fn gtk_text_iter_forward_visible_word_end(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_forward_visible_word_ends(
        iter: *mut GtkTextIter,
        count: c_int,
    ) -> gboolean;
    pub fn gtk_text_iter_forward_word_end(iter: *mut GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_forward_word_ends(iter: *mut GtkTextIter, count: c_int) -> gboolean;
    pub fn gtk_text_iter_free(iter: *mut GtkTextIter);
    pub fn gtk_text_iter_get_attributes(
        iter: *const GtkTextIter,
        values: *mut GtkTextAttributes,
    ) -> gboolean;
    pub fn gtk_text_iter_get_buffer(iter: *const GtkTextIter) -> *mut GtkTextBuffer;
    pub fn gtk_text_iter_get_bytes_in_line(iter: *const GtkTextIter) -> c_int;
    pub fn gtk_text_iter_get_char(iter: *const GtkTextIter) -> u32;
    pub fn gtk_text_iter_get_chars_in_line(iter: *const GtkTextIter) -> c_int;
    pub fn gtk_text_iter_get_child_anchor(iter: *const GtkTextIter) -> *mut GtkTextChildAnchor;
    pub fn gtk_text_iter_get_language(iter: *const GtkTextIter) -> *mut pango::PangoLanguage;
    pub fn gtk_text_iter_get_line(iter: *const GtkTextIter) -> c_int;
    pub fn gtk_text_iter_get_line_index(iter: *const GtkTextIter) -> c_int;
    pub fn gtk_text_iter_get_line_offset(iter: *const GtkTextIter) -> c_int;
    pub fn gtk_text_iter_get_marks(iter: *const GtkTextIter) -> *mut glib::GSList;
    pub fn gtk_text_iter_get_offset(iter: *const GtkTextIter) -> c_int;
    pub fn gtk_text_iter_get_pixbuf(iter: *const GtkTextIter) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_text_iter_get_slice(
        start: *const GtkTextIter,
        end: *const GtkTextIter,
    ) -> *mut c_char;
    pub fn gtk_text_iter_get_tags(iter: *const GtkTextIter) -> *mut glib::GSList;
    pub fn gtk_text_iter_get_text(
        start: *const GtkTextIter,
        end: *const GtkTextIter,
    ) -> *mut c_char;
    pub fn gtk_text_iter_get_toggled_tags(
        iter: *const GtkTextIter,
        toggled_on: gboolean,
    ) -> *mut glib::GSList;
    pub fn gtk_text_iter_get_visible_line_index(iter: *const GtkTextIter) -> c_int;
    pub fn gtk_text_iter_get_visible_line_offset(iter: *const GtkTextIter) -> c_int;
    pub fn gtk_text_iter_get_visible_slice(
        start: *const GtkTextIter,
        end: *const GtkTextIter,
    ) -> *mut c_char;
    pub fn gtk_text_iter_get_visible_text(
        start: *const GtkTextIter,
        end: *const GtkTextIter,
    ) -> *mut c_char;
    pub fn gtk_text_iter_has_tag(iter: *const GtkTextIter, tag: *mut GtkTextTag) -> gboolean;
    pub fn gtk_text_iter_in_range(
        iter: *const GtkTextIter,
        start: *const GtkTextIter,
        end: *const GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_iter_inside_sentence(iter: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_inside_word(iter: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_is_cursor_position(iter: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_is_end(iter: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_is_start(iter: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_order(first: *mut GtkTextIter, second: *mut GtkTextIter);
    pub fn gtk_text_iter_set_line(iter: *mut GtkTextIter, line_number: c_int);
    pub fn gtk_text_iter_set_line_index(iter: *mut GtkTextIter, byte_on_line: c_int);
    pub fn gtk_text_iter_set_line_offset(iter: *mut GtkTextIter, char_on_line: c_int);
    pub fn gtk_text_iter_set_offset(iter: *mut GtkTextIter, char_offset: c_int);
    pub fn gtk_text_iter_set_visible_line_index(iter: *mut GtkTextIter, byte_on_line: c_int);
    pub fn gtk_text_iter_set_visible_line_offset(iter: *mut GtkTextIter, char_on_line: c_int);
    pub fn gtk_text_iter_starts_line(iter: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_starts_sentence(iter: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_starts_tag(iter: *const GtkTextIter, tag: *mut GtkTextTag) -> gboolean;
    pub fn gtk_text_iter_starts_word(iter: *const GtkTextIter) -> gboolean;
    pub fn gtk_text_iter_toggles_tag(iter: *const GtkTextIter, tag: *mut GtkTextTag) -> gboolean;

    //=========================================================================
    // GtkTreeIter
    //=========================================================================
    pub fn gtk_tree_iter_get_type() -> GType;
    pub fn gtk_tree_iter_copy(iter: *mut GtkTreeIter) -> *mut GtkTreeIter;
    pub fn gtk_tree_iter_free(iter: *mut GtkTreeIter);

    //=========================================================================
    // GtkTreePath
    //=========================================================================
    pub fn gtk_tree_path_get_type() -> GType;
    pub fn gtk_tree_path_new() -> *mut GtkTreePath;
    pub fn gtk_tree_path_new_first() -> *mut GtkTreePath;
    pub fn gtk_tree_path_new_from_indices(first_index: c_int, ...) -> *mut GtkTreePath;
    pub fn gtk_tree_path_new_from_indicesv(indices: *mut c_int, length: size_t)
        -> *mut GtkTreePath;
    pub fn gtk_tree_path_new_from_string(path: *const c_char) -> *mut GtkTreePath;
    pub fn gtk_tree_path_append_index(path: *mut GtkTreePath, index_: c_int);
    pub fn gtk_tree_path_compare(a: *const GtkTreePath, b: *const GtkTreePath) -> c_int;
    pub fn gtk_tree_path_copy(path: *const GtkTreePath) -> *mut GtkTreePath;
    pub fn gtk_tree_path_down(path: *mut GtkTreePath);
    pub fn gtk_tree_path_free(path: *mut GtkTreePath);
    pub fn gtk_tree_path_get_depth(path: *mut GtkTreePath) -> c_int;
    pub fn gtk_tree_path_get_indices(path: *mut GtkTreePath) -> *mut c_int;
    pub fn gtk_tree_path_get_indices_with_depth(
        path: *mut GtkTreePath,
        depth: *mut c_int,
    ) -> *mut c_int;
    pub fn gtk_tree_path_is_ancestor(
        path: *mut GtkTreePath,
        descendant: *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_tree_path_is_descendant(
        path: *mut GtkTreePath,
        ancestor: *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_tree_path_next(path: *mut GtkTreePath);
    pub fn gtk_tree_path_prepend_index(path: *mut GtkTreePath, index_: c_int);
    pub fn gtk_tree_path_prev(path: *mut GtkTreePath) -> gboolean;
    pub fn gtk_tree_path_to_string(path: *mut GtkTreePath) -> *mut c_char;
    pub fn gtk_tree_path_up(path: *mut GtkTreePath) -> gboolean;

    //=========================================================================
    // GtkTreeRowReference
    //=========================================================================
    pub fn gtk_tree_row_reference_get_type() -> GType;
    pub fn gtk_tree_row_reference_new(
        model: *mut GtkTreeModel,
        path: *mut GtkTreePath,
    ) -> *mut GtkTreeRowReference;
    pub fn gtk_tree_row_reference_new_proxy(
        proxy: *mut gobject::GObject,
        model: *mut GtkTreeModel,
        path: *mut GtkTreePath,
    ) -> *mut GtkTreeRowReference;
    pub fn gtk_tree_row_reference_copy(
        reference: *mut GtkTreeRowReference,
    ) -> *mut GtkTreeRowReference;
    pub fn gtk_tree_row_reference_free(reference: *mut GtkTreeRowReference);
    pub fn gtk_tree_row_reference_get_model(
        reference: *mut GtkTreeRowReference,
    ) -> *mut GtkTreeModel;
    pub fn gtk_tree_row_reference_get_path(reference: *mut GtkTreeRowReference)
        -> *mut GtkTreePath;
    pub fn gtk_tree_row_reference_valid(reference: *mut GtkTreeRowReference) -> gboolean;
    pub fn gtk_tree_row_reference_deleted(proxy: *mut gobject::GObject, path: *mut GtkTreePath);
    pub fn gtk_tree_row_reference_inserted(proxy: *mut gobject::GObject, path: *mut GtkTreePath);
    pub fn gtk_tree_row_reference_reordered(
        proxy: *mut gobject::GObject,
        path: *mut GtkTreePath,
        iter: *mut GtkTreeIter,
        new_order: *mut c_int,
    );

    //=========================================================================
    // GtkWidgetClass
    //=========================================================================
    pub fn gtk_widget_class_bind_template_callback_full(
        widget_class: *mut GtkWidgetClass,
        callback_name: *const c_char,
        callback_symbol: gobject::GCallback,
    );
    pub fn gtk_widget_class_bind_template_child_full(
        widget_class: *mut GtkWidgetClass,
        name: *const c_char,
        internal_child: gboolean,
        struct_offset: ssize_t,
    );
    pub fn gtk_widget_class_find_style_property(
        klass: *mut GtkWidgetClass,
        property_name: *const c_char,
    ) -> *mut gobject::GParamSpec;
    pub fn gtk_widget_class_get_css_name(widget_class: *mut GtkWidgetClass) -> *const c_char;
    pub fn gtk_widget_class_install_style_property(
        klass: *mut GtkWidgetClass,
        pspec: *mut gobject::GParamSpec,
    );
    pub fn gtk_widget_class_install_style_property_parser(
        klass: *mut GtkWidgetClass,
        pspec: *mut gobject::GParamSpec,
        parser: GtkRcPropertyParser,
    );
    pub fn gtk_widget_class_list_style_properties(
        klass: *mut GtkWidgetClass,
        n_properties: *mut c_uint,
    ) -> *mut *mut gobject::GParamSpec;
    pub fn gtk_widget_class_set_accessible_role(
        widget_class: *mut GtkWidgetClass,
        role: atk::AtkRole,
    );
    pub fn gtk_widget_class_set_accessible_type(widget_class: *mut GtkWidgetClass, type_: GType);
    pub fn gtk_widget_class_set_connect_func(
        widget_class: *mut GtkWidgetClass,
        connect_func: GtkBuilderConnectFunc,
        connect_data: gpointer,
        connect_data_destroy: glib::GDestroyNotify,
    );
    pub fn gtk_widget_class_set_css_name(widget_class: *mut GtkWidgetClass, name: *const c_char);
    pub fn gtk_widget_class_set_template(
        widget_class: *mut GtkWidgetClass,
        template_bytes: *mut glib::GBytes,
    );
    pub fn gtk_widget_class_set_template_from_resource(
        widget_class: *mut GtkWidgetClass,
        resource_name: *const c_char,
    );

    //=========================================================================
    // GtkWidgetPath
    //=========================================================================
    pub fn gtk_widget_path_get_type() -> GType;
    pub fn gtk_widget_path_new() -> *mut GtkWidgetPath;
    pub fn gtk_widget_path_append_for_widget(
        path: *mut GtkWidgetPath,
        widget: *mut GtkWidget,
    ) -> c_int;
    pub fn gtk_widget_path_append_type(path: *mut GtkWidgetPath, type_: GType) -> c_int;
    pub fn gtk_widget_path_append_with_siblings(
        path: *mut GtkWidgetPath,
        siblings: *mut GtkWidgetPath,
        sibling_index: c_uint,
    ) -> c_int;
    pub fn gtk_widget_path_copy(path: *const GtkWidgetPath) -> *mut GtkWidgetPath;
    pub fn gtk_widget_path_free(path: *mut GtkWidgetPath);
    pub fn gtk_widget_path_get_object_type(path: *const GtkWidgetPath) -> GType;
    pub fn gtk_widget_path_has_parent(path: *const GtkWidgetPath, type_: GType) -> gboolean;
    pub fn gtk_widget_path_is_type(path: *const GtkWidgetPath, type_: GType) -> gboolean;
    pub fn gtk_widget_path_iter_add_class(
        path: *mut GtkWidgetPath,
        pos: c_int,
        name: *const c_char,
    );
    pub fn gtk_widget_path_iter_add_region(
        path: *mut GtkWidgetPath,
        pos: c_int,
        name: *const c_char,
        flags: GtkRegionFlags,
    );
    pub fn gtk_widget_path_iter_clear_classes(path: *mut GtkWidgetPath, pos: c_int);
    pub fn gtk_widget_path_iter_clear_regions(path: *mut GtkWidgetPath, pos: c_int);
    pub fn gtk_widget_path_iter_get_name(path: *const GtkWidgetPath, pos: c_int) -> *const c_char;
    pub fn gtk_widget_path_iter_get_object_name(
        path: *const GtkWidgetPath,
        pos: c_int,
    ) -> *const c_char;
    pub fn gtk_widget_path_iter_get_object_type(path: *const GtkWidgetPath, pos: c_int) -> GType;
    pub fn gtk_widget_path_iter_get_sibling_index(path: *const GtkWidgetPath, pos: c_int)
        -> c_uint;
    pub fn gtk_widget_path_iter_get_siblings(
        path: *const GtkWidgetPath,
        pos: c_int,
    ) -> *const GtkWidgetPath;
    pub fn gtk_widget_path_iter_get_state(path: *const GtkWidgetPath, pos: c_int) -> GtkStateFlags;
    pub fn gtk_widget_path_iter_has_class(
        path: *const GtkWidgetPath,
        pos: c_int,
        name: *const c_char,
    ) -> gboolean;
    pub fn gtk_widget_path_iter_has_name(
        path: *const GtkWidgetPath,
        pos: c_int,
        name: *const c_char,
    ) -> gboolean;
    pub fn gtk_widget_path_iter_has_qclass(
        path: *const GtkWidgetPath,
        pos: c_int,
        qname: glib::GQuark,
    ) -> gboolean;
    pub fn gtk_widget_path_iter_has_qname(
        path: *const GtkWidgetPath,
        pos: c_int,
        qname: glib::GQuark,
    ) -> gboolean;
    pub fn gtk_widget_path_iter_has_qregion(
        path: *const GtkWidgetPath,
        pos: c_int,
        qname: glib::GQuark,
        flags: *mut GtkRegionFlags,
    ) -> gboolean;
    pub fn gtk_widget_path_iter_has_region(
        path: *const GtkWidgetPath,
        pos: c_int,
        name: *const c_char,
        flags: *mut GtkRegionFlags,
    ) -> gboolean;
    pub fn gtk_widget_path_iter_list_classes(
        path: *const GtkWidgetPath,
        pos: c_int,
    ) -> *mut glib::GSList;
    pub fn gtk_widget_path_iter_list_regions(
        path: *const GtkWidgetPath,
        pos: c_int,
    ) -> *mut glib::GSList;
    pub fn gtk_widget_path_iter_remove_class(
        path: *mut GtkWidgetPath,
        pos: c_int,
        name: *const c_char,
    );
    pub fn gtk_widget_path_iter_remove_region(
        path: *mut GtkWidgetPath,
        pos: c_int,
        name: *const c_char,
    );
    pub fn gtk_widget_path_iter_set_name(path: *mut GtkWidgetPath, pos: c_int, name: *const c_char);
    pub fn gtk_widget_path_iter_set_object_name(
        path: *mut GtkWidgetPath,
        pos: c_int,
        name: *const c_char,
    );
    pub fn gtk_widget_path_iter_set_object_type(path: *mut GtkWidgetPath, pos: c_int, type_: GType);
    pub fn gtk_widget_path_iter_set_state(
        path: *mut GtkWidgetPath,
        pos: c_int,
        state: GtkStateFlags,
    );
    pub fn gtk_widget_path_length(path: *const GtkWidgetPath) -> c_int;
    pub fn gtk_widget_path_prepend_type(path: *mut GtkWidgetPath, type_: GType);
    pub fn gtk_widget_path_ref(path: *mut GtkWidgetPath) -> *mut GtkWidgetPath;
    pub fn gtk_widget_path_to_string(path: *const GtkWidgetPath) -> *mut c_char;
    pub fn gtk_widget_path_unref(path: *mut GtkWidgetPath);

    //=========================================================================
    // GtkAboutDialog
    //=========================================================================
    pub fn gtk_about_dialog_get_type() -> GType;
    pub fn gtk_about_dialog_new() -> *mut GtkWidget;
    pub fn gtk_about_dialog_add_credit_section(
        about: *mut GtkAboutDialog,
        section_name: *const c_char,
        people: *mut *const c_char,
    );
    pub fn gtk_about_dialog_get_artists(about: *mut GtkAboutDialog) -> *const *const c_char;
    pub fn gtk_about_dialog_get_authors(about: *mut GtkAboutDialog) -> *const *const c_char;
    pub fn gtk_about_dialog_get_comments(about: *mut GtkAboutDialog) -> *const c_char;
    pub fn gtk_about_dialog_get_copyright(about: *mut GtkAboutDialog) -> *const c_char;
    pub fn gtk_about_dialog_get_documenters(about: *mut GtkAboutDialog) -> *const *const c_char;
    pub fn gtk_about_dialog_get_license(about: *mut GtkAboutDialog) -> *const c_char;
    pub fn gtk_about_dialog_get_license_type(about: *mut GtkAboutDialog) -> GtkLicense;
    pub fn gtk_about_dialog_get_logo(about: *mut GtkAboutDialog) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_about_dialog_get_logo_icon_name(about: *mut GtkAboutDialog) -> *const c_char;
    pub fn gtk_about_dialog_get_program_name(about: *mut GtkAboutDialog) -> *const c_char;
    pub fn gtk_about_dialog_get_translator_credits(about: *mut GtkAboutDialog) -> *const c_char;
    pub fn gtk_about_dialog_get_version(about: *mut GtkAboutDialog) -> *const c_char;
    pub fn gtk_about_dialog_get_website(about: *mut GtkAboutDialog) -> *const c_char;
    pub fn gtk_about_dialog_get_website_label(about: *mut GtkAboutDialog) -> *const c_char;
    pub fn gtk_about_dialog_get_wrap_license(about: *mut GtkAboutDialog) -> gboolean;
    pub fn gtk_about_dialog_set_artists(about: *mut GtkAboutDialog, artists: *mut *const c_char);
    pub fn gtk_about_dialog_set_authors(about: *mut GtkAboutDialog, authors: *mut *const c_char);
    pub fn gtk_about_dialog_set_comments(about: *mut GtkAboutDialog, comments: *const c_char);
    pub fn gtk_about_dialog_set_copyright(about: *mut GtkAboutDialog, copyright: *const c_char);
    pub fn gtk_about_dialog_set_documenters(
        about: *mut GtkAboutDialog,
        documenters: *mut *const c_char,
    );
    pub fn gtk_about_dialog_set_license(about: *mut GtkAboutDialog, license: *const c_char);
    pub fn gtk_about_dialog_set_license_type(about: *mut GtkAboutDialog, license_type: GtkLicense);
    pub fn gtk_about_dialog_set_logo(about: *mut GtkAboutDialog, logo: *mut gdk_pixbuf::GdkPixbuf);
    pub fn gtk_about_dialog_set_logo_icon_name(
        about: *mut GtkAboutDialog,
        icon_name: *const c_char,
    );
    pub fn gtk_about_dialog_set_program_name(about: *mut GtkAboutDialog, name: *const c_char);
    pub fn gtk_about_dialog_set_translator_credits(
        about: *mut GtkAboutDialog,
        translator_credits: *const c_char,
    );
    pub fn gtk_about_dialog_set_version(about: *mut GtkAboutDialog, version: *const c_char);
    pub fn gtk_about_dialog_set_website(about: *mut GtkAboutDialog, website: *const c_char);
    pub fn gtk_about_dialog_set_website_label(
        about: *mut GtkAboutDialog,
        website_label: *const c_char,
    );
    pub fn gtk_about_dialog_set_wrap_license(about: *mut GtkAboutDialog, wrap_license: gboolean);

    //=========================================================================
    // GtkAccelGroup
    //=========================================================================
    pub fn gtk_accel_group_get_type() -> GType;
    pub fn gtk_accel_group_new() -> *mut GtkAccelGroup;
    pub fn gtk_accel_group_from_accel_closure(
        closure: *mut gobject::GClosure,
    ) -> *mut GtkAccelGroup;
    pub fn gtk_accel_group_activate(
        accel_group: *mut GtkAccelGroup,
        accel_quark: glib::GQuark,
        acceleratable: *mut gobject::GObject,
        accel_key: c_uint,
        accel_mods: gdk::GdkModifierType,
    ) -> gboolean;
    pub fn gtk_accel_group_connect(
        accel_group: *mut GtkAccelGroup,
        accel_key: c_uint,
        accel_mods: gdk::GdkModifierType,
        accel_flags: GtkAccelFlags,
        closure: *mut gobject::GClosure,
    );
    pub fn gtk_accel_group_connect_by_path(
        accel_group: *mut GtkAccelGroup,
        accel_path: *const c_char,
        closure: *mut gobject::GClosure,
    );
    pub fn gtk_accel_group_disconnect(
        accel_group: *mut GtkAccelGroup,
        closure: *mut gobject::GClosure,
    ) -> gboolean;
    pub fn gtk_accel_group_disconnect_key(
        accel_group: *mut GtkAccelGroup,
        accel_key: c_uint,
        accel_mods: gdk::GdkModifierType,
    ) -> gboolean;
    pub fn gtk_accel_group_find(
        accel_group: *mut GtkAccelGroup,
        find_func: GtkAccelGroupFindFunc,
        data: gpointer,
    ) -> *mut GtkAccelKey;
    pub fn gtk_accel_group_get_is_locked(accel_group: *mut GtkAccelGroup) -> gboolean;
    pub fn gtk_accel_group_get_modifier_mask(
        accel_group: *mut GtkAccelGroup,
    ) -> gdk::GdkModifierType;
    pub fn gtk_accel_group_lock(accel_group: *mut GtkAccelGroup);
    pub fn gtk_accel_group_query(
        accel_group: *mut GtkAccelGroup,
        accel_key: c_uint,
        accel_mods: gdk::GdkModifierType,
        n_entries: *mut c_uint,
    ) -> *mut GtkAccelGroupEntry;
    pub fn gtk_accel_group_unlock(accel_group: *mut GtkAccelGroup);

    //=========================================================================
    // GtkAccelLabel
    //=========================================================================
    pub fn gtk_accel_label_get_type() -> GType;
    pub fn gtk_accel_label_new(string: *const c_char) -> *mut GtkWidget;
    pub fn gtk_accel_label_get_accel(
        accel_label: *mut GtkAccelLabel,
        accelerator_key: *mut c_uint,
        accelerator_mods: *mut gdk::GdkModifierType,
    );
    pub fn gtk_accel_label_get_accel_widget(accel_label: *mut GtkAccelLabel) -> *mut GtkWidget;
    pub fn gtk_accel_label_get_accel_width(accel_label: *mut GtkAccelLabel) -> c_uint;
    pub fn gtk_accel_label_refetch(accel_label: *mut GtkAccelLabel) -> gboolean;
    pub fn gtk_accel_label_set_accel(
        accel_label: *mut GtkAccelLabel,
        accelerator_key: c_uint,
        accelerator_mods: gdk::GdkModifierType,
    );
    pub fn gtk_accel_label_set_accel_closure(
        accel_label: *mut GtkAccelLabel,
        accel_closure: *mut gobject::GClosure,
    );
    pub fn gtk_accel_label_set_accel_widget(
        accel_label: *mut GtkAccelLabel,
        accel_widget: *mut GtkWidget,
    );

    //=========================================================================
    // GtkAccelMap
    //=========================================================================
    pub fn gtk_accel_map_get_type() -> GType;
    pub fn gtk_accel_map_add_entry(
        accel_path: *const c_char,
        accel_key: c_uint,
        accel_mods: gdk::GdkModifierType,
    );
    pub fn gtk_accel_map_add_filter(filter_pattern: *const c_char);
    pub fn gtk_accel_map_change_entry(
        accel_path: *const c_char,
        accel_key: c_uint,
        accel_mods: gdk::GdkModifierType,
        replace: gboolean,
    ) -> gboolean;
    pub fn gtk_accel_map_foreach(data: gpointer, foreach_func: GtkAccelMapForeach);
    pub fn gtk_accel_map_foreach_unfiltered(data: gpointer, foreach_func: GtkAccelMapForeach);
    pub fn gtk_accel_map_get() -> *mut GtkAccelMap;
    pub fn gtk_accel_map_load(file_name: *const c_char);
    pub fn gtk_accel_map_load_fd(fd: c_int);
    pub fn gtk_accel_map_load_scanner(scanner: *mut glib::GScanner);
    pub fn gtk_accel_map_lock_path(accel_path: *const c_char);
    pub fn gtk_accel_map_lookup_entry(accel_path: *const c_char, key: *mut GtkAccelKey)
        -> gboolean;
    pub fn gtk_accel_map_save(file_name: *const c_char);
    pub fn gtk_accel_map_save_fd(fd: c_int);
    pub fn gtk_accel_map_unlock_path(accel_path: *const c_char);

    //=========================================================================
    // GtkAccessible
    //=========================================================================
    pub fn gtk_accessible_get_type() -> GType;
    pub fn gtk_accessible_connect_widget_destroyed(accessible: *mut GtkAccessible);
    pub fn gtk_accessible_get_widget(accessible: *mut GtkAccessible) -> *mut GtkWidget;
    pub fn gtk_accessible_set_widget(accessible: *mut GtkAccessible, widget: *mut GtkWidget);

    //=========================================================================
    // GtkAction
    //=========================================================================
    pub fn gtk_action_get_type() -> GType;
    pub fn gtk_action_new(
        name: *const c_char,
        label: *const c_char,
        tooltip: *const c_char,
        stock_id: *const c_char,
    ) -> *mut GtkAction;
    pub fn gtk_action_activate(action: *mut GtkAction);
    pub fn gtk_action_block_activate(action: *mut GtkAction);
    pub fn gtk_action_connect_accelerator(action: *mut GtkAction);
    pub fn gtk_action_create_icon(action: *mut GtkAction, icon_size: GtkIconSize)
        -> *mut GtkWidget;
    pub fn gtk_action_create_menu(action: *mut GtkAction) -> *mut GtkWidget;
    pub fn gtk_action_create_menu_item(action: *mut GtkAction) -> *mut GtkWidget;
    pub fn gtk_action_create_tool_item(action: *mut GtkAction) -> *mut GtkWidget;
    pub fn gtk_action_disconnect_accelerator(action: *mut GtkAction);
    pub fn gtk_action_get_accel_closure(action: *mut GtkAction) -> *mut gobject::GClosure;
    pub fn gtk_action_get_accel_path(action: *mut GtkAction) -> *const c_char;
    pub fn gtk_action_get_always_show_image(action: *mut GtkAction) -> gboolean;
    pub fn gtk_action_get_gicon(action: *mut GtkAction) -> *mut gio::GIcon;
    pub fn gtk_action_get_icon_name(action: *mut GtkAction) -> *const c_char;
    pub fn gtk_action_get_is_important(action: *mut GtkAction) -> gboolean;
    pub fn gtk_action_get_label(action: *mut GtkAction) -> *const c_char;
    pub fn gtk_action_get_name(action: *mut GtkAction) -> *const c_char;
    pub fn gtk_action_get_proxies(action: *mut GtkAction) -> *mut glib::GSList;
    pub fn gtk_action_get_sensitive(action: *mut GtkAction) -> gboolean;
    pub fn gtk_action_get_short_label(action: *mut GtkAction) -> *const c_char;
    pub fn gtk_action_get_stock_id(action: *mut GtkAction) -> *const c_char;
    pub fn gtk_action_get_tooltip(action: *mut GtkAction) -> *const c_char;
    pub fn gtk_action_get_visible(action: *mut GtkAction) -> gboolean;
    pub fn gtk_action_get_visible_horizontal(action: *mut GtkAction) -> gboolean;
    pub fn gtk_action_get_visible_vertical(action: *mut GtkAction) -> gboolean;
    pub fn gtk_action_is_sensitive(action: *mut GtkAction) -> gboolean;
    pub fn gtk_action_is_visible(action: *mut GtkAction) -> gboolean;
    pub fn gtk_action_set_accel_group(action: *mut GtkAction, accel_group: *mut GtkAccelGroup);
    pub fn gtk_action_set_accel_path(action: *mut GtkAction, accel_path: *const c_char);
    pub fn gtk_action_set_always_show_image(action: *mut GtkAction, always_show: gboolean);
    pub fn gtk_action_set_gicon(action: *mut GtkAction, icon: *mut gio::GIcon);
    pub fn gtk_action_set_icon_name(action: *mut GtkAction, icon_name: *const c_char);
    pub fn gtk_action_set_is_important(action: *mut GtkAction, is_important: gboolean);
    pub fn gtk_action_set_label(action: *mut GtkAction, label: *const c_char);
    pub fn gtk_action_set_sensitive(action: *mut GtkAction, sensitive: gboolean);
    pub fn gtk_action_set_short_label(action: *mut GtkAction, short_label: *const c_char);
    pub fn gtk_action_set_stock_id(action: *mut GtkAction, stock_id: *const c_char);
    pub fn gtk_action_set_tooltip(action: *mut GtkAction, tooltip: *const c_char);
    pub fn gtk_action_set_visible(action: *mut GtkAction, visible: gboolean);
    pub fn gtk_action_set_visible_horizontal(action: *mut GtkAction, visible_horizontal: gboolean);
    pub fn gtk_action_set_visible_vertical(action: *mut GtkAction, visible_vertical: gboolean);
    pub fn gtk_action_unblock_activate(action: *mut GtkAction);

    //=========================================================================
    // GtkActionBar
    //=========================================================================
    pub fn gtk_action_bar_get_type() -> GType;
    pub fn gtk_action_bar_new() -> *mut GtkWidget;
    pub fn gtk_action_bar_get_center_widget(action_bar: *mut GtkActionBar) -> *mut GtkWidget;
    pub fn gtk_action_bar_pack_end(action_bar: *mut GtkActionBar, child: *mut GtkWidget);
    pub fn gtk_action_bar_pack_start(action_bar: *mut GtkActionBar, child: *mut GtkWidget);
    pub fn gtk_action_bar_set_center_widget(
        action_bar: *mut GtkActionBar,
        center_widget: *mut GtkWidget,
    );

    //=========================================================================
    // GtkActionGroup
    //=========================================================================
    pub fn gtk_action_group_get_type() -> GType;
    pub fn gtk_action_group_new(name: *const c_char) -> *mut GtkActionGroup;
    pub fn gtk_action_group_add_action(action_group: *mut GtkActionGroup, action: *mut GtkAction);
    pub fn gtk_action_group_add_action_with_accel(
        action_group: *mut GtkActionGroup,
        action: *mut GtkAction,
        accelerator: *const c_char,
    );
    pub fn gtk_action_group_add_actions(
        action_group: *mut GtkActionGroup,
        entries: *const GtkActionEntry,
        n_entries: c_uint,
        user_data: gpointer,
    );
    pub fn gtk_action_group_add_actions_full(
        action_group: *mut GtkActionGroup,
        entries: *const GtkActionEntry,
        n_entries: c_uint,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_action_group_add_radio_actions(
        action_group: *mut GtkActionGroup,
        entries: *const GtkRadioActionEntry,
        n_entries: c_uint,
        value: c_int,
        on_change: gobject::GCallback,
        user_data: gpointer,
    );
    pub fn gtk_action_group_add_radio_actions_full(
        action_group: *mut GtkActionGroup,
        entries: *const GtkRadioActionEntry,
        n_entries: c_uint,
        value: c_int,
        on_change: gobject::GCallback,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_action_group_add_toggle_actions(
        action_group: *mut GtkActionGroup,
        entries: *const GtkToggleActionEntry,
        n_entries: c_uint,
        user_data: gpointer,
    );
    pub fn gtk_action_group_add_toggle_actions_full(
        action_group: *mut GtkActionGroup,
        entries: *const GtkToggleActionEntry,
        n_entries: c_uint,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_action_group_get_accel_group(
        action_group: *mut GtkActionGroup,
    ) -> *mut GtkAccelGroup;
    pub fn gtk_action_group_get_action(
        action_group: *mut GtkActionGroup,
        action_name: *const c_char,
    ) -> *mut GtkAction;
    pub fn gtk_action_group_get_name(action_group: *mut GtkActionGroup) -> *const c_char;
    pub fn gtk_action_group_get_sensitive(action_group: *mut GtkActionGroup) -> gboolean;
    pub fn gtk_action_group_get_visible(action_group: *mut GtkActionGroup) -> gboolean;
    pub fn gtk_action_group_list_actions(action_group: *mut GtkActionGroup) -> *mut glib::GList;
    pub fn gtk_action_group_remove_action(
        action_group: *mut GtkActionGroup,
        action: *mut GtkAction,
    );
    pub fn gtk_action_group_set_accel_group(
        action_group: *mut GtkActionGroup,
        accel_group: *mut GtkAccelGroup,
    );
    pub fn gtk_action_group_set_sensitive(action_group: *mut GtkActionGroup, sensitive: gboolean);
    pub fn gtk_action_group_set_translate_func(
        action_group: *mut GtkActionGroup,
        func: GtkTranslateFunc,
        data: gpointer,
        notify: glib::GDestroyNotify,
    );
    pub fn gtk_action_group_set_translation_domain(
        action_group: *mut GtkActionGroup,
        domain: *const c_char,
    );
    pub fn gtk_action_group_set_visible(action_group: *mut GtkActionGroup, visible: gboolean);
    pub fn gtk_action_group_translate_string(
        action_group: *mut GtkActionGroup,
        string: *const c_char,
    ) -> *const c_char;

    //=========================================================================
    // GtkAdjustment
    //=========================================================================
    pub fn gtk_adjustment_get_type() -> GType;
    pub fn gtk_adjustment_new(
        value: c_double,
        lower: c_double,
        upper: c_double,
        step_increment: c_double,
        page_increment: c_double,
        page_size: c_double,
    ) -> *mut GtkAdjustment;
    pub fn gtk_adjustment_changed(adjustment: *mut GtkAdjustment);
    pub fn gtk_adjustment_clamp_page(
        adjustment: *mut GtkAdjustment,
        lower: c_double,
        upper: c_double,
    );
    pub fn gtk_adjustment_configure(
        adjustment: *mut GtkAdjustment,
        value: c_double,
        lower: c_double,
        upper: c_double,
        step_increment: c_double,
        page_increment: c_double,
        page_size: c_double,
    );
    pub fn gtk_adjustment_get_lower(adjustment: *mut GtkAdjustment) -> c_double;
    pub fn gtk_adjustment_get_minimum_increment(adjustment: *mut GtkAdjustment) -> c_double;
    pub fn gtk_adjustment_get_page_increment(adjustment: *mut GtkAdjustment) -> c_double;
    pub fn gtk_adjustment_get_page_size(adjustment: *mut GtkAdjustment) -> c_double;
    pub fn gtk_adjustment_get_step_increment(adjustment: *mut GtkAdjustment) -> c_double;
    pub fn gtk_adjustment_get_upper(adjustment: *mut GtkAdjustment) -> c_double;
    pub fn gtk_adjustment_get_value(adjustment: *mut GtkAdjustment) -> c_double;
    pub fn gtk_adjustment_set_lower(adjustment: *mut GtkAdjustment, lower: c_double);
    pub fn gtk_adjustment_set_page_increment(
        adjustment: *mut GtkAdjustment,
        page_increment: c_double,
    );
    pub fn gtk_adjustment_set_page_size(adjustment: *mut GtkAdjustment, page_size: c_double);
    pub fn gtk_adjustment_set_step_increment(
        adjustment: *mut GtkAdjustment,
        step_increment: c_double,
    );
    pub fn gtk_adjustment_set_upper(adjustment: *mut GtkAdjustment, upper: c_double);
    pub fn gtk_adjustment_set_value(adjustment: *mut GtkAdjustment, value: c_double);
    pub fn gtk_adjustment_value_changed(adjustment: *mut GtkAdjustment);

    //=========================================================================
    // GtkAlignment
    //=========================================================================
    pub fn gtk_alignment_get_type() -> GType;
    pub fn gtk_alignment_new(
        xalign: c_float,
        yalign: c_float,
        xscale: c_float,
        yscale: c_float,
    ) -> *mut GtkWidget;
    pub fn gtk_alignment_get_padding(
        alignment: *mut GtkAlignment,
        padding_top: *mut c_uint,
        padding_bottom: *mut c_uint,
        padding_left: *mut c_uint,
        padding_right: *mut c_uint,
    );
    pub fn gtk_alignment_set(
        alignment: *mut GtkAlignment,
        xalign: c_float,
        yalign: c_float,
        xscale: c_float,
        yscale: c_float,
    );
    pub fn gtk_alignment_set_padding(
        alignment: *mut GtkAlignment,
        padding_top: c_uint,
        padding_bottom: c_uint,
        padding_left: c_uint,
        padding_right: c_uint,
    );

    //=========================================================================
    // GtkAppChooserButton
    //=========================================================================
    pub fn gtk_app_chooser_button_get_type() -> GType;
    pub fn gtk_app_chooser_button_new(content_type: *const c_char) -> *mut GtkWidget;
    pub fn gtk_app_chooser_button_append_custom_item(
        self_: *mut GtkAppChooserButton,
        name: *const c_char,
        label: *const c_char,
        icon: *mut gio::GIcon,
    );
    pub fn gtk_app_chooser_button_append_separator(self_: *mut GtkAppChooserButton);
    pub fn gtk_app_chooser_button_get_heading(self_: *mut GtkAppChooserButton) -> *const c_char;
    pub fn gtk_app_chooser_button_get_show_default_item(
        self_: *mut GtkAppChooserButton,
    ) -> gboolean;
    pub fn gtk_app_chooser_button_get_show_dialog_item(self_: *mut GtkAppChooserButton)
        -> gboolean;
    pub fn gtk_app_chooser_button_set_active_custom_item(
        self_: *mut GtkAppChooserButton,
        name: *const c_char,
    );
    pub fn gtk_app_chooser_button_set_heading(
        self_: *mut GtkAppChooserButton,
        heading: *const c_char,
    );
    pub fn gtk_app_chooser_button_set_show_default_item(
        self_: *mut GtkAppChooserButton,
        setting: gboolean,
    );
    pub fn gtk_app_chooser_button_set_show_dialog_item(
        self_: *mut GtkAppChooserButton,
        setting: gboolean,
    );

    //=========================================================================
    // GtkAppChooserDialog
    //=========================================================================
    pub fn gtk_app_chooser_dialog_get_type() -> GType;
    pub fn gtk_app_chooser_dialog_new(
        parent: *mut GtkWindow,
        flags: GtkDialogFlags,
        file: *mut gio::GFile,
    ) -> *mut GtkWidget;
    pub fn gtk_app_chooser_dialog_new_for_content_type(
        parent: *mut GtkWindow,
        flags: GtkDialogFlags,
        content_type: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_app_chooser_dialog_get_heading(self_: *mut GtkAppChooserDialog) -> *const c_char;
    pub fn gtk_app_chooser_dialog_get_widget(self_: *mut GtkAppChooserDialog) -> *mut GtkWidget;
    pub fn gtk_app_chooser_dialog_set_heading(
        self_: *mut GtkAppChooserDialog,
        heading: *const c_char,
    );

    //=========================================================================
    // GtkAppChooserWidget
    //=========================================================================
    pub fn gtk_app_chooser_widget_get_type() -> GType;
    pub fn gtk_app_chooser_widget_new(content_type: *const c_char) -> *mut GtkWidget;
    pub fn gtk_app_chooser_widget_get_default_text(
        self_: *mut GtkAppChooserWidget,
    ) -> *const c_char;
    pub fn gtk_app_chooser_widget_get_show_all(self_: *mut GtkAppChooserWidget) -> gboolean;
    pub fn gtk_app_chooser_widget_get_show_default(self_: *mut GtkAppChooserWidget) -> gboolean;
    pub fn gtk_app_chooser_widget_get_show_fallback(self_: *mut GtkAppChooserWidget) -> gboolean;
    pub fn gtk_app_chooser_widget_get_show_other(self_: *mut GtkAppChooserWidget) -> gboolean;
    pub fn gtk_app_chooser_widget_get_show_recommended(self_: *mut GtkAppChooserWidget)
        -> gboolean;
    pub fn gtk_app_chooser_widget_set_default_text(
        self_: *mut GtkAppChooserWidget,
        text: *const c_char,
    );
    pub fn gtk_app_chooser_widget_set_show_all(self_: *mut GtkAppChooserWidget, setting: gboolean);
    pub fn gtk_app_chooser_widget_set_show_default(
        self_: *mut GtkAppChooserWidget,
        setting: gboolean,
    );
    pub fn gtk_app_chooser_widget_set_show_fallback(
        self_: *mut GtkAppChooserWidget,
        setting: gboolean,
    );
    pub fn gtk_app_chooser_widget_set_show_other(
        self_: *mut GtkAppChooserWidget,
        setting: gboolean,
    );
    pub fn gtk_app_chooser_widget_set_show_recommended(
        self_: *mut GtkAppChooserWidget,
        setting: gboolean,
    );

    //=========================================================================
    // GtkApplication
    //=========================================================================
    pub fn gtk_application_get_type() -> GType;
    pub fn gtk_application_new(
        application_id: *const c_char,
        flags: gio::GApplicationFlags,
    ) -> *mut GtkApplication;
    pub fn gtk_application_add_accelerator(
        application: *mut GtkApplication,
        accelerator: *const c_char,
        action_name: *const c_char,
        parameter: *mut glib::GVariant,
    );
    pub fn gtk_application_add_window(application: *mut GtkApplication, window: *mut GtkWindow);
    pub fn gtk_application_get_accels_for_action(
        application: *mut GtkApplication,
        detailed_action_name: *const c_char,
    ) -> *mut *mut c_char;
    pub fn gtk_application_get_actions_for_accel(
        application: *mut GtkApplication,
        accel: *const c_char,
    ) -> *mut *mut c_char;
    pub fn gtk_application_get_active_window(application: *mut GtkApplication) -> *mut GtkWindow;
    pub fn gtk_application_get_app_menu(application: *mut GtkApplication) -> *mut gio::GMenuModel;
    pub fn gtk_application_get_menu_by_id(
        application: *mut GtkApplication,
        id: *const c_char,
    ) -> *mut gio::GMenu;
    pub fn gtk_application_get_menubar(application: *mut GtkApplication) -> *mut gio::GMenuModel;
    pub fn gtk_application_get_window_by_id(
        application: *mut GtkApplication,
        id: c_uint,
    ) -> *mut GtkWindow;
    pub fn gtk_application_get_windows(application: *mut GtkApplication) -> *mut glib::GList;
    pub fn gtk_application_inhibit(
        application: *mut GtkApplication,
        window: *mut GtkWindow,
        flags: GtkApplicationInhibitFlags,
        reason: *const c_char,
    ) -> c_uint;
    pub fn gtk_application_is_inhibited(
        application: *mut GtkApplication,
        flags: GtkApplicationInhibitFlags,
    ) -> gboolean;
    pub fn gtk_application_list_action_descriptions(
        application: *mut GtkApplication,
    ) -> *mut *mut c_char;
    pub fn gtk_application_prefers_app_menu(application: *mut GtkApplication) -> gboolean;
    pub fn gtk_application_remove_accelerator(
        application: *mut GtkApplication,
        action_name: *const c_char,
        parameter: *mut glib::GVariant,
    );
    pub fn gtk_application_remove_window(application: *mut GtkApplication, window: *mut GtkWindow);
    pub fn gtk_application_set_accels_for_action(
        application: *mut GtkApplication,
        detailed_action_name: *const c_char,
        accels: *const *const c_char,
    );
    pub fn gtk_application_set_app_menu(
        application: *mut GtkApplication,
        app_menu: *mut gio::GMenuModel,
    );
    pub fn gtk_application_set_menubar(
        application: *mut GtkApplication,
        menubar: *mut gio::GMenuModel,
    );
    pub fn gtk_application_uninhibit(application: *mut GtkApplication, cookie: c_uint);

    //=========================================================================
    // GtkApplicationWindow
    //=========================================================================
    pub fn gtk_application_window_get_type() -> GType;
    pub fn gtk_application_window_new(application: *mut GtkApplication) -> *mut GtkWidget;
    pub fn gtk_application_window_get_help_overlay(
        window: *mut GtkApplicationWindow,
    ) -> *mut GtkShortcutsWindow;
    pub fn gtk_application_window_get_id(window: *mut GtkApplicationWindow) -> c_uint;
    pub fn gtk_application_window_get_show_menubar(window: *mut GtkApplicationWindow) -> gboolean;
    pub fn gtk_application_window_set_help_overlay(
        window: *mut GtkApplicationWindow,
        help_overlay: *mut GtkShortcutsWindow,
    );
    pub fn gtk_application_window_set_show_menubar(
        window: *mut GtkApplicationWindow,
        show_menubar: gboolean,
    );

    //=========================================================================
    // GtkArrow
    //=========================================================================
    pub fn gtk_arrow_get_type() -> GType;
    pub fn gtk_arrow_new(arrow_type: GtkArrowType, shadow_type: GtkShadowType) -> *mut GtkWidget;
    pub fn gtk_arrow_set(
        arrow: *mut GtkArrow,
        arrow_type: GtkArrowType,
        shadow_type: GtkShadowType,
    );

    //=========================================================================
    // GtkArrowAccessible
    //=========================================================================
    pub fn gtk_arrow_accessible_get_type() -> GType;

    //=========================================================================
    // GtkAspectFrame
    //=========================================================================
    pub fn gtk_aspect_frame_get_type() -> GType;
    pub fn gtk_aspect_frame_new(
        label: *const c_char,
        xalign: c_float,
        yalign: c_float,
        ratio: c_float,
        obey_child: gboolean,
    ) -> *mut GtkWidget;
    pub fn gtk_aspect_frame_set(
        aspect_frame: *mut GtkAspectFrame,
        xalign: c_float,
        yalign: c_float,
        ratio: c_float,
        obey_child: gboolean,
    );

    //=========================================================================
    // GtkAssistant
    //=========================================================================
    pub fn gtk_assistant_get_type() -> GType;
    pub fn gtk_assistant_new() -> *mut GtkWidget;
    pub fn gtk_assistant_add_action_widget(assistant: *mut GtkAssistant, child: *mut GtkWidget);
    pub fn gtk_assistant_append_page(assistant: *mut GtkAssistant, page: *mut GtkWidget) -> c_int;
    pub fn gtk_assistant_commit(assistant: *mut GtkAssistant);
    pub fn gtk_assistant_get_current_page(assistant: *mut GtkAssistant) -> c_int;
    pub fn gtk_assistant_get_n_pages(assistant: *mut GtkAssistant) -> c_int;
    pub fn gtk_assistant_get_nth_page(
        assistant: *mut GtkAssistant,
        page_num: c_int,
    ) -> *mut GtkWidget;
    pub fn gtk_assistant_get_page_complete(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_assistant_get_page_has_padding(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_assistant_get_page_header_image(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_assistant_get_page_side_image(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_assistant_get_page_title(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
    ) -> *const c_char;
    pub fn gtk_assistant_get_page_type(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
    ) -> GtkAssistantPageType;
    pub fn gtk_assistant_insert_page(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
        position: c_int,
    ) -> c_int;
    pub fn gtk_assistant_next_page(assistant: *mut GtkAssistant);
    pub fn gtk_assistant_prepend_page(assistant: *mut GtkAssistant, page: *mut GtkWidget) -> c_int;
    pub fn gtk_assistant_previous_page(assistant: *mut GtkAssistant);
    pub fn gtk_assistant_remove_action_widget(assistant: *mut GtkAssistant, child: *mut GtkWidget);
    pub fn gtk_assistant_remove_page(assistant: *mut GtkAssistant, page_num: c_int);
    pub fn gtk_assistant_set_current_page(assistant: *mut GtkAssistant, page_num: c_int);
    pub fn gtk_assistant_set_forward_page_func(
        assistant: *mut GtkAssistant,
        page_func: GtkAssistantPageFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_assistant_set_page_complete(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
        complete: gboolean,
    );
    pub fn gtk_assistant_set_page_has_padding(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
        has_padding: gboolean,
    );
    pub fn gtk_assistant_set_page_header_image(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    );
    pub fn gtk_assistant_set_page_side_image(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    );
    pub fn gtk_assistant_set_page_title(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
        title: *const c_char,
    );
    pub fn gtk_assistant_set_page_type(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
        type_: GtkAssistantPageType,
    );
    pub fn gtk_assistant_update_buttons_state(assistant: *mut GtkAssistant);

    //=========================================================================
    // GtkBin
    //=========================================================================
    pub fn gtk_bin_get_type() -> GType;
    pub fn gtk_bin_get_child(bin: *mut GtkBin) -> *mut GtkWidget;

    //=========================================================================
    // GtkBooleanCellAccessible
    //=========================================================================
    pub fn gtk_boolean_cell_accessible_get_type() -> GType;

    //=========================================================================
    // GtkBox
    //=========================================================================
    pub fn gtk_box_get_type() -> GType;
    pub fn gtk_box_new(orientation: GtkOrientation, spacing: c_int) -> *mut GtkWidget;
    pub fn gtk_box_get_baseline_position(box_: *mut GtkBox) -> GtkBaselinePosition;
    pub fn gtk_box_get_center_widget(box_: *mut GtkBox) -> *mut GtkWidget;
    pub fn gtk_box_get_homogeneous(box_: *mut GtkBox) -> gboolean;
    pub fn gtk_box_get_spacing(box_: *mut GtkBox) -> c_int;
    pub fn gtk_box_pack_end(
        box_: *mut GtkBox,
        child: *mut GtkWidget,
        expand: gboolean,
        fill: gboolean,
        padding: c_uint,
    );
    pub fn gtk_box_pack_start(
        box_: *mut GtkBox,
        child: *mut GtkWidget,
        expand: gboolean,
        fill: gboolean,
        padding: c_uint,
    );
    pub fn gtk_box_query_child_packing(
        box_: *mut GtkBox,
        child: *mut GtkWidget,
        expand: *mut gboolean,
        fill: *mut gboolean,
        padding: *mut c_uint,
        pack_type: *mut GtkPackType,
    );
    pub fn gtk_box_reorder_child(box_: *mut GtkBox, child: *mut GtkWidget, position: c_int);
    pub fn gtk_box_set_baseline_position(box_: *mut GtkBox, position: GtkBaselinePosition);
    pub fn gtk_box_set_center_widget(box_: *mut GtkBox, widget: *mut GtkWidget);
    pub fn gtk_box_set_child_packing(
        box_: *mut GtkBox,
        child: *mut GtkWidget,
        expand: gboolean,
        fill: gboolean,
        padding: c_uint,
        pack_type: GtkPackType,
    );
    pub fn gtk_box_set_homogeneous(box_: *mut GtkBox, homogeneous: gboolean);
    pub fn gtk_box_set_spacing(box_: *mut GtkBox, spacing: c_int);

    //=========================================================================
    // GtkBuilder
    //=========================================================================
    pub fn gtk_builder_get_type() -> GType;
    pub fn gtk_builder_new() -> *mut GtkBuilder;
    pub fn gtk_builder_new_from_file(filename: *const c_char) -> *mut GtkBuilder;
    pub fn gtk_builder_new_from_resource(resource_path: *const c_char) -> *mut GtkBuilder;
    pub fn gtk_builder_new_from_string(string: *const c_char, length: ssize_t) -> *mut GtkBuilder;
    pub fn gtk_builder_add_callback_symbol(
        builder: *mut GtkBuilder,
        callback_name: *const c_char,
        callback_symbol: gobject::GCallback,
    );
    pub fn gtk_builder_add_callback_symbols(
        builder: *mut GtkBuilder,
        first_callback_name: *const c_char,
        first_callback_symbol: gobject::GCallback,
        ...
    );
    pub fn gtk_builder_add_from_file(
        builder: *mut GtkBuilder,
        filename: *const c_char,
        error: *mut *mut glib::GError,
    ) -> c_uint;
    pub fn gtk_builder_add_from_resource(
        builder: *mut GtkBuilder,
        resource_path: *const c_char,
        error: *mut *mut glib::GError,
    ) -> c_uint;
    pub fn gtk_builder_add_from_string(
        builder: *mut GtkBuilder,
        buffer: *const c_char,
        length: size_t,
        error: *mut *mut glib::GError,
    ) -> c_uint;
    pub fn gtk_builder_add_objects_from_file(
        builder: *mut GtkBuilder,
        filename: *const c_char,
        object_ids: *mut *mut c_char,
        error: *mut *mut glib::GError,
    ) -> c_uint;
    pub fn gtk_builder_add_objects_from_resource(
        builder: *mut GtkBuilder,
        resource_path: *const c_char,
        object_ids: *mut *mut c_char,
        error: *mut *mut glib::GError,
    ) -> c_uint;
    pub fn gtk_builder_add_objects_from_string(
        builder: *mut GtkBuilder,
        buffer: *const c_char,
        length: size_t,
        object_ids: *mut *mut c_char,
        error: *mut *mut glib::GError,
    ) -> c_uint;
    pub fn gtk_builder_connect_signals(builder: *mut GtkBuilder, user_data: gpointer);
    pub fn gtk_builder_connect_signals_full(
        builder: *mut GtkBuilder,
        func: GtkBuilderConnectFunc,
        user_data: gpointer,
    );
    pub fn gtk_builder_expose_object(
        builder: *mut GtkBuilder,
        name: *const c_char,
        object: *mut gobject::GObject,
    );
    pub fn gtk_builder_extend_with_template(
        builder: *mut GtkBuilder,
        widget: *mut GtkWidget,
        template_type: GType,
        buffer: *const c_char,
        length: size_t,
        error: *mut *mut glib::GError,
    ) -> c_uint;
    pub fn gtk_builder_get_application(builder: *mut GtkBuilder) -> *mut GtkApplication;
    pub fn gtk_builder_get_object(
        builder: *mut GtkBuilder,
        name: *const c_char,
    ) -> *mut gobject::GObject;
    pub fn gtk_builder_get_objects(builder: *mut GtkBuilder) -> *mut glib::GSList;
    pub fn gtk_builder_get_translation_domain(builder: *mut GtkBuilder) -> *const c_char;
    pub fn gtk_builder_get_type_from_name(
        builder: *mut GtkBuilder,
        type_name: *const c_char,
    ) -> GType;
    pub fn gtk_builder_lookup_callback_symbol(
        builder: *mut GtkBuilder,
        callback_name: *const c_char,
    ) -> gobject::GCallback;
    pub fn gtk_builder_set_application(builder: *mut GtkBuilder, application: *mut GtkApplication);
    pub fn gtk_builder_set_translation_domain(builder: *mut GtkBuilder, domain: *const c_char);
    pub fn gtk_builder_value_from_string(
        builder: *mut GtkBuilder,
        pspec: *mut gobject::GParamSpec,
        string: *const c_char,
        value: *mut gobject::GValue,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_builder_value_from_string_type(
        builder: *mut GtkBuilder,
        type_: GType,
        string: *const c_char,
        value: *mut gobject::GValue,
        error: *mut *mut glib::GError,
    ) -> gboolean;

    //=========================================================================
    // GtkButton
    //=========================================================================
    pub fn gtk_button_get_type() -> GType;
    pub fn gtk_button_new() -> *mut GtkWidget;
    pub fn gtk_button_new_from_icon_name(
        icon_name: *const c_char,
        size: GtkIconSize,
    ) -> *mut GtkWidget;
    pub fn gtk_button_new_from_stock(stock_id: *const c_char) -> *mut GtkWidget;
    pub fn gtk_button_new_with_label(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_button_new_with_mnemonic(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_button_clicked(button: *mut GtkButton);
    pub fn gtk_button_enter(button: *mut GtkButton);
    pub fn gtk_button_get_alignment(
        button: *mut GtkButton,
        xalign: *mut c_float,
        yalign: *mut c_float,
    );
    pub fn gtk_button_get_always_show_image(button: *mut GtkButton) -> gboolean;
    pub fn gtk_button_get_event_window(button: *mut GtkButton) -> *mut gdk::GdkWindow;
    pub fn gtk_button_get_focus_on_click(button: *mut GtkButton) -> gboolean;
    pub fn gtk_button_get_image(button: *mut GtkButton) -> *mut GtkWidget;
    pub fn gtk_button_get_image_position(button: *mut GtkButton) -> GtkPositionType;
    pub fn gtk_button_get_label(button: *mut GtkButton) -> *const c_char;
    pub fn gtk_button_get_relief(button: *mut GtkButton) -> GtkReliefStyle;
    pub fn gtk_button_get_use_stock(button: *mut GtkButton) -> gboolean;
    pub fn gtk_button_get_use_underline(button: *mut GtkButton) -> gboolean;
    pub fn gtk_button_leave(button: *mut GtkButton);
    pub fn gtk_button_pressed(button: *mut GtkButton);
    pub fn gtk_button_released(button: *mut GtkButton);
    pub fn gtk_button_set_alignment(button: *mut GtkButton, xalign: c_float, yalign: c_float);
    pub fn gtk_button_set_always_show_image(button: *mut GtkButton, always_show: gboolean);
    pub fn gtk_button_set_focus_on_click(button: *mut GtkButton, focus_on_click: gboolean);
    pub fn gtk_button_set_image(button: *mut GtkButton, image: *mut GtkWidget);
    pub fn gtk_button_set_image_position(button: *mut GtkButton, position: GtkPositionType);
    pub fn gtk_button_set_label(button: *mut GtkButton, label: *const c_char);
    pub fn gtk_button_set_relief(button: *mut GtkButton, relief: GtkReliefStyle);
    pub fn gtk_button_set_use_stock(button: *mut GtkButton, use_stock: gboolean);
    pub fn gtk_button_set_use_underline(button: *mut GtkButton, use_underline: gboolean);

    //=========================================================================
    // GtkButtonAccessible
    //=========================================================================
    pub fn gtk_button_accessible_get_type() -> GType;

    //=========================================================================
    // GtkButtonBox
    //=========================================================================
    pub fn gtk_button_box_get_type() -> GType;
    pub fn gtk_button_box_new(orientation: GtkOrientation) -> *mut GtkWidget;
    pub fn gtk_button_box_get_child_non_homogeneous(
        widget: *mut GtkButtonBox,
        child: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_button_box_get_child_secondary(
        widget: *mut GtkButtonBox,
        child: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_button_box_get_layout(widget: *mut GtkButtonBox) -> GtkButtonBoxStyle;
    pub fn gtk_button_box_set_child_non_homogeneous(
        widget: *mut GtkButtonBox,
        child: *mut GtkWidget,
        non_homogeneous: gboolean,
    );
    pub fn gtk_button_box_set_child_secondary(
        widget: *mut GtkButtonBox,
        child: *mut GtkWidget,
        is_secondary: gboolean,
    );
    pub fn gtk_button_box_set_layout(widget: *mut GtkButtonBox, layout_style: GtkButtonBoxStyle);

    //=========================================================================
    // GtkCalendar
    //=========================================================================
    pub fn gtk_calendar_get_type() -> GType;
    pub fn gtk_calendar_new() -> *mut GtkWidget;
    pub fn gtk_calendar_clear_marks(calendar: *mut GtkCalendar);
    pub fn gtk_calendar_get_date(
        calendar: *mut GtkCalendar,
        year: *mut c_uint,
        month: *mut c_uint,
        day: *mut c_uint,
    );
    pub fn gtk_calendar_get_day_is_marked(calendar: *mut GtkCalendar, day: c_uint) -> gboolean;
    pub fn gtk_calendar_get_detail_height_rows(calendar: *mut GtkCalendar) -> c_int;
    pub fn gtk_calendar_get_detail_width_chars(calendar: *mut GtkCalendar) -> c_int;
    pub fn gtk_calendar_get_display_options(
        calendar: *mut GtkCalendar,
    ) -> GtkCalendarDisplayOptions;
    pub fn gtk_calendar_mark_day(calendar: *mut GtkCalendar, day: c_uint);
    pub fn gtk_calendar_select_day(calendar: *mut GtkCalendar, day: c_uint);
    pub fn gtk_calendar_select_month(calendar: *mut GtkCalendar, month: c_uint, year: c_uint);
    pub fn gtk_calendar_set_detail_func(
        calendar: *mut GtkCalendar,
        func: GtkCalendarDetailFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_calendar_set_detail_height_rows(calendar: *mut GtkCalendar, rows: c_int);
    pub fn gtk_calendar_set_detail_width_chars(calendar: *mut GtkCalendar, chars: c_int);
    pub fn gtk_calendar_set_display_options(
        calendar: *mut GtkCalendar,
        flags: GtkCalendarDisplayOptions,
    );
    pub fn gtk_calendar_unmark_day(calendar: *mut GtkCalendar, day: c_uint);

    //=========================================================================
    // GtkCellAccessible
    //=========================================================================
    pub fn gtk_cell_accessible_get_type() -> GType;

    //=========================================================================
    // GtkCellArea
    //=========================================================================
    pub fn gtk_cell_area_get_type() -> GType;
    pub fn gtk_cell_area_activate(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
        widget: *mut GtkWidget,
        cell_area: *const gdk::GdkRectangle,
        flags: GtkCellRendererState,
        edit_only: gboolean,
    ) -> gboolean;
    pub fn gtk_cell_area_activate_cell(
        area: *mut GtkCellArea,
        widget: *mut GtkWidget,
        renderer: *mut GtkCellRenderer,
        event: *mut gdk::GdkEvent,
        cell_area: *const gdk::GdkRectangle,
        flags: GtkCellRendererState,
    ) -> gboolean;
    pub fn gtk_cell_area_add(area: *mut GtkCellArea, renderer: *mut GtkCellRenderer);
    pub fn gtk_cell_area_add_focus_sibling(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        sibling: *mut GtkCellRenderer,
    );
    pub fn gtk_cell_area_add_with_properties(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        first_prop_name: *const c_char,
        ...
    );
    pub fn gtk_cell_area_apply_attributes(
        area: *mut GtkCellArea,
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
        is_expander: gboolean,
        is_expanded: gboolean,
    );
    pub fn gtk_cell_area_attribute_connect(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        attribute: *const c_char,
        column: c_int,
    );
    pub fn gtk_cell_area_attribute_disconnect(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        attribute: *const c_char,
    );
    pub fn gtk_cell_area_attribute_get_column(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        attribute: *const c_char,
    ) -> c_int;
    pub fn gtk_cell_area_cell_get(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        first_prop_name: *const c_char,
        ...
    );
    pub fn gtk_cell_area_cell_get_property(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        property_name: *const c_char,
        value: *mut gobject::GValue,
    );
    //pub fn gtk_cell_area_cell_get_valist(area: *mut GtkCellArea, renderer: *mut GtkCellRenderer, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
    pub fn gtk_cell_area_cell_set(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        first_prop_name: *const c_char,
        ...
    );
    pub fn gtk_cell_area_cell_set_property(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        property_name: *const c_char,
        value: *const gobject::GValue,
    );
    //pub fn gtk_cell_area_cell_set_valist(area: *mut GtkCellArea, renderer: *mut GtkCellRenderer, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
    pub fn gtk_cell_area_copy_context(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
    ) -> *mut GtkCellAreaContext;
    pub fn gtk_cell_area_create_context(area: *mut GtkCellArea) -> *mut GtkCellAreaContext;
    pub fn gtk_cell_area_event(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
        widget: *mut GtkWidget,
        event: *mut gdk::GdkEvent,
        cell_area: *const gdk::GdkRectangle,
        flags: GtkCellRendererState,
    ) -> c_int;
    pub fn gtk_cell_area_focus(area: *mut GtkCellArea, direction: GtkDirectionType) -> gboolean;
    pub fn gtk_cell_area_foreach(
        area: *mut GtkCellArea,
        callback: GtkCellCallback,
        callback_data: gpointer,
    );
    pub fn gtk_cell_area_foreach_alloc(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
        widget: *mut GtkWidget,
        cell_area: *const gdk::GdkRectangle,
        background_area: *const gdk::GdkRectangle,
        callback: GtkCellAllocCallback,
        callback_data: gpointer,
    );
    pub fn gtk_cell_area_get_cell_allocation(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
        widget: *mut GtkWidget,
        renderer: *mut GtkCellRenderer,
        cell_area: *const gdk::GdkRectangle,
        allocation: *mut gdk::GdkRectangle,
    );
    pub fn gtk_cell_area_get_cell_at_position(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
        widget: *mut GtkWidget,
        cell_area: *const gdk::GdkRectangle,
        x: c_int,
        y: c_int,
        alloc_area: *mut gdk::GdkRectangle,
    ) -> *mut GtkCellRenderer;
    pub fn gtk_cell_area_get_current_path_string(area: *mut GtkCellArea) -> *const c_char;
    pub fn gtk_cell_area_get_edit_widget(area: *mut GtkCellArea) -> *mut GtkCellEditable;
    pub fn gtk_cell_area_get_edited_cell(area: *mut GtkCellArea) -> *mut GtkCellRenderer;
    pub fn gtk_cell_area_get_focus_cell(area: *mut GtkCellArea) -> *mut GtkCellRenderer;
    pub fn gtk_cell_area_get_focus_from_sibling(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
    ) -> *mut GtkCellRenderer;
    pub fn gtk_cell_area_get_focus_siblings(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
    ) -> *const glib::GList;
    pub fn gtk_cell_area_get_preferred_height(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
        widget: *mut GtkWidget,
        minimum_height: *mut c_int,
        natural_height: *mut c_int,
    );
    pub fn gtk_cell_area_get_preferred_height_for_width(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
        widget: *mut GtkWidget,
        width: c_int,
        minimum_height: *mut c_int,
        natural_height: *mut c_int,
    );
    pub fn gtk_cell_area_get_preferred_width(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
        widget: *mut GtkWidget,
        minimum_width: *mut c_int,
        natural_width: *mut c_int,
    );
    pub fn gtk_cell_area_get_preferred_width_for_height(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
        widget: *mut GtkWidget,
        height: c_int,
        minimum_width: *mut c_int,
        natural_width: *mut c_int,
    );
    pub fn gtk_cell_area_get_request_mode(area: *mut GtkCellArea) -> GtkSizeRequestMode;
    pub fn gtk_cell_area_has_renderer(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
    ) -> gboolean;
    pub fn gtk_cell_area_inner_cell_area(
        area: *mut GtkCellArea,
        widget: *mut GtkWidget,
        cell_area: *const gdk::GdkRectangle,
        inner_area: *mut gdk::GdkRectangle,
    );
    pub fn gtk_cell_area_is_activatable(area: *mut GtkCellArea) -> gboolean;
    pub fn gtk_cell_area_is_focus_sibling(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        sibling: *mut GtkCellRenderer,
    ) -> gboolean;
    pub fn gtk_cell_area_remove(area: *mut GtkCellArea, renderer: *mut GtkCellRenderer);
    pub fn gtk_cell_area_remove_focus_sibling(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        sibling: *mut GtkCellRenderer,
    );
    pub fn gtk_cell_area_render(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
        widget: *mut GtkWidget,
        cr: *mut cairo::cairo_t,
        background_area: *const gdk::GdkRectangle,
        cell_area: *const gdk::GdkRectangle,
        flags: GtkCellRendererState,
        paint_focus: gboolean,
    );
    pub fn gtk_cell_area_request_renderer(
        area: *mut GtkCellArea,
        renderer: *mut GtkCellRenderer,
        orientation: GtkOrientation,
        widget: *mut GtkWidget,
        for_size: c_int,
        minimum_size: *mut c_int,
        natural_size: *mut c_int,
    );
    pub fn gtk_cell_area_set_focus_cell(area: *mut GtkCellArea, renderer: *mut GtkCellRenderer);
    pub fn gtk_cell_area_stop_editing(area: *mut GtkCellArea, canceled: gboolean);

    //=========================================================================
    // GtkCellAreaBox
    //=========================================================================
    pub fn gtk_cell_area_box_get_type() -> GType;
    pub fn gtk_cell_area_box_new() -> *mut GtkCellArea;
    pub fn gtk_cell_area_box_get_spacing(box_: *mut GtkCellAreaBox) -> c_int;
    pub fn gtk_cell_area_box_pack_end(
        box_: *mut GtkCellAreaBox,
        renderer: *mut GtkCellRenderer,
        expand: gboolean,
        align: gboolean,
        fixed: gboolean,
    );
    pub fn gtk_cell_area_box_pack_start(
        box_: *mut GtkCellAreaBox,
        renderer: *mut GtkCellRenderer,
        expand: gboolean,
        align: gboolean,
        fixed: gboolean,
    );
    pub fn gtk_cell_area_box_set_spacing(box_: *mut GtkCellAreaBox, spacing: c_int);

    //=========================================================================
    // GtkCellAreaContext
    //=========================================================================
    pub fn gtk_cell_area_context_get_type() -> GType;
    pub fn gtk_cell_area_context_allocate(
        context: *mut GtkCellAreaContext,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_cell_area_context_get_allocation(
        context: *mut GtkCellAreaContext,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_cell_area_context_get_area(context: *mut GtkCellAreaContext) -> *mut GtkCellArea;
    pub fn gtk_cell_area_context_get_preferred_height(
        context: *mut GtkCellAreaContext,
        minimum_height: *mut c_int,
        natural_height: *mut c_int,
    );
    pub fn gtk_cell_area_context_get_preferred_height_for_width(
        context: *mut GtkCellAreaContext,
        width: c_int,
        minimum_height: *mut c_int,
        natural_height: *mut c_int,
    );
    pub fn gtk_cell_area_context_get_preferred_width(
        context: *mut GtkCellAreaContext,
        minimum_width: *mut c_int,
        natural_width: *mut c_int,
    );
    pub fn gtk_cell_area_context_get_preferred_width_for_height(
        context: *mut GtkCellAreaContext,
        height: c_int,
        minimum_width: *mut c_int,
        natural_width: *mut c_int,
    );
    pub fn gtk_cell_area_context_push_preferred_height(
        context: *mut GtkCellAreaContext,
        minimum_height: c_int,
        natural_height: c_int,
    );
    pub fn gtk_cell_area_context_push_preferred_width(
        context: *mut GtkCellAreaContext,
        minimum_width: c_int,
        natural_width: c_int,
    );
    pub fn gtk_cell_area_context_reset(context: *mut GtkCellAreaContext);

    //=========================================================================
    // GtkCellRenderer
    //=========================================================================
    pub fn gtk_cell_renderer_get_type() -> GType;
    pub fn gtk_cell_renderer_activate(
        cell: *mut GtkCellRenderer,
        event: *mut gdk::GdkEvent,
        widget: *mut GtkWidget,
        path: *const c_char,
        background_area: *const gdk::GdkRectangle,
        cell_area: *const gdk::GdkRectangle,
        flags: GtkCellRendererState,
    ) -> gboolean;
    pub fn gtk_cell_renderer_get_aligned_area(
        cell: *mut GtkCellRenderer,
        widget: *mut GtkWidget,
        flags: GtkCellRendererState,
        cell_area: *const gdk::GdkRectangle,
        aligned_area: *mut gdk::GdkRectangle,
    );
    pub fn gtk_cell_renderer_get_alignment(
        cell: *mut GtkCellRenderer,
        xalign: *mut c_float,
        yalign: *mut c_float,
    );
    pub fn gtk_cell_renderer_get_fixed_size(
        cell: *mut GtkCellRenderer,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_cell_renderer_get_padding(
        cell: *mut GtkCellRenderer,
        xpad: *mut c_int,
        ypad: *mut c_int,
    );
    pub fn gtk_cell_renderer_get_preferred_height(
        cell: *mut GtkCellRenderer,
        widget: *mut GtkWidget,
        minimum_size: *mut c_int,
        natural_size: *mut c_int,
    );
    pub fn gtk_cell_renderer_get_preferred_height_for_width(
        cell: *mut GtkCellRenderer,
        widget: *mut GtkWidget,
        width: c_int,
        minimum_height: *mut c_int,
        natural_height: *mut c_int,
    );
    pub fn gtk_cell_renderer_get_preferred_size(
        cell: *mut GtkCellRenderer,
        widget: *mut GtkWidget,
        minimum_size: *mut GtkRequisition,
        natural_size: *mut GtkRequisition,
    );
    pub fn gtk_cell_renderer_get_preferred_width(
        cell: *mut GtkCellRenderer,
        widget: *mut GtkWidget,
        minimum_size: *mut c_int,
        natural_size: *mut c_int,
    );
    pub fn gtk_cell_renderer_get_preferred_width_for_height(
        cell: *mut GtkCellRenderer,
        widget: *mut GtkWidget,
        height: c_int,
        minimum_width: *mut c_int,
        natural_width: *mut c_int,
    );
    pub fn gtk_cell_renderer_get_request_mode(cell: *mut GtkCellRenderer) -> GtkSizeRequestMode;
    pub fn gtk_cell_renderer_get_sensitive(cell: *mut GtkCellRenderer) -> gboolean;
    pub fn gtk_cell_renderer_get_size(
        cell: *mut GtkCellRenderer,
        widget: *mut GtkWidget,
        cell_area: *const gdk::GdkRectangle,
        x_offset: *mut c_int,
        y_offset: *mut c_int,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_cell_renderer_get_state(
        cell: *mut GtkCellRenderer,
        widget: *mut GtkWidget,
        cell_state: GtkCellRendererState,
    ) -> GtkStateFlags;
    pub fn gtk_cell_renderer_get_visible(cell: *mut GtkCellRenderer) -> gboolean;
    pub fn gtk_cell_renderer_is_activatable(cell: *mut GtkCellRenderer) -> gboolean;
    pub fn gtk_cell_renderer_render(
        cell: *mut GtkCellRenderer,
        cr: *mut cairo::cairo_t,
        widget: *mut GtkWidget,
        background_area: *const gdk::GdkRectangle,
        cell_area: *const gdk::GdkRectangle,
        flags: GtkCellRendererState,
    );
    pub fn gtk_cell_renderer_set_alignment(
        cell: *mut GtkCellRenderer,
        xalign: c_float,
        yalign: c_float,
    );
    pub fn gtk_cell_renderer_set_fixed_size(
        cell: *mut GtkCellRenderer,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_cell_renderer_set_padding(cell: *mut GtkCellRenderer, xpad: c_int, ypad: c_int);
    pub fn gtk_cell_renderer_set_sensitive(cell: *mut GtkCellRenderer, sensitive: gboolean);
    pub fn gtk_cell_renderer_set_visible(cell: *mut GtkCellRenderer, visible: gboolean);
    pub fn gtk_cell_renderer_start_editing(
        cell: *mut GtkCellRenderer,
        event: *mut gdk::GdkEvent,
        widget: *mut GtkWidget,
        path: *const c_char,
        background_area: *const gdk::GdkRectangle,
        cell_area: *const gdk::GdkRectangle,
        flags: GtkCellRendererState,
    ) -> *mut GtkCellEditable;
    pub fn gtk_cell_renderer_stop_editing(cell: *mut GtkCellRenderer, canceled: gboolean);

    //=========================================================================
    // GtkCellRendererAccel
    //=========================================================================
    pub fn gtk_cell_renderer_accel_get_type() -> GType;
    pub fn gtk_cell_renderer_accel_new() -> *mut GtkCellRenderer;

    //=========================================================================
    // GtkCellRendererCombo
    //=========================================================================
    pub fn gtk_cell_renderer_combo_get_type() -> GType;
    pub fn gtk_cell_renderer_combo_new() -> *mut GtkCellRenderer;

    //=========================================================================
    // GtkCellRendererPixbuf
    //=========================================================================
    pub fn gtk_cell_renderer_pixbuf_get_type() -> GType;
    pub fn gtk_cell_renderer_pixbuf_new() -> *mut GtkCellRenderer;

    //=========================================================================
    // GtkCellRendererProgress
    //=========================================================================
    pub fn gtk_cell_renderer_progress_get_type() -> GType;
    pub fn gtk_cell_renderer_progress_new() -> *mut GtkCellRenderer;

    //=========================================================================
    // GtkCellRendererSpin
    //=========================================================================
    pub fn gtk_cell_renderer_spin_get_type() -> GType;
    pub fn gtk_cell_renderer_spin_new() -> *mut GtkCellRenderer;

    //=========================================================================
    // GtkCellRendererSpinner
    //=========================================================================
    pub fn gtk_cell_renderer_spinner_get_type() -> GType;
    pub fn gtk_cell_renderer_spinner_new() -> *mut GtkCellRenderer;

    //=========================================================================
    // GtkCellRendererText
    //=========================================================================
    pub fn gtk_cell_renderer_text_get_type() -> GType;
    pub fn gtk_cell_renderer_text_new() -> *mut GtkCellRenderer;
    pub fn gtk_cell_renderer_text_set_fixed_height_from_font(
        renderer: *mut GtkCellRendererText,
        number_of_rows: c_int,
    );

    //=========================================================================
    // GtkCellRendererToggle
    //=========================================================================
    pub fn gtk_cell_renderer_toggle_get_type() -> GType;
    pub fn gtk_cell_renderer_toggle_new() -> *mut GtkCellRenderer;
    pub fn gtk_cell_renderer_toggle_get_activatable(toggle: *mut GtkCellRendererToggle)
        -> gboolean;
    pub fn gtk_cell_renderer_toggle_get_active(toggle: *mut GtkCellRendererToggle) -> gboolean;
    pub fn gtk_cell_renderer_toggle_get_radio(toggle: *mut GtkCellRendererToggle) -> gboolean;
    pub fn gtk_cell_renderer_toggle_set_activatable(
        toggle: *mut GtkCellRendererToggle,
        setting: gboolean,
    );
    pub fn gtk_cell_renderer_toggle_set_active(
        toggle: *mut GtkCellRendererToggle,
        setting: gboolean,
    );
    pub fn gtk_cell_renderer_toggle_set_radio(toggle: *mut GtkCellRendererToggle, radio: gboolean);

    //=========================================================================
    // GtkCellView
    //=========================================================================
    pub fn gtk_cell_view_get_type() -> GType;
    pub fn gtk_cell_view_new() -> *mut GtkWidget;
    pub fn gtk_cell_view_new_with_context(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
    ) -> *mut GtkWidget;
    pub fn gtk_cell_view_new_with_markup(markup: *const c_char) -> *mut GtkWidget;
    pub fn gtk_cell_view_new_with_pixbuf(pixbuf: *mut gdk_pixbuf::GdkPixbuf) -> *mut GtkWidget;
    pub fn gtk_cell_view_new_with_text(text: *const c_char) -> *mut GtkWidget;
    pub fn gtk_cell_view_get_displayed_row(cell_view: *mut GtkCellView) -> *mut GtkTreePath;
    pub fn gtk_cell_view_get_draw_sensitive(cell_view: *mut GtkCellView) -> gboolean;
    pub fn gtk_cell_view_get_fit_model(cell_view: *mut GtkCellView) -> gboolean;
    pub fn gtk_cell_view_get_model(cell_view: *mut GtkCellView) -> *mut GtkTreeModel;
    pub fn gtk_cell_view_get_size_of_row(
        cell_view: *mut GtkCellView,
        path: *mut GtkTreePath,
        requisition: *mut GtkRequisition,
    ) -> gboolean;
    pub fn gtk_cell_view_set_background_color(
        cell_view: *mut GtkCellView,
        color: *const gdk::GdkColor,
    );
    pub fn gtk_cell_view_set_background_rgba(
        cell_view: *mut GtkCellView,
        rgba: *const gdk::GdkRGBA,
    );
    pub fn gtk_cell_view_set_displayed_row(cell_view: *mut GtkCellView, path: *mut GtkTreePath);
    pub fn gtk_cell_view_set_draw_sensitive(cell_view: *mut GtkCellView, draw_sensitive: gboolean);
    pub fn gtk_cell_view_set_fit_model(cell_view: *mut GtkCellView, fit_model: gboolean);
    pub fn gtk_cell_view_set_model(cell_view: *mut GtkCellView, model: *mut GtkTreeModel);

    //=========================================================================
    // GtkCheckButton
    //=========================================================================
    pub fn gtk_check_button_get_type() -> GType;
    pub fn gtk_check_button_new() -> *mut GtkWidget;
    pub fn gtk_check_button_new_with_label(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_check_button_new_with_mnemonic(label: *const c_char) -> *mut GtkWidget;

    //=========================================================================
    // GtkCheckMenuItem
    //=========================================================================
    pub fn gtk_check_menu_item_get_type() -> GType;
    pub fn gtk_check_menu_item_new() -> *mut GtkWidget;
    pub fn gtk_check_menu_item_new_with_label(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_check_menu_item_new_with_mnemonic(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_check_menu_item_get_active(check_menu_item: *mut GtkCheckMenuItem) -> gboolean;
    pub fn gtk_check_menu_item_get_draw_as_radio(
        check_menu_item: *mut GtkCheckMenuItem,
    ) -> gboolean;
    pub fn gtk_check_menu_item_get_inconsistent(check_menu_item: *mut GtkCheckMenuItem)
        -> gboolean;
    pub fn gtk_check_menu_item_set_active(
        check_menu_item: *mut GtkCheckMenuItem,
        is_active: gboolean,
    );
    pub fn gtk_check_menu_item_set_draw_as_radio(
        check_menu_item: *mut GtkCheckMenuItem,
        draw_as_radio: gboolean,
    );
    pub fn gtk_check_menu_item_set_inconsistent(
        check_menu_item: *mut GtkCheckMenuItem,
        setting: gboolean,
    );
    pub fn gtk_check_menu_item_toggled(check_menu_item: *mut GtkCheckMenuItem);

    //=========================================================================
    // GtkCheckMenuItemAccessible
    //=========================================================================
    pub fn gtk_check_menu_item_accessible_get_type() -> GType;

    //=========================================================================
    // GtkClipboard
    //=========================================================================
    pub fn gtk_clipboard_get_type() -> GType;
    pub fn gtk_clipboard_get(selection: gdk::GdkAtom) -> *mut GtkClipboard;
    pub fn gtk_clipboard_get_default(display: *mut gdk::GdkDisplay) -> *mut GtkClipboard;
    pub fn gtk_clipboard_get_for_display(
        display: *mut gdk::GdkDisplay,
        selection: gdk::GdkAtom,
    ) -> *mut GtkClipboard;
    pub fn gtk_clipboard_clear(clipboard: *mut GtkClipboard);
    pub fn gtk_clipboard_get_display(clipboard: *mut GtkClipboard) -> *mut gdk::GdkDisplay;
    pub fn gtk_clipboard_get_owner(clipboard: *mut GtkClipboard) -> *mut gobject::GObject;
    pub fn gtk_clipboard_get_selection(clipboard: *mut GtkClipboard) -> gdk::GdkAtom;
    pub fn gtk_clipboard_request_contents(
        clipboard: *mut GtkClipboard,
        target: gdk::GdkAtom,
        callback: GtkClipboardReceivedFunc,
        user_data: gpointer,
    );
    pub fn gtk_clipboard_request_image(
        clipboard: *mut GtkClipboard,
        callback: GtkClipboardImageReceivedFunc,
        user_data: gpointer,
    );
    pub fn gtk_clipboard_request_rich_text(
        clipboard: *mut GtkClipboard,
        buffer: *mut GtkTextBuffer,
        callback: GtkClipboardRichTextReceivedFunc,
        user_data: gpointer,
    );
    pub fn gtk_clipboard_request_targets(
        clipboard: *mut GtkClipboard,
        callback: GtkClipboardTargetsReceivedFunc,
        user_data: gpointer,
    );
    pub fn gtk_clipboard_request_text(
        clipboard: *mut GtkClipboard,
        callback: GtkClipboardTextReceivedFunc,
        user_data: gpointer,
    );
    pub fn gtk_clipboard_request_uris(
        clipboard: *mut GtkClipboard,
        callback: GtkClipboardURIReceivedFunc,
        user_data: gpointer,
    );
    pub fn gtk_clipboard_set_can_store(
        clipboard: *mut GtkClipboard,
        targets: *const GtkTargetEntry,
        n_targets: c_int,
    );
    pub fn gtk_clipboard_set_image(
        clipboard: *mut GtkClipboard,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    );
    pub fn gtk_clipboard_set_text(clipboard: *mut GtkClipboard, text: *const c_char, len: c_int);
    pub fn gtk_clipboard_set_with_data(
        clipboard: *mut GtkClipboard,
        targets: *const GtkTargetEntry,
        n_targets: c_uint,
        get_func: GtkClipboardGetFunc,
        clear_func: GtkClipboardClearFunc,
        user_data: gpointer,
    ) -> gboolean;
    pub fn gtk_clipboard_set_with_owner(
        clipboard: *mut GtkClipboard,
        targets: *const GtkTargetEntry,
        n_targets: c_uint,
        get_func: GtkClipboardGetFunc,
        clear_func: GtkClipboardClearFunc,
        owner: *mut gobject::GObject,
    ) -> gboolean;
    pub fn gtk_clipboard_store(clipboard: *mut GtkClipboard);
    pub fn gtk_clipboard_wait_for_contents(
        clipboard: *mut GtkClipboard,
        target: gdk::GdkAtom,
    ) -> *mut GtkSelectionData;
    pub fn gtk_clipboard_wait_for_image(clipboard: *mut GtkClipboard)
        -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_clipboard_wait_for_rich_text(
        clipboard: *mut GtkClipboard,
        buffer: *mut GtkTextBuffer,
        format: *mut gdk::GdkAtom,
        length: *mut size_t,
    ) -> *mut u8;
    pub fn gtk_clipboard_wait_for_targets(
        clipboard: *mut GtkClipboard,
        targets: *mut *mut gdk::GdkAtom,
        n_targets: *mut c_int,
    ) -> gboolean;
    pub fn gtk_clipboard_wait_for_text(clipboard: *mut GtkClipboard) -> *mut c_char;
    pub fn gtk_clipboard_wait_for_uris(clipboard: *mut GtkClipboard) -> *mut *mut c_char;
    pub fn gtk_clipboard_wait_is_image_available(clipboard: *mut GtkClipboard) -> gboolean;
    pub fn gtk_clipboard_wait_is_rich_text_available(
        clipboard: *mut GtkClipboard,
        buffer: *mut GtkTextBuffer,
    ) -> gboolean;
    pub fn gtk_clipboard_wait_is_target_available(
        clipboard: *mut GtkClipboard,
        target: gdk::GdkAtom,
    ) -> gboolean;
    pub fn gtk_clipboard_wait_is_text_available(clipboard: *mut GtkClipboard) -> gboolean;
    pub fn gtk_clipboard_wait_is_uris_available(clipboard: *mut GtkClipboard) -> gboolean;

    //=========================================================================
    // GtkColorButton
    //=========================================================================
    pub fn gtk_color_button_get_type() -> GType;
    pub fn gtk_color_button_new() -> *mut GtkWidget;
    pub fn gtk_color_button_new_with_color(color: *const gdk::GdkColor) -> *mut GtkWidget;
    pub fn gtk_color_button_new_with_rgba(rgba: *const gdk::GdkRGBA) -> *mut GtkWidget;
    pub fn gtk_color_button_get_alpha(button: *mut GtkColorButton) -> u16;
    pub fn gtk_color_button_get_color(button: *mut GtkColorButton, color: *mut gdk::GdkColor);
    pub fn gtk_color_button_get_rgba(button: *mut GtkColorButton, rgba: *mut gdk::GdkRGBA);
    pub fn gtk_color_button_get_title(button: *mut GtkColorButton) -> *const c_char;
    pub fn gtk_color_button_get_use_alpha(button: *mut GtkColorButton) -> gboolean;
    pub fn gtk_color_button_set_alpha(button: *mut GtkColorButton, alpha: u16);
    pub fn gtk_color_button_set_color(button: *mut GtkColorButton, color: *const gdk::GdkColor);
    pub fn gtk_color_button_set_rgba(button: *mut GtkColorButton, rgba: *const gdk::GdkRGBA);
    pub fn gtk_color_button_set_title(button: *mut GtkColorButton, title: *const c_char);
    pub fn gtk_color_button_set_use_alpha(button: *mut GtkColorButton, use_alpha: gboolean);

    //=========================================================================
    // GtkColorChooserDialog
    //=========================================================================
    pub fn gtk_color_chooser_dialog_get_type() -> GType;
    pub fn gtk_color_chooser_dialog_new(
        title: *const c_char,
        parent: *mut GtkWindow,
    ) -> *mut GtkWidget;

    //=========================================================================
    // GtkColorChooserWidget
    //=========================================================================
    pub fn gtk_color_chooser_widget_get_type() -> GType;
    pub fn gtk_color_chooser_widget_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkColorSelection
    //=========================================================================
    pub fn gtk_color_selection_get_type() -> GType;
    pub fn gtk_color_selection_new() -> *mut GtkWidget;
    pub fn gtk_color_selection_palette_from_string(
        str: *const c_char,
        colors: *mut *mut gdk::GdkColor,
        n_colors: *mut c_int,
    ) -> gboolean;
    pub fn gtk_color_selection_palette_to_string(
        colors: *const gdk::GdkColor,
        n_colors: c_int,
    ) -> *mut c_char;
    pub fn gtk_color_selection_set_change_palette_with_screen_hook(
        func: GtkColorSelectionChangePaletteWithScreenFunc,
    ) -> GtkColorSelectionChangePaletteWithScreenFunc;
    pub fn gtk_color_selection_get_current_alpha(colorsel: *mut GtkColorSelection) -> u16;
    pub fn gtk_color_selection_get_current_color(
        colorsel: *mut GtkColorSelection,
        color: *mut gdk::GdkColor,
    );
    pub fn gtk_color_selection_get_current_rgba(
        colorsel: *mut GtkColorSelection,
        rgba: *mut gdk::GdkRGBA,
    );
    pub fn gtk_color_selection_get_has_opacity_control(
        colorsel: *mut GtkColorSelection,
    ) -> gboolean;
    pub fn gtk_color_selection_get_has_palette(colorsel: *mut GtkColorSelection) -> gboolean;
    pub fn gtk_color_selection_get_previous_alpha(colorsel: *mut GtkColorSelection) -> u16;
    pub fn gtk_color_selection_get_previous_color(
        colorsel: *mut GtkColorSelection,
        color: *mut gdk::GdkColor,
    );
    pub fn gtk_color_selection_get_previous_rgba(
        colorsel: *mut GtkColorSelection,
        rgba: *mut gdk::GdkRGBA,
    );
    pub fn gtk_color_selection_is_adjusting(colorsel: *mut GtkColorSelection) -> gboolean;
    pub fn gtk_color_selection_set_current_alpha(colorsel: *mut GtkColorSelection, alpha: u16);
    pub fn gtk_color_selection_set_current_color(
        colorsel: *mut GtkColorSelection,
        color: *const gdk::GdkColor,
    );
    pub fn gtk_color_selection_set_current_rgba(
        colorsel: *mut GtkColorSelection,
        rgba: *const gdk::GdkRGBA,
    );
    pub fn gtk_color_selection_set_has_opacity_control(
        colorsel: *mut GtkColorSelection,
        has_opacity: gboolean,
    );
    pub fn gtk_color_selection_set_has_palette(
        colorsel: *mut GtkColorSelection,
        has_palette: gboolean,
    );
    pub fn gtk_color_selection_set_previous_alpha(colorsel: *mut GtkColorSelection, alpha: u16);
    pub fn gtk_color_selection_set_previous_color(
        colorsel: *mut GtkColorSelection,
        color: *const gdk::GdkColor,
    );
    pub fn gtk_color_selection_set_previous_rgba(
        colorsel: *mut GtkColorSelection,
        rgba: *const gdk::GdkRGBA,
    );

    //=========================================================================
    // GtkColorSelectionDialog
    //=========================================================================
    pub fn gtk_color_selection_dialog_get_type() -> GType;
    pub fn gtk_color_selection_dialog_new(title: *const c_char) -> *mut GtkWidget;
    pub fn gtk_color_selection_dialog_get_color_selection(
        colorsel: *mut GtkColorSelectionDialog,
    ) -> *mut GtkWidget;

    //=========================================================================
    // GtkComboBox
    //=========================================================================
    pub fn gtk_combo_box_get_type() -> GType;
    pub fn gtk_combo_box_new() -> *mut GtkWidget;
    pub fn gtk_combo_box_new_with_area(area: *mut GtkCellArea) -> *mut GtkWidget;
    pub fn gtk_combo_box_new_with_area_and_entry(area: *mut GtkCellArea) -> *mut GtkWidget;
    pub fn gtk_combo_box_new_with_entry() -> *mut GtkWidget;
    pub fn gtk_combo_box_new_with_model(model: *mut GtkTreeModel) -> *mut GtkWidget;
    pub fn gtk_combo_box_new_with_model_and_entry(model: *mut GtkTreeModel) -> *mut GtkWidget;
    pub fn gtk_combo_box_get_active(combo_box: *mut GtkComboBox) -> c_int;
    pub fn gtk_combo_box_get_active_id(combo_box: *mut GtkComboBox) -> *const c_char;
    pub fn gtk_combo_box_get_active_iter(
        combo_box: *mut GtkComboBox,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_combo_box_get_add_tearoffs(combo_box: *mut GtkComboBox) -> gboolean;
    pub fn gtk_combo_box_get_button_sensitivity(combo_box: *mut GtkComboBox) -> GtkSensitivityType;
    pub fn gtk_combo_box_get_column_span_column(combo_box: *mut GtkComboBox) -> c_int;
    pub fn gtk_combo_box_get_entry_text_column(combo_box: *mut GtkComboBox) -> c_int;
    pub fn gtk_combo_box_get_focus_on_click(combo: *mut GtkComboBox) -> gboolean;
    pub fn gtk_combo_box_get_has_entry(combo_box: *mut GtkComboBox) -> gboolean;
    pub fn gtk_combo_box_get_id_column(combo_box: *mut GtkComboBox) -> c_int;
    pub fn gtk_combo_box_get_model(combo_box: *mut GtkComboBox) -> *mut GtkTreeModel;
    pub fn gtk_combo_box_get_popup_accessible(combo_box: *mut GtkComboBox) -> *mut atk::AtkObject;
    pub fn gtk_combo_box_get_popup_fixed_width(combo_box: *mut GtkComboBox) -> gboolean;
    pub fn gtk_combo_box_get_row_separator_func(
        combo_box: *mut GtkComboBox,
    ) -> GtkTreeViewRowSeparatorFunc;
    pub fn gtk_combo_box_get_row_span_column(combo_box: *mut GtkComboBox) -> c_int;
    pub fn gtk_combo_box_get_title(combo_box: *mut GtkComboBox) -> *const c_char;
    pub fn gtk_combo_box_get_wrap_width(combo_box: *mut GtkComboBox) -> c_int;
    pub fn gtk_combo_box_popdown(combo_box: *mut GtkComboBox);
    pub fn gtk_combo_box_popup(combo_box: *mut GtkComboBox);
    pub fn gtk_combo_box_popup_for_device(combo_box: *mut GtkComboBox, device: *mut gdk::GdkDevice);
    pub fn gtk_combo_box_set_active(combo_box: *mut GtkComboBox, index_: c_int);
    pub fn gtk_combo_box_set_active_id(
        combo_box: *mut GtkComboBox,
        active_id: *const c_char,
    ) -> gboolean;
    pub fn gtk_combo_box_set_active_iter(combo_box: *mut GtkComboBox, iter: *mut GtkTreeIter);
    pub fn gtk_combo_box_set_add_tearoffs(combo_box: *mut GtkComboBox, add_tearoffs: gboolean);
    pub fn gtk_combo_box_set_button_sensitivity(
        combo_box: *mut GtkComboBox,
        sensitivity: GtkSensitivityType,
    );
    pub fn gtk_combo_box_set_column_span_column(combo_box: *mut GtkComboBox, column_span: c_int);
    pub fn gtk_combo_box_set_entry_text_column(combo_box: *mut GtkComboBox, text_column: c_int);
    pub fn gtk_combo_box_set_focus_on_click(combo: *mut GtkComboBox, focus_on_click: gboolean);
    pub fn gtk_combo_box_set_id_column(combo_box: *mut GtkComboBox, id_column: c_int);
    pub fn gtk_combo_box_set_model(combo_box: *mut GtkComboBox, model: *mut GtkTreeModel);
    pub fn gtk_combo_box_set_popup_fixed_width(combo_box: *mut GtkComboBox, fixed: gboolean);
    pub fn gtk_combo_box_set_row_separator_func(
        combo_box: *mut GtkComboBox,
        func: GtkTreeViewRowSeparatorFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_combo_box_set_row_span_column(combo_box: *mut GtkComboBox, row_span: c_int);
    pub fn gtk_combo_box_set_title(combo_box: *mut GtkComboBox, title: *const c_char);
    pub fn gtk_combo_box_set_wrap_width(combo_box: *mut GtkComboBox, width: c_int);

    //=========================================================================
    // GtkComboBoxAccessible
    //=========================================================================
    pub fn gtk_combo_box_accessible_get_type() -> GType;

    //=========================================================================
    // GtkComboBoxText
    //=========================================================================
    pub fn gtk_combo_box_text_get_type() -> GType;
    pub fn gtk_combo_box_text_new() -> *mut GtkWidget;
    pub fn gtk_combo_box_text_new_with_entry() -> *mut GtkWidget;
    pub fn gtk_combo_box_text_append(
        combo_box: *mut GtkComboBoxText,
        id: *const c_char,
        text: *const c_char,
    );
    pub fn gtk_combo_box_text_append_text(combo_box: *mut GtkComboBoxText, text: *const c_char);
    pub fn gtk_combo_box_text_get_active_text(combo_box: *mut GtkComboBoxText) -> *mut c_char;
    pub fn gtk_combo_box_text_insert(
        combo_box: *mut GtkComboBoxText,
        position: c_int,
        id: *const c_char,
        text: *const c_char,
    );
    pub fn gtk_combo_box_text_insert_text(
        combo_box: *mut GtkComboBoxText,
        position: c_int,
        text: *const c_char,
    );
    pub fn gtk_combo_box_text_prepend(
        combo_box: *mut GtkComboBoxText,
        id: *const c_char,
        text: *const c_char,
    );
    pub fn gtk_combo_box_text_prepend_text(combo_box: *mut GtkComboBoxText, text: *const c_char);
    pub fn gtk_combo_box_text_remove(combo_box: *mut GtkComboBoxText, position: c_int);
    pub fn gtk_combo_box_text_remove_all(combo_box: *mut GtkComboBoxText);

    //=========================================================================
    // GtkContainer
    //=========================================================================
    pub fn gtk_container_get_type() -> GType;
    pub fn gtk_container_add(container: *mut GtkContainer, widget: *mut GtkWidget);
    pub fn gtk_container_add_with_properties(
        container: *mut GtkContainer,
        widget: *mut GtkWidget,
        first_prop_name: *const c_char,
        ...
    );
    pub fn gtk_container_check_resize(container: *mut GtkContainer);
    pub fn gtk_container_child_get(
        container: *mut GtkContainer,
        child: *mut GtkWidget,
        first_prop_name: *const c_char,
        ...
    );
    pub fn gtk_container_child_get_property(
        container: *mut GtkContainer,
        child: *mut GtkWidget,
        property_name: *const c_char,
        value: *mut gobject::GValue,
    );
    //pub fn gtk_container_child_get_valist(container: *mut GtkContainer, child: *mut GtkWidget, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
    pub fn gtk_container_child_notify(
        container: *mut GtkContainer,
        child: *mut GtkWidget,
        child_property: *const c_char,
    );
    pub fn gtk_container_child_notify_by_pspec(
        container: *mut GtkContainer,
        child: *mut GtkWidget,
        pspec: *mut gobject::GParamSpec,
    );
    pub fn gtk_container_child_set(
        container: *mut GtkContainer,
        child: *mut GtkWidget,
        first_prop_name: *const c_char,
        ...
    );
    pub fn gtk_container_child_set_property(
        container: *mut GtkContainer,
        child: *mut GtkWidget,
        property_name: *const c_char,
        value: *const gobject::GValue,
    );
    //pub fn gtk_container_child_set_valist(container: *mut GtkContainer, child: *mut GtkWidget, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
    pub fn gtk_container_child_type(container: *mut GtkContainer) -> GType;
    pub fn gtk_container_forall(
        container: *mut GtkContainer,
        callback: GtkCallback,
        callback_data: gpointer,
    );
    pub fn gtk_container_foreach(
        container: *mut GtkContainer,
        callback: GtkCallback,
        callback_data: gpointer,
    );
    pub fn gtk_container_get_border_width(container: *mut GtkContainer) -> c_uint;
    pub fn gtk_container_get_children(container: *mut GtkContainer) -> *mut glib::GList;
    pub fn gtk_container_get_focus_chain(
        container: *mut GtkContainer,
        focusable_widgets: *mut *mut glib::GList,
    ) -> gboolean;
    pub fn gtk_container_get_focus_child(container: *mut GtkContainer) -> *mut GtkWidget;
    pub fn gtk_container_get_focus_hadjustment(container: *mut GtkContainer) -> *mut GtkAdjustment;
    pub fn gtk_container_get_focus_vadjustment(container: *mut GtkContainer) -> *mut GtkAdjustment;
    pub fn gtk_container_get_path_for_child(
        container: *mut GtkContainer,
        child: *mut GtkWidget,
    ) -> *mut GtkWidgetPath;
    pub fn gtk_container_get_resize_mode(container: *mut GtkContainer) -> GtkResizeMode;
    pub fn gtk_container_propagate_draw(
        container: *mut GtkContainer,
        child: *mut GtkWidget,
        cr: *mut cairo::cairo_t,
    );
    pub fn gtk_container_remove(container: *mut GtkContainer, widget: *mut GtkWidget);
    pub fn gtk_container_resize_children(container: *mut GtkContainer);
    pub fn gtk_container_set_border_width(container: *mut GtkContainer, border_width: c_uint);
    pub fn gtk_container_set_focus_chain(
        container: *mut GtkContainer,
        focusable_widgets: *mut glib::GList,
    );
    pub fn gtk_container_set_focus_child(container: *mut GtkContainer, child: *mut GtkWidget);
    pub fn gtk_container_set_focus_hadjustment(
        container: *mut GtkContainer,
        adjustment: *mut GtkAdjustment,
    );
    pub fn gtk_container_set_focus_vadjustment(
        container: *mut GtkContainer,
        adjustment: *mut GtkAdjustment,
    );
    pub fn gtk_container_set_reallocate_redraws(
        container: *mut GtkContainer,
        needs_redraws: gboolean,
    );
    pub fn gtk_container_set_resize_mode(container: *mut GtkContainer, resize_mode: GtkResizeMode);
    pub fn gtk_container_unset_focus_chain(container: *mut GtkContainer);

    //=========================================================================
    // GtkContainerAccessible
    //=========================================================================
    pub fn gtk_container_accessible_get_type() -> GType;

    //=========================================================================
    // GtkContainerCellAccessible
    //=========================================================================
    pub fn gtk_container_cell_accessible_get_type() -> GType;
    pub fn gtk_container_cell_accessible_new() -> *mut GtkContainerCellAccessible;
    pub fn gtk_container_cell_accessible_add_child(
        container: *mut GtkContainerCellAccessible,
        child: *mut GtkCellAccessible,
    );
    pub fn gtk_container_cell_accessible_get_children(
        container: *mut GtkContainerCellAccessible,
    ) -> *mut glib::GList;
    pub fn gtk_container_cell_accessible_remove_child(
        container: *mut GtkContainerCellAccessible,
        child: *mut GtkCellAccessible,
    );

    //=========================================================================
    // GtkCssProvider
    //=========================================================================
    pub fn gtk_css_provider_get_type() -> GType;
    pub fn gtk_css_provider_new() -> *mut GtkCssProvider;
    pub fn gtk_css_provider_get_default() -> *mut GtkCssProvider;
    pub fn gtk_css_provider_get_named(
        name: *const c_char,
        variant: *const c_char,
    ) -> *mut GtkCssProvider;
    pub fn gtk_css_provider_load_from_data(
        css_provider: *mut GtkCssProvider,
        data: *const u8,
        length: ssize_t,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_css_provider_load_from_file(
        css_provider: *mut GtkCssProvider,
        file: *mut gio::GFile,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_css_provider_load_from_path(
        css_provider: *mut GtkCssProvider,
        path: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_css_provider_load_from_resource(
        css_provider: *mut GtkCssProvider,
        resource_path: *const c_char,
    );
    pub fn gtk_css_provider_to_string(provider: *mut GtkCssProvider) -> *mut c_char;

    //=========================================================================
    // GtkDialog
    //=========================================================================
    pub fn gtk_dialog_get_type() -> GType;
    pub fn gtk_dialog_new() -> *mut GtkWidget;
    pub fn gtk_dialog_new_with_buttons(
        title: *const c_char,
        parent: *mut GtkWindow,
        flags: GtkDialogFlags,
        first_button_text: *const c_char,
        ...
    ) -> *mut GtkWidget;
    pub fn gtk_dialog_add_action_widget(
        dialog: *mut GtkDialog,
        child: *mut GtkWidget,
        response_id: GtkResponseType,
    );
    pub fn gtk_dialog_add_button(
        dialog: *mut GtkDialog,
        button_text: *const c_char,
        response_id: GtkResponseType,
    ) -> *mut GtkWidget;
    pub fn gtk_dialog_add_buttons(dialog: *mut GtkDialog, first_button_text: *const c_char, ...);
    pub fn gtk_dialog_get_action_area(dialog: *mut GtkDialog) -> *mut GtkBox;
    pub fn gtk_dialog_get_content_area(dialog: *mut GtkDialog) -> *mut GtkBox;
    pub fn gtk_dialog_get_header_bar(dialog: *mut GtkDialog) -> *mut GtkHeaderBar;
    pub fn gtk_dialog_get_response_for_widget(
        dialog: *mut GtkDialog,
        widget: *mut GtkWidget,
    ) -> c_int;
    pub fn gtk_dialog_get_widget_for_response(
        dialog: *mut GtkDialog,
        response_id: GtkResponseType,
    ) -> *mut GtkWidget;
    pub fn gtk_dialog_response(dialog: *mut GtkDialog, response_id: GtkResponseType);
    pub fn gtk_dialog_run(dialog: *mut GtkDialog) -> c_int;
    pub fn gtk_dialog_set_alternative_button_order(
        dialog: *mut GtkDialog,
        first_response_id: c_int,
        ...
    );
    pub fn gtk_dialog_set_alternative_button_order_from_array(
        dialog: *mut GtkDialog,
        n_params: c_int,
        new_order: *mut c_int,
    );
    pub fn gtk_dialog_set_default_response(dialog: *mut GtkDialog, response_id: GtkResponseType);
    pub fn gtk_dialog_set_response_sensitive(
        dialog: *mut GtkDialog,
        response_id: GtkResponseType,
        setting: gboolean,
    );

    //=========================================================================
    // GtkDrawingArea
    //=========================================================================
    pub fn gtk_drawing_area_get_type() -> GType;
    pub fn gtk_drawing_area_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkEntry
    //=========================================================================
    pub fn gtk_entry_get_type() -> GType;
    pub fn gtk_entry_new() -> *mut GtkWidget;
    pub fn gtk_entry_new_with_buffer(buffer: *mut GtkEntryBuffer) -> *mut GtkWidget;
    pub fn gtk_entry_get_activates_default(entry: *mut GtkEntry) -> gboolean;
    pub fn gtk_entry_get_alignment(entry: *mut GtkEntry) -> c_float;
    pub fn gtk_entry_get_attributes(entry: *mut GtkEntry) -> *mut pango::PangoAttrList;
    pub fn gtk_entry_get_buffer(entry: *mut GtkEntry) -> *mut GtkEntryBuffer;
    pub fn gtk_entry_get_completion(entry: *mut GtkEntry) -> *mut GtkEntryCompletion;
    pub fn gtk_entry_get_current_icon_drag_source(entry: *mut GtkEntry) -> c_int;
    pub fn gtk_entry_get_cursor_hadjustment(entry: *mut GtkEntry) -> *mut GtkAdjustment;
    pub fn gtk_entry_get_has_frame(entry: *mut GtkEntry) -> gboolean;
    pub fn gtk_entry_get_icon_activatable(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
    ) -> gboolean;
    pub fn gtk_entry_get_icon_area(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
        icon_area: *mut gdk::GdkRectangle,
    );
    pub fn gtk_entry_get_icon_at_pos(entry: *mut GtkEntry, x: c_int, y: c_int) -> c_int;
    pub fn gtk_entry_get_icon_gicon(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
    ) -> *mut gio::GIcon;
    pub fn gtk_entry_get_icon_name(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
    ) -> *const c_char;
    pub fn gtk_entry_get_icon_pixbuf(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_entry_get_icon_sensitive(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
    ) -> gboolean;
    pub fn gtk_entry_get_icon_stock(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
    ) -> *const c_char;
    pub fn gtk_entry_get_icon_storage_type(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
    ) -> GtkImageType;
    pub fn gtk_entry_get_icon_tooltip_markup(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
    ) -> *mut c_char;
    pub fn gtk_entry_get_icon_tooltip_text(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
    ) -> *mut c_char;
    pub fn gtk_entry_get_inner_border(entry: *mut GtkEntry) -> *const GtkBorder;
    pub fn gtk_entry_get_input_hints(entry: *mut GtkEntry) -> GtkInputHints;
    pub fn gtk_entry_get_input_purpose(entry: *mut GtkEntry) -> GtkInputPurpose;
    pub fn gtk_entry_get_invisible_char(entry: *mut GtkEntry) -> u32;
    pub fn gtk_entry_get_layout(entry: *mut GtkEntry) -> *mut pango::PangoLayout;
    pub fn gtk_entry_get_layout_offsets(entry: *mut GtkEntry, x: *mut c_int, y: *mut c_int);
    pub fn gtk_entry_get_max_length(entry: *mut GtkEntry) -> c_int;
    pub fn gtk_entry_get_max_width_chars(entry: *mut GtkEntry) -> c_int;
    pub fn gtk_entry_get_overwrite_mode(entry: *mut GtkEntry) -> gboolean;
    pub fn gtk_entry_get_placeholder_text(entry: *mut GtkEntry) -> *const c_char;
    pub fn gtk_entry_get_progress_fraction(entry: *mut GtkEntry) -> c_double;
    pub fn gtk_entry_get_progress_pulse_step(entry: *mut GtkEntry) -> c_double;
    pub fn gtk_entry_get_tabs(entry: *mut GtkEntry) -> *mut pango::PangoTabArray;
    pub fn gtk_entry_get_text(entry: *mut GtkEntry) -> *const c_char;
    pub fn gtk_entry_get_text_area(entry: *mut GtkEntry, text_area: *mut gdk::GdkRectangle);
    pub fn gtk_entry_get_text_length(entry: *mut GtkEntry) -> u16;
    pub fn gtk_entry_get_visibility(entry: *mut GtkEntry) -> gboolean;
    pub fn gtk_entry_get_width_chars(entry: *mut GtkEntry) -> c_int;
    pub fn gtk_entry_grab_focus_without_selecting(entry: *mut GtkEntry);
    pub fn gtk_entry_im_context_filter_keypress(
        entry: *mut GtkEntry,
        event: *mut gdk::GdkEventKey,
    ) -> gboolean;
    pub fn gtk_entry_layout_index_to_text_index(entry: *mut GtkEntry, layout_index: c_int)
        -> c_int;
    pub fn gtk_entry_progress_pulse(entry: *mut GtkEntry);
    pub fn gtk_entry_reset_im_context(entry: *mut GtkEntry);
    pub fn gtk_entry_set_activates_default(entry: *mut GtkEntry, setting: gboolean);
    pub fn gtk_entry_set_alignment(entry: *mut GtkEntry, xalign: c_float);
    pub fn gtk_entry_set_attributes(entry: *mut GtkEntry, attrs: *mut pango::PangoAttrList);
    pub fn gtk_entry_set_buffer(entry: *mut GtkEntry, buffer: *mut GtkEntryBuffer);
    pub fn gtk_entry_set_completion(entry: *mut GtkEntry, completion: *mut GtkEntryCompletion);
    pub fn gtk_entry_set_cursor_hadjustment(entry: *mut GtkEntry, adjustment: *mut GtkAdjustment);
    pub fn gtk_entry_set_has_frame(entry: *mut GtkEntry, setting: gboolean);
    pub fn gtk_entry_set_icon_activatable(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
        activatable: gboolean,
    );
    pub fn gtk_entry_set_icon_drag_source(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
        target_list: *mut GtkTargetList,
        actions: gdk::GdkDragAction,
    );
    pub fn gtk_entry_set_icon_from_gicon(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
        icon: *mut gio::GIcon,
    );
    pub fn gtk_entry_set_icon_from_icon_name(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
        icon_name: *const c_char,
    );
    pub fn gtk_entry_set_icon_from_pixbuf(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    );
    pub fn gtk_entry_set_icon_from_stock(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
        stock_id: *const c_char,
    );
    pub fn gtk_entry_set_icon_sensitive(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
        sensitive: gboolean,
    );
    pub fn gtk_entry_set_icon_tooltip_markup(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
        tooltip: *const c_char,
    );
    pub fn gtk_entry_set_icon_tooltip_text(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
        tooltip: *const c_char,
    );
    pub fn gtk_entry_set_inner_border(entry: *mut GtkEntry, border: *const GtkBorder);
    pub fn gtk_entry_set_input_hints(entry: *mut GtkEntry, hints: GtkInputHints);
    pub fn gtk_entry_set_input_purpose(entry: *mut GtkEntry, purpose: GtkInputPurpose);
    pub fn gtk_entry_set_invisible_char(entry: *mut GtkEntry, ch: u32);
    pub fn gtk_entry_set_max_length(entry: *mut GtkEntry, max: c_int);
    pub fn gtk_entry_set_max_width_chars(entry: *mut GtkEntry, n_chars: c_int);
    pub fn gtk_entry_set_overwrite_mode(entry: *mut GtkEntry, overwrite: gboolean);
    pub fn gtk_entry_set_placeholder_text(entry: *mut GtkEntry, text: *const c_char);
    pub fn gtk_entry_set_progress_fraction(entry: *mut GtkEntry, fraction: c_double);
    pub fn gtk_entry_set_progress_pulse_step(entry: *mut GtkEntry, fraction: c_double);
    pub fn gtk_entry_set_tabs(entry: *mut GtkEntry, tabs: *mut pango::PangoTabArray);
    pub fn gtk_entry_set_text(entry: *mut GtkEntry, text: *const c_char);
    pub fn gtk_entry_set_visibility(entry: *mut GtkEntry, visible: gboolean);
    pub fn gtk_entry_set_width_chars(entry: *mut GtkEntry, n_chars: c_int);
    pub fn gtk_entry_text_index_to_layout_index(entry: *mut GtkEntry, text_index: c_int) -> c_int;
    pub fn gtk_entry_unset_invisible_char(entry: *mut GtkEntry);

    //=========================================================================
    // GtkEntryAccessible
    //=========================================================================
    pub fn gtk_entry_accessible_get_type() -> GType;

    //=========================================================================
    // GtkEntryBuffer
    //=========================================================================
    pub fn gtk_entry_buffer_get_type() -> GType;
    pub fn gtk_entry_buffer_new(
        initial_chars: *const c_char,
        n_initial_chars: c_int,
    ) -> *mut GtkEntryBuffer;
    pub fn gtk_entry_buffer_delete_text(
        buffer: *mut GtkEntryBuffer,
        position: c_uint,
        n_chars: c_int,
    ) -> c_uint;
    pub fn gtk_entry_buffer_emit_deleted_text(
        buffer: *mut GtkEntryBuffer,
        position: c_uint,
        n_chars: c_uint,
    );
    pub fn gtk_entry_buffer_emit_inserted_text(
        buffer: *mut GtkEntryBuffer,
        position: c_uint,
        chars: *const c_char,
        n_chars: c_uint,
    );
    pub fn gtk_entry_buffer_get_bytes(buffer: *mut GtkEntryBuffer) -> size_t;
    pub fn gtk_entry_buffer_get_length(buffer: *mut GtkEntryBuffer) -> c_uint;
    pub fn gtk_entry_buffer_get_max_length(buffer: *mut GtkEntryBuffer) -> c_int;
    pub fn gtk_entry_buffer_get_text(buffer: *mut GtkEntryBuffer) -> *const c_char;
    pub fn gtk_entry_buffer_insert_text(
        buffer: *mut GtkEntryBuffer,
        position: c_uint,
        chars: *const c_char,
        n_chars: c_int,
    ) -> c_uint;
    pub fn gtk_entry_buffer_set_max_length(buffer: *mut GtkEntryBuffer, max_length: c_int);
    pub fn gtk_entry_buffer_set_text(
        buffer: *mut GtkEntryBuffer,
        chars: *const c_char,
        n_chars: c_int,
    );

    //=========================================================================
    // GtkEntryCompletion
    //=========================================================================
    pub fn gtk_entry_completion_get_type() -> GType;
    pub fn gtk_entry_completion_new() -> *mut GtkEntryCompletion;
    pub fn gtk_entry_completion_new_with_area(area: *mut GtkCellArea) -> *mut GtkEntryCompletion;
    pub fn gtk_entry_completion_complete(completion: *mut GtkEntryCompletion);
    pub fn gtk_entry_completion_compute_prefix(
        completion: *mut GtkEntryCompletion,
        key: *const c_char,
    ) -> *mut c_char;
    pub fn gtk_entry_completion_delete_action(completion: *mut GtkEntryCompletion, index_: c_int);
    pub fn gtk_entry_completion_get_completion_prefix(
        completion: *mut GtkEntryCompletion,
    ) -> *const c_char;
    pub fn gtk_entry_completion_get_entry(completion: *mut GtkEntryCompletion) -> *mut GtkWidget;
    pub fn gtk_entry_completion_get_inline_completion(
        completion: *mut GtkEntryCompletion,
    ) -> gboolean;
    pub fn gtk_entry_completion_get_inline_selection(
        completion: *mut GtkEntryCompletion,
    ) -> gboolean;
    pub fn gtk_entry_completion_get_minimum_key_length(
        completion: *mut GtkEntryCompletion,
    ) -> c_int;
    pub fn gtk_entry_completion_get_model(completion: *mut GtkEntryCompletion)
        -> *mut GtkTreeModel;
    pub fn gtk_entry_completion_get_popup_completion(
        completion: *mut GtkEntryCompletion,
    ) -> gboolean;
    pub fn gtk_entry_completion_get_popup_set_width(
        completion: *mut GtkEntryCompletion,
    ) -> gboolean;
    pub fn gtk_entry_completion_get_popup_single_match(
        completion: *mut GtkEntryCompletion,
    ) -> gboolean;
    pub fn gtk_entry_completion_get_text_column(completion: *mut GtkEntryCompletion) -> c_int;
    pub fn gtk_entry_completion_insert_action_markup(
        completion: *mut GtkEntryCompletion,
        index_: c_int,
        markup: *const c_char,
    );
    pub fn gtk_entry_completion_insert_action_text(
        completion: *mut GtkEntryCompletion,
        index_: c_int,
        text: *const c_char,
    );
    pub fn gtk_entry_completion_insert_prefix(completion: *mut GtkEntryCompletion);
    pub fn gtk_entry_completion_set_inline_completion(
        completion: *mut GtkEntryCompletion,
        inline_completion: gboolean,
    );
    pub fn gtk_entry_completion_set_inline_selection(
        completion: *mut GtkEntryCompletion,
        inline_selection: gboolean,
    );
    pub fn gtk_entry_completion_set_match_func(
        completion: *mut GtkEntryCompletion,
        func: GtkEntryCompletionMatchFunc,
        func_data: gpointer,
        func_notify: glib::GDestroyNotify,
    );
    pub fn gtk_entry_completion_set_minimum_key_length(
        completion: *mut GtkEntryCompletion,
        length: c_int,
    );
    pub fn gtk_entry_completion_set_model(
        completion: *mut GtkEntryCompletion,
        model: *mut GtkTreeModel,
    );
    pub fn gtk_entry_completion_set_popup_completion(
        completion: *mut GtkEntryCompletion,
        popup_completion: gboolean,
    );
    pub fn gtk_entry_completion_set_popup_set_width(
        completion: *mut GtkEntryCompletion,
        popup_set_width: gboolean,
    );
    pub fn gtk_entry_completion_set_popup_single_match(
        completion: *mut GtkEntryCompletion,
        popup_single_match: gboolean,
    );
    pub fn gtk_entry_completion_set_text_column(completion: *mut GtkEntryCompletion, column: c_int);

    //=========================================================================
    // GtkEntryIconAccessible
    //=========================================================================
    pub fn gtk_entry_icon_accessible_get_type() -> GType;

    //=========================================================================
    // GtkEventBox
    //=========================================================================
    pub fn gtk_event_box_get_type() -> GType;
    pub fn gtk_event_box_new() -> *mut GtkWidget;
    pub fn gtk_event_box_get_above_child(event_box: *mut GtkEventBox) -> gboolean;
    pub fn gtk_event_box_get_visible_window(event_box: *mut GtkEventBox) -> gboolean;
    pub fn gtk_event_box_set_above_child(event_box: *mut GtkEventBox, above_child: gboolean);
    pub fn gtk_event_box_set_visible_window(event_box: *mut GtkEventBox, visible_window: gboolean);

    //=========================================================================
    // GtkEventController
    //=========================================================================
    pub fn gtk_event_controller_get_type() -> GType;
    pub fn gtk_event_controller_get_propagation_phase(
        controller: *mut GtkEventController,
    ) -> GtkPropagationPhase;
    pub fn gtk_event_controller_get_widget(controller: *mut GtkEventController) -> *mut GtkWidget;
    pub fn gtk_event_controller_handle_event(
        controller: *mut GtkEventController,
        event: *const gdk::GdkEvent,
    ) -> gboolean;
    pub fn gtk_event_controller_reset(controller: *mut GtkEventController);
    pub fn gtk_event_controller_set_propagation_phase(
        controller: *mut GtkEventController,
        phase: GtkPropagationPhase,
    );

    //=========================================================================
    // GtkEventControllerKey
    //=========================================================================
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_key_get_type() -> GType;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_key_new(widget: *mut GtkWidget) -> *mut GtkEventController;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_key_forward(
        controller: *mut GtkEventControllerKey,
        widget: *mut GtkWidget,
    ) -> gboolean;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_key_get_group(controller: *mut GtkEventControllerKey) -> c_uint;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_key_get_im_context(
        controller: *mut GtkEventControllerKey,
    ) -> *mut GtkIMContext;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_key_set_im_context(
        controller: *mut GtkEventControllerKey,
        im_context: *mut GtkIMContext,
    );

    //=========================================================================
    // GtkEventControllerMotion
    //=========================================================================
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_motion_get_type() -> GType;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_motion_new(widget: *mut GtkWidget) -> *mut GtkEventController;

    //=========================================================================
    // GtkEventControllerScroll
    //=========================================================================
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_scroll_get_type() -> GType;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_scroll_new(
        widget: *mut GtkWidget,
        flags: GtkEventControllerScrollFlags,
    ) -> *mut GtkEventController;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_scroll_get_flags(
        scroll: *mut GtkEventControllerScroll,
    ) -> GtkEventControllerScrollFlags;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_event_controller_scroll_set_flags(
        scroll: *mut GtkEventControllerScroll,
        flags: GtkEventControllerScrollFlags,
    );

    //=========================================================================
    // GtkExpander
    //=========================================================================
    pub fn gtk_expander_get_type() -> GType;
    pub fn gtk_expander_new(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_expander_new_with_mnemonic(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_expander_get_expanded(expander: *mut GtkExpander) -> gboolean;
    pub fn gtk_expander_get_label(expander: *mut GtkExpander) -> *const c_char;
    pub fn gtk_expander_get_label_fill(expander: *mut GtkExpander) -> gboolean;
    pub fn gtk_expander_get_label_widget(expander: *mut GtkExpander) -> *mut GtkWidget;
    pub fn gtk_expander_get_resize_toplevel(expander: *mut GtkExpander) -> gboolean;
    pub fn gtk_expander_get_spacing(expander: *mut GtkExpander) -> c_int;
    pub fn gtk_expander_get_use_markup(expander: *mut GtkExpander) -> gboolean;
    pub fn gtk_expander_get_use_underline(expander: *mut GtkExpander) -> gboolean;
    pub fn gtk_expander_set_expanded(expander: *mut GtkExpander, expanded: gboolean);
    pub fn gtk_expander_set_label(expander: *mut GtkExpander, label: *const c_char);
    pub fn gtk_expander_set_label_fill(expander: *mut GtkExpander, label_fill: gboolean);
    pub fn gtk_expander_set_label_widget(expander: *mut GtkExpander, label_widget: *mut GtkWidget);
    pub fn gtk_expander_set_resize_toplevel(expander: *mut GtkExpander, resize_toplevel: gboolean);
    pub fn gtk_expander_set_spacing(expander: *mut GtkExpander, spacing: c_int);
    pub fn gtk_expander_set_use_markup(expander: *mut GtkExpander, use_markup: gboolean);
    pub fn gtk_expander_set_use_underline(expander: *mut GtkExpander, use_underline: gboolean);

    //=========================================================================
    // GtkExpanderAccessible
    //=========================================================================
    pub fn gtk_expander_accessible_get_type() -> GType;

    //=========================================================================
    // GtkFileChooserButton
    //=========================================================================
    pub fn gtk_file_chooser_button_get_type() -> GType;
    pub fn gtk_file_chooser_button_new(
        title: *const c_char,
        action: GtkFileChooserAction,
    ) -> *mut GtkWidget;
    pub fn gtk_file_chooser_button_new_with_dialog(dialog: *mut GtkDialog) -> *mut GtkWidget;
    pub fn gtk_file_chooser_button_get_focus_on_click(
        button: *mut GtkFileChooserButton,
    ) -> gboolean;
    pub fn gtk_file_chooser_button_get_title(button: *mut GtkFileChooserButton) -> *const c_char;
    pub fn gtk_file_chooser_button_get_width_chars(button: *mut GtkFileChooserButton) -> c_int;
    pub fn gtk_file_chooser_button_set_focus_on_click(
        button: *mut GtkFileChooserButton,
        focus_on_click: gboolean,
    );
    pub fn gtk_file_chooser_button_set_title(
        button: *mut GtkFileChooserButton,
        title: *const c_char,
    );
    pub fn gtk_file_chooser_button_set_width_chars(
        button: *mut GtkFileChooserButton,
        n_chars: c_int,
    );

    //=========================================================================
    // GtkFileChooserDialog
    //=========================================================================
    pub fn gtk_file_chooser_dialog_get_type() -> GType;
    pub fn gtk_file_chooser_dialog_new(
        title: *const c_char,
        parent: *mut GtkWindow,
        action: GtkFileChooserAction,
        first_button_text: *const c_char,
        ...
    ) -> *mut GtkWidget;

    //=========================================================================
    // GtkFileChooserNative
    //=========================================================================
    pub fn gtk_file_chooser_native_get_type() -> GType;
    pub fn gtk_file_chooser_native_new(
        title: *const c_char,
        parent: *mut GtkWindow,
        action: GtkFileChooserAction,
        accept_label: *const c_char,
        cancel_label: *const c_char,
    ) -> *mut GtkFileChooserNative;
    pub fn gtk_file_chooser_native_get_accept_label(
        self_: *mut GtkFileChooserNative,
    ) -> *const c_char;
    pub fn gtk_file_chooser_native_get_cancel_label(
        self_: *mut GtkFileChooserNative,
    ) -> *const c_char;
    pub fn gtk_file_chooser_native_set_accept_label(
        self_: *mut GtkFileChooserNative,
        accept_label: *const c_char,
    );
    pub fn gtk_file_chooser_native_set_cancel_label(
        self_: *mut GtkFileChooserNative,
        cancel_label: *const c_char,
    );

    //=========================================================================
    // GtkFileChooserWidget
    //=========================================================================
    pub fn gtk_file_chooser_widget_get_type() -> GType;
    pub fn gtk_file_chooser_widget_new(action: GtkFileChooserAction) -> *mut GtkWidget;

    //=========================================================================
    // GtkFileChooserWidgetAccessible
    //=========================================================================
    #[cfg(feature = "v3_24_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24_30")))]
    pub fn gtk_file_chooser_widget_accessible_get_type() -> GType;

    //=========================================================================
    // GtkFileFilter
    //=========================================================================
    pub fn gtk_file_filter_get_type() -> GType;
    pub fn gtk_file_filter_new() -> *mut GtkFileFilter;
    pub fn gtk_file_filter_new_from_gvariant(variant: *mut glib::GVariant) -> *mut GtkFileFilter;
    pub fn gtk_file_filter_add_custom(
        filter: *mut GtkFileFilter,
        needed: GtkFileFilterFlags,
        func: GtkFileFilterFunc,
        data: gpointer,
        notify: glib::GDestroyNotify,
    );
    pub fn gtk_file_filter_add_mime_type(filter: *mut GtkFileFilter, mime_type: *const c_char);
    pub fn gtk_file_filter_add_pattern(filter: *mut GtkFileFilter, pattern: *const c_char);
    pub fn gtk_file_filter_add_pixbuf_formats(filter: *mut GtkFileFilter);
    pub fn gtk_file_filter_filter(
        filter: *mut GtkFileFilter,
        filter_info: *const GtkFileFilterInfo,
    ) -> gboolean;
    pub fn gtk_file_filter_get_name(filter: *mut GtkFileFilter) -> *const c_char;
    pub fn gtk_file_filter_get_needed(filter: *mut GtkFileFilter) -> GtkFileFilterFlags;
    pub fn gtk_file_filter_set_name(filter: *mut GtkFileFilter, name: *const c_char);
    pub fn gtk_file_filter_to_gvariant(filter: *mut GtkFileFilter) -> *mut glib::GVariant;

    //=========================================================================
    // GtkFixed
    //=========================================================================
    pub fn gtk_fixed_get_type() -> GType;
    pub fn gtk_fixed_new() -> *mut GtkWidget;
    pub fn gtk_fixed_move(fixed: *mut GtkFixed, widget: *mut GtkWidget, x: c_int, y: c_int);
    pub fn gtk_fixed_put(fixed: *mut GtkFixed, widget: *mut GtkWidget, x: c_int, y: c_int);

    //=========================================================================
    // GtkFlowBox
    //=========================================================================
    pub fn gtk_flow_box_get_type() -> GType;
    pub fn gtk_flow_box_new() -> *mut GtkWidget;
    pub fn gtk_flow_box_bind_model(
        box_: *mut GtkFlowBox,
        model: *mut gio::GListModel,
        create_widget_func: GtkFlowBoxCreateWidgetFunc,
        user_data: gpointer,
        user_data_free_func: glib::GDestroyNotify,
    );
    pub fn gtk_flow_box_get_activate_on_single_click(box_: *mut GtkFlowBox) -> gboolean;
    pub fn gtk_flow_box_get_child_at_index(
        box_: *mut GtkFlowBox,
        idx: c_int,
    ) -> *mut GtkFlowBoxChild;
    pub fn gtk_flow_box_get_child_at_pos(
        box_: *mut GtkFlowBox,
        x: c_int,
        y: c_int,
    ) -> *mut GtkFlowBoxChild;
    pub fn gtk_flow_box_get_column_spacing(box_: *mut GtkFlowBox) -> c_uint;
    pub fn gtk_flow_box_get_homogeneous(box_: *mut GtkFlowBox) -> gboolean;
    pub fn gtk_flow_box_get_max_children_per_line(box_: *mut GtkFlowBox) -> c_uint;
    pub fn gtk_flow_box_get_min_children_per_line(box_: *mut GtkFlowBox) -> c_uint;
    pub fn gtk_flow_box_get_row_spacing(box_: *mut GtkFlowBox) -> c_uint;
    pub fn gtk_flow_box_get_selected_children(box_: *mut GtkFlowBox) -> *mut glib::GList;
    pub fn gtk_flow_box_get_selection_mode(box_: *mut GtkFlowBox) -> GtkSelectionMode;
    pub fn gtk_flow_box_insert(box_: *mut GtkFlowBox, widget: *mut GtkWidget, position: c_int);
    pub fn gtk_flow_box_invalidate_filter(box_: *mut GtkFlowBox);
    pub fn gtk_flow_box_invalidate_sort(box_: *mut GtkFlowBox);
    pub fn gtk_flow_box_select_all(box_: *mut GtkFlowBox);
    pub fn gtk_flow_box_select_child(box_: *mut GtkFlowBox, child: *mut GtkFlowBoxChild);
    pub fn gtk_flow_box_selected_foreach(
        box_: *mut GtkFlowBox,
        func: GtkFlowBoxForeachFunc,
        data: gpointer,
    );
    pub fn gtk_flow_box_set_activate_on_single_click(box_: *mut GtkFlowBox, single: gboolean);
    pub fn gtk_flow_box_set_column_spacing(box_: *mut GtkFlowBox, spacing: c_uint);
    pub fn gtk_flow_box_set_filter_func(
        box_: *mut GtkFlowBox,
        filter_func: GtkFlowBoxFilterFunc,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_flow_box_set_hadjustment(box_: *mut GtkFlowBox, adjustment: *mut GtkAdjustment);
    pub fn gtk_flow_box_set_homogeneous(box_: *mut GtkFlowBox, homogeneous: gboolean);
    pub fn gtk_flow_box_set_max_children_per_line(box_: *mut GtkFlowBox, n_children: c_uint);
    pub fn gtk_flow_box_set_min_children_per_line(box_: *mut GtkFlowBox, n_children: c_uint);
    pub fn gtk_flow_box_set_row_spacing(box_: *mut GtkFlowBox, spacing: c_uint);
    pub fn gtk_flow_box_set_selection_mode(box_: *mut GtkFlowBox, mode: GtkSelectionMode);
    pub fn gtk_flow_box_set_sort_func(
        box_: *mut GtkFlowBox,
        sort_func: GtkFlowBoxSortFunc,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_flow_box_set_vadjustment(box_: *mut GtkFlowBox, adjustment: *mut GtkAdjustment);
    pub fn gtk_flow_box_unselect_all(box_: *mut GtkFlowBox);
    pub fn gtk_flow_box_unselect_child(box_: *mut GtkFlowBox, child: *mut GtkFlowBoxChild);

    //=========================================================================
    // GtkFlowBoxAccessible
    //=========================================================================
    pub fn gtk_flow_box_accessible_get_type() -> GType;

    //=========================================================================
    // GtkFlowBoxChild
    //=========================================================================
    pub fn gtk_flow_box_child_get_type() -> GType;
    pub fn gtk_flow_box_child_new() -> *mut GtkWidget;
    pub fn gtk_flow_box_child_changed(child: *mut GtkFlowBoxChild);
    pub fn gtk_flow_box_child_get_index(child: *mut GtkFlowBoxChild) -> c_int;
    pub fn gtk_flow_box_child_is_selected(child: *mut GtkFlowBoxChild) -> gboolean;

    //=========================================================================
    // GtkFlowBoxChildAccessible
    //=========================================================================
    pub fn gtk_flow_box_child_accessible_get_type() -> GType;

    //=========================================================================
    // GtkFontButton
    //=========================================================================
    pub fn gtk_font_button_get_type() -> GType;
    pub fn gtk_font_button_new() -> *mut GtkWidget;
    pub fn gtk_font_button_new_with_font(fontname: *const c_char) -> *mut GtkWidget;
    pub fn gtk_font_button_get_font_name(font_button: *mut GtkFontButton) -> *const c_char;
    pub fn gtk_font_button_get_show_size(font_button: *mut GtkFontButton) -> gboolean;
    pub fn gtk_font_button_get_show_style(font_button: *mut GtkFontButton) -> gboolean;
    pub fn gtk_font_button_get_title(font_button: *mut GtkFontButton) -> *const c_char;
    pub fn gtk_font_button_get_use_font(font_button: *mut GtkFontButton) -> gboolean;
    pub fn gtk_font_button_get_use_size(font_button: *mut GtkFontButton) -> gboolean;
    pub fn gtk_font_button_set_font_name(
        font_button: *mut GtkFontButton,
        fontname: *const c_char,
    ) -> gboolean;
    pub fn gtk_font_button_set_show_size(font_button: *mut GtkFontButton, show_size: gboolean);
    pub fn gtk_font_button_set_show_style(font_button: *mut GtkFontButton, show_style: gboolean);
    pub fn gtk_font_button_set_title(font_button: *mut GtkFontButton, title: *const c_char);
    pub fn gtk_font_button_set_use_font(font_button: *mut GtkFontButton, use_font: gboolean);
    pub fn gtk_font_button_set_use_size(font_button: *mut GtkFontButton, use_size: gboolean);

    //=========================================================================
    // GtkFontChooserDialog
    //=========================================================================
    pub fn gtk_font_chooser_dialog_get_type() -> GType;
    pub fn gtk_font_chooser_dialog_new(
        title: *const c_char,
        parent: *mut GtkWindow,
    ) -> *mut GtkWidget;

    //=========================================================================
    // GtkFontChooserWidget
    //=========================================================================
    pub fn gtk_font_chooser_widget_get_type() -> GType;
    pub fn gtk_font_chooser_widget_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkFontSelection
    //=========================================================================
    pub fn gtk_font_selection_get_type() -> GType;
    pub fn gtk_font_selection_new() -> *mut GtkWidget;
    pub fn gtk_font_selection_get_face(fontsel: *mut GtkFontSelection)
        -> *mut pango::PangoFontFace;
    pub fn gtk_font_selection_get_face_list(fontsel: *mut GtkFontSelection) -> *mut GtkWidget;
    pub fn gtk_font_selection_get_family(
        fontsel: *mut GtkFontSelection,
    ) -> *mut pango::PangoFontFamily;
    pub fn gtk_font_selection_get_family_list(fontsel: *mut GtkFontSelection) -> *mut GtkWidget;
    pub fn gtk_font_selection_get_font_name(fontsel: *mut GtkFontSelection) -> *mut c_char;
    pub fn gtk_font_selection_get_preview_entry(fontsel: *mut GtkFontSelection) -> *mut GtkWidget;
    pub fn gtk_font_selection_get_preview_text(fontsel: *mut GtkFontSelection) -> *const c_char;
    pub fn gtk_font_selection_get_size(fontsel: *mut GtkFontSelection) -> c_int;
    pub fn gtk_font_selection_get_size_entry(fontsel: *mut GtkFontSelection) -> *mut GtkWidget;
    pub fn gtk_font_selection_get_size_list(fontsel: *mut GtkFontSelection) -> *mut GtkWidget;
    pub fn gtk_font_selection_set_font_name(
        fontsel: *mut GtkFontSelection,
        fontname: *const c_char,
    ) -> gboolean;
    pub fn gtk_font_selection_set_preview_text(fontsel: *mut GtkFontSelection, text: *const c_char);

    //=========================================================================
    // GtkFontSelectionDialog
    //=========================================================================
    pub fn gtk_font_selection_dialog_get_type() -> GType;
    pub fn gtk_font_selection_dialog_new(title: *const c_char) -> *mut GtkWidget;
    pub fn gtk_font_selection_dialog_get_cancel_button(
        fsd: *mut GtkFontSelectionDialog,
    ) -> *mut GtkWidget;
    pub fn gtk_font_selection_dialog_get_font_name(fsd: *mut GtkFontSelectionDialog)
        -> *mut c_char;
    pub fn gtk_font_selection_dialog_get_font_selection(
        fsd: *mut GtkFontSelectionDialog,
    ) -> *mut GtkWidget;
    pub fn gtk_font_selection_dialog_get_ok_button(
        fsd: *mut GtkFontSelectionDialog,
    ) -> *mut GtkWidget;
    pub fn gtk_font_selection_dialog_get_preview_text(
        fsd: *mut GtkFontSelectionDialog,
    ) -> *const c_char;
    pub fn gtk_font_selection_dialog_set_font_name(
        fsd: *mut GtkFontSelectionDialog,
        fontname: *const c_char,
    ) -> gboolean;
    pub fn gtk_font_selection_dialog_set_preview_text(
        fsd: *mut GtkFontSelectionDialog,
        text: *const c_char,
    );

    //=========================================================================
    // GtkFrame
    //=========================================================================
    pub fn gtk_frame_get_type() -> GType;
    pub fn gtk_frame_new(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_frame_get_label(frame: *mut GtkFrame) -> *const c_char;
    pub fn gtk_frame_get_label_align(
        frame: *mut GtkFrame,
        xalign: *mut c_float,
        yalign: *mut c_float,
    );
    pub fn gtk_frame_get_label_widget(frame: *mut GtkFrame) -> *mut GtkWidget;
    pub fn gtk_frame_get_shadow_type(frame: *mut GtkFrame) -> GtkShadowType;
    pub fn gtk_frame_set_label(frame: *mut GtkFrame, label: *const c_char);
    pub fn gtk_frame_set_label_align(frame: *mut GtkFrame, xalign: c_float, yalign: c_float);
    pub fn gtk_frame_set_label_widget(frame: *mut GtkFrame, label_widget: *mut GtkWidget);
    pub fn gtk_frame_set_shadow_type(frame: *mut GtkFrame, type_: GtkShadowType);

    //=========================================================================
    // GtkFrameAccessible
    //=========================================================================
    pub fn gtk_frame_accessible_get_type() -> GType;

    //=========================================================================
    // GtkGLArea
    //=========================================================================
    pub fn gtk_gl_area_get_type() -> GType;
    pub fn gtk_gl_area_new() -> *mut GtkWidget;
    pub fn gtk_gl_area_attach_buffers(area: *mut GtkGLArea);
    pub fn gtk_gl_area_get_auto_render(area: *mut GtkGLArea) -> gboolean;
    pub fn gtk_gl_area_get_context(area: *mut GtkGLArea) -> *mut gdk::GdkGLContext;
    pub fn gtk_gl_area_get_error(area: *mut GtkGLArea) -> *mut glib::GError;
    pub fn gtk_gl_area_get_has_alpha(area: *mut GtkGLArea) -> gboolean;
    pub fn gtk_gl_area_get_has_depth_buffer(area: *mut GtkGLArea) -> gboolean;
    pub fn gtk_gl_area_get_has_stencil_buffer(area: *mut GtkGLArea) -> gboolean;
    pub fn gtk_gl_area_get_required_version(
        area: *mut GtkGLArea,
        major: *mut c_int,
        minor: *mut c_int,
    );
    pub fn gtk_gl_area_get_use_es(area: *mut GtkGLArea) -> gboolean;
    pub fn gtk_gl_area_make_current(area: *mut GtkGLArea);
    pub fn gtk_gl_area_queue_render(area: *mut GtkGLArea);
    pub fn gtk_gl_area_set_auto_render(area: *mut GtkGLArea, auto_render: gboolean);
    pub fn gtk_gl_area_set_error(area: *mut GtkGLArea, error: *const glib::GError);
    pub fn gtk_gl_area_set_has_alpha(area: *mut GtkGLArea, has_alpha: gboolean);
    pub fn gtk_gl_area_set_has_depth_buffer(area: *mut GtkGLArea, has_depth_buffer: gboolean);
    pub fn gtk_gl_area_set_has_stencil_buffer(area: *mut GtkGLArea, has_stencil_buffer: gboolean);
    pub fn gtk_gl_area_set_required_version(area: *mut GtkGLArea, major: c_int, minor: c_int);
    pub fn gtk_gl_area_set_use_es(area: *mut GtkGLArea, use_es: gboolean);

    //=========================================================================
    // GtkGesture
    //=========================================================================
    pub fn gtk_gesture_get_type() -> GType;
    pub fn gtk_gesture_get_bounding_box(
        gesture: *mut GtkGesture,
        rect: *mut gdk::GdkRectangle,
    ) -> gboolean;
    pub fn gtk_gesture_get_bounding_box_center(
        gesture: *mut GtkGesture,
        x: *mut c_double,
        y: *mut c_double,
    ) -> gboolean;
    pub fn gtk_gesture_get_device(gesture: *mut GtkGesture) -> *mut gdk::GdkDevice;
    pub fn gtk_gesture_get_group(gesture: *mut GtkGesture) -> *mut glib::GList;
    pub fn gtk_gesture_get_last_event(
        gesture: *mut GtkGesture,
        sequence: *mut gdk::GdkEventSequence,
    ) -> *const gdk::GdkEvent;
    pub fn gtk_gesture_get_last_updated_sequence(
        gesture: *mut GtkGesture,
    ) -> *mut gdk::GdkEventSequence;
    pub fn gtk_gesture_get_point(
        gesture: *mut GtkGesture,
        sequence: *mut gdk::GdkEventSequence,
        x: *mut c_double,
        y: *mut c_double,
    ) -> gboolean;
    pub fn gtk_gesture_get_sequence_state(
        gesture: *mut GtkGesture,
        sequence: *mut gdk::GdkEventSequence,
    ) -> GtkEventSequenceState;
    pub fn gtk_gesture_get_sequences(gesture: *mut GtkGesture) -> *mut glib::GList;
    pub fn gtk_gesture_get_window(gesture: *mut GtkGesture) -> *mut gdk::GdkWindow;
    pub fn gtk_gesture_group(group_gesture: *mut GtkGesture, gesture: *mut GtkGesture);
    pub fn gtk_gesture_handles_sequence(
        gesture: *mut GtkGesture,
        sequence: *mut gdk::GdkEventSequence,
    ) -> gboolean;
    pub fn gtk_gesture_is_active(gesture: *mut GtkGesture) -> gboolean;
    pub fn gtk_gesture_is_grouped_with(
        gesture: *mut GtkGesture,
        other: *mut GtkGesture,
    ) -> gboolean;
    pub fn gtk_gesture_is_recognized(gesture: *mut GtkGesture) -> gboolean;
    pub fn gtk_gesture_set_sequence_state(
        gesture: *mut GtkGesture,
        sequence: *mut gdk::GdkEventSequence,
        state: GtkEventSequenceState,
    ) -> gboolean;
    pub fn gtk_gesture_set_state(
        gesture: *mut GtkGesture,
        state: GtkEventSequenceState,
    ) -> gboolean;
    pub fn gtk_gesture_set_window(gesture: *mut GtkGesture, window: *mut gdk::GdkWindow);
    pub fn gtk_gesture_ungroup(gesture: *mut GtkGesture);

    //=========================================================================
    // GtkGestureDrag
    //=========================================================================
    pub fn gtk_gesture_drag_get_type() -> GType;
    pub fn gtk_gesture_drag_new(widget: *mut GtkWidget) -> *mut GtkGesture;
    pub fn gtk_gesture_drag_get_offset(
        gesture: *mut GtkGestureDrag,
        x: *mut c_double,
        y: *mut c_double,
    ) -> gboolean;
    pub fn gtk_gesture_drag_get_start_point(
        gesture: *mut GtkGestureDrag,
        x: *mut c_double,
        y: *mut c_double,
    ) -> gboolean;

    //=========================================================================
    // GtkGestureLongPress
    //=========================================================================
    pub fn gtk_gesture_long_press_get_type() -> GType;
    pub fn gtk_gesture_long_press_new(widget: *mut GtkWidget) -> *mut GtkGesture;

    //=========================================================================
    // GtkGestureMultiPress
    //=========================================================================
    pub fn gtk_gesture_multi_press_get_type() -> GType;
    pub fn gtk_gesture_multi_press_new(widget: *mut GtkWidget) -> *mut GtkGesture;
    pub fn gtk_gesture_multi_press_get_area(
        gesture: *mut GtkGestureMultiPress,
        rect: *mut gdk::GdkRectangle,
    ) -> gboolean;
    pub fn gtk_gesture_multi_press_set_area(
        gesture: *mut GtkGestureMultiPress,
        rect: *const gdk::GdkRectangle,
    );

    //=========================================================================
    // GtkGesturePan
    //=========================================================================
    pub fn gtk_gesture_pan_get_type() -> GType;
    pub fn gtk_gesture_pan_new(
        widget: *mut GtkWidget,
        orientation: GtkOrientation,
    ) -> *mut GtkGesture;
    pub fn gtk_gesture_pan_get_orientation(gesture: *mut GtkGesturePan) -> GtkOrientation;
    pub fn gtk_gesture_pan_set_orientation(
        gesture: *mut GtkGesturePan,
        orientation: GtkOrientation,
    );

    //=========================================================================
    // GtkGestureRotate
    //=========================================================================
    pub fn gtk_gesture_rotate_get_type() -> GType;
    pub fn gtk_gesture_rotate_new(widget: *mut GtkWidget) -> *mut GtkGesture;
    pub fn gtk_gesture_rotate_get_angle_delta(gesture: *mut GtkGestureRotate) -> c_double;

    //=========================================================================
    // GtkGestureSingle
    //=========================================================================
    pub fn gtk_gesture_single_get_type() -> GType;
    pub fn gtk_gesture_single_get_button(gesture: *mut GtkGestureSingle) -> c_uint;
    pub fn gtk_gesture_single_get_current_button(gesture: *mut GtkGestureSingle) -> c_uint;
    pub fn gtk_gesture_single_get_current_sequence(
        gesture: *mut GtkGestureSingle,
    ) -> *mut gdk::GdkEventSequence;
    pub fn gtk_gesture_single_get_exclusive(gesture: *mut GtkGestureSingle) -> gboolean;
    pub fn gtk_gesture_single_get_touch_only(gesture: *mut GtkGestureSingle) -> gboolean;
    pub fn gtk_gesture_single_set_button(gesture: *mut GtkGestureSingle, button: c_uint);
    pub fn gtk_gesture_single_set_exclusive(gesture: *mut GtkGestureSingle, exclusive: gboolean);
    pub fn gtk_gesture_single_set_touch_only(gesture: *mut GtkGestureSingle, touch_only: gboolean);

    //=========================================================================
    // GtkGestureStylus
    //=========================================================================
    pub fn gtk_gesture_stylus_get_type() -> GType;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_gesture_stylus_new(widget: *mut GtkWidget) -> *mut GtkGesture;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_gesture_stylus_get_axes(
        gesture: *mut GtkGestureStylus,
        axes: *mut gdk::GdkAxisUse,
        values: *mut *mut c_double,
    ) -> gboolean;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_gesture_stylus_get_axis(
        gesture: *mut GtkGestureStylus,
        axis: gdk::GdkAxisUse,
        value: *mut c_double,
    ) -> gboolean;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_gesture_stylus_get_device_tool(
        gesture: *mut GtkGestureStylus,
    ) -> *mut gdk::GdkDeviceTool;

    //=========================================================================
    // GtkGestureSwipe
    //=========================================================================
    pub fn gtk_gesture_swipe_get_type() -> GType;
    pub fn gtk_gesture_swipe_new(widget: *mut GtkWidget) -> *mut GtkGesture;
    pub fn gtk_gesture_swipe_get_velocity(
        gesture: *mut GtkGestureSwipe,
        velocity_x: *mut c_double,
        velocity_y: *mut c_double,
    ) -> gboolean;

    //=========================================================================
    // GtkGestureZoom
    //=========================================================================
    pub fn gtk_gesture_zoom_get_type() -> GType;
    pub fn gtk_gesture_zoom_new(widget: *mut GtkWidget) -> *mut GtkGesture;
    pub fn gtk_gesture_zoom_get_scale_delta(gesture: *mut GtkGestureZoom) -> c_double;

    //=========================================================================
    // GtkGrid
    //=========================================================================
    pub fn gtk_grid_get_type() -> GType;
    pub fn gtk_grid_new() -> *mut GtkWidget;
    pub fn gtk_grid_attach(
        grid: *mut GtkGrid,
        child: *mut GtkWidget,
        left: c_int,
        top: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_grid_attach_next_to(
        grid: *mut GtkGrid,
        child: *mut GtkWidget,
        sibling: *mut GtkWidget,
        side: GtkPositionType,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_grid_get_baseline_row(grid: *mut GtkGrid) -> c_int;
    pub fn gtk_grid_get_child_at(grid: *mut GtkGrid, left: c_int, top: c_int) -> *mut GtkWidget;
    pub fn gtk_grid_get_column_homogeneous(grid: *mut GtkGrid) -> gboolean;
    pub fn gtk_grid_get_column_spacing(grid: *mut GtkGrid) -> c_uint;
    pub fn gtk_grid_get_row_baseline_position(
        grid: *mut GtkGrid,
        row: c_int,
    ) -> GtkBaselinePosition;
    pub fn gtk_grid_get_row_homogeneous(grid: *mut GtkGrid) -> gboolean;
    pub fn gtk_grid_get_row_spacing(grid: *mut GtkGrid) -> c_uint;
    pub fn gtk_grid_insert_column(grid: *mut GtkGrid, position: c_int);
    pub fn gtk_grid_insert_next_to(
        grid: *mut GtkGrid,
        sibling: *mut GtkWidget,
        side: GtkPositionType,
    );
    pub fn gtk_grid_insert_row(grid: *mut GtkGrid, position: c_int);
    pub fn gtk_grid_remove_column(grid: *mut GtkGrid, position: c_int);
    pub fn gtk_grid_remove_row(grid: *mut GtkGrid, position: c_int);
    pub fn gtk_grid_set_baseline_row(grid: *mut GtkGrid, row: c_int);
    pub fn gtk_grid_set_column_homogeneous(grid: *mut GtkGrid, homogeneous: gboolean);
    pub fn gtk_grid_set_column_spacing(grid: *mut GtkGrid, spacing: c_uint);
    pub fn gtk_grid_set_row_baseline_position(
        grid: *mut GtkGrid,
        row: c_int,
        pos: GtkBaselinePosition,
    );
    pub fn gtk_grid_set_row_homogeneous(grid: *mut GtkGrid, homogeneous: gboolean);
    pub fn gtk_grid_set_row_spacing(grid: *mut GtkGrid, spacing: c_uint);

    //=========================================================================
    // GtkHBox
    //=========================================================================
    pub fn gtk_hbox_get_type() -> GType;
    pub fn gtk_hbox_new(homogeneous: gboolean, spacing: c_int) -> *mut GtkWidget;

    //=========================================================================
    // GtkHButtonBox
    //=========================================================================
    pub fn gtk_hbutton_box_get_type() -> GType;
    pub fn gtk_hbutton_box_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkHPaned
    //=========================================================================
    pub fn gtk_hpaned_get_type() -> GType;
    pub fn gtk_hpaned_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkHSV
    //=========================================================================
    pub fn gtk_hsv_get_type() -> GType;
    pub fn gtk_hsv_new() -> *mut GtkWidget;
    pub fn gtk_hsv_to_rgb(
        h: c_double,
        s: c_double,
        v: c_double,
        r: *mut c_double,
        g: *mut c_double,
        b: *mut c_double,
    );
    pub fn gtk_hsv_get_color(
        hsv: *mut GtkHSV,
        h: *mut c_double,
        s: *mut c_double,
        v: *mut c_double,
    );
    pub fn gtk_hsv_get_metrics(hsv: *mut GtkHSV, size: *mut c_int, ring_width: *mut c_int);
    pub fn gtk_hsv_is_adjusting(hsv: *mut GtkHSV) -> gboolean;
    pub fn gtk_hsv_set_color(hsv: *mut GtkHSV, h: c_double, s: c_double, v: c_double);
    pub fn gtk_hsv_set_metrics(hsv: *mut GtkHSV, size: c_int, ring_width: c_int);

    //=========================================================================
    // GtkHScale
    //=========================================================================
    pub fn gtk_hscale_get_type() -> GType;
    pub fn gtk_hscale_new(adjustment: *mut GtkAdjustment) -> *mut GtkWidget;
    pub fn gtk_hscale_new_with_range(
        min: c_double,
        max: c_double,
        step: c_double,
    ) -> *mut GtkWidget;

    //=========================================================================
    // GtkHScrollbar
    //=========================================================================
    pub fn gtk_hscrollbar_get_type() -> GType;
    pub fn gtk_hscrollbar_new(adjustment: *mut GtkAdjustment) -> *mut GtkWidget;

    //=========================================================================
    // GtkHSeparator
    //=========================================================================
    pub fn gtk_hseparator_get_type() -> GType;
    pub fn gtk_hseparator_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkHandleBox
    //=========================================================================
    pub fn gtk_handle_box_get_type() -> GType;
    pub fn gtk_handle_box_new() -> *mut GtkWidget;
    pub fn gtk_handle_box_get_child_detached(handle_box: *mut GtkHandleBox) -> gboolean;
    pub fn gtk_handle_box_get_handle_position(handle_box: *mut GtkHandleBox) -> GtkPositionType;
    pub fn gtk_handle_box_get_shadow_type(handle_box: *mut GtkHandleBox) -> GtkShadowType;
    pub fn gtk_handle_box_get_snap_edge(handle_box: *mut GtkHandleBox) -> GtkPositionType;
    pub fn gtk_handle_box_set_handle_position(
        handle_box: *mut GtkHandleBox,
        position: GtkPositionType,
    );
    pub fn gtk_handle_box_set_shadow_type(handle_box: *mut GtkHandleBox, type_: GtkShadowType);
    pub fn gtk_handle_box_set_snap_edge(handle_box: *mut GtkHandleBox, edge: GtkPositionType);

    //=========================================================================
    // GtkHeaderBar
    //=========================================================================
    pub fn gtk_header_bar_get_type() -> GType;
    pub fn gtk_header_bar_new() -> *mut GtkWidget;
    pub fn gtk_header_bar_get_custom_title(bar: *mut GtkHeaderBar) -> *mut GtkWidget;
    pub fn gtk_header_bar_get_decoration_layout(bar: *mut GtkHeaderBar) -> *const c_char;
    pub fn gtk_header_bar_get_has_subtitle(bar: *mut GtkHeaderBar) -> gboolean;
    pub fn gtk_header_bar_get_show_close_button(bar: *mut GtkHeaderBar) -> gboolean;
    pub fn gtk_header_bar_get_subtitle(bar: *mut GtkHeaderBar) -> *const c_char;
    pub fn gtk_header_bar_get_title(bar: *mut GtkHeaderBar) -> *const c_char;
    pub fn gtk_header_bar_pack_end(bar: *mut GtkHeaderBar, child: *mut GtkWidget);
    pub fn gtk_header_bar_pack_start(bar: *mut GtkHeaderBar, child: *mut GtkWidget);
    pub fn gtk_header_bar_set_custom_title(bar: *mut GtkHeaderBar, title_widget: *mut GtkWidget);
    pub fn gtk_header_bar_set_decoration_layout(bar: *mut GtkHeaderBar, layout: *const c_char);
    pub fn gtk_header_bar_set_has_subtitle(bar: *mut GtkHeaderBar, setting: gboolean);
    pub fn gtk_header_bar_set_show_close_button(bar: *mut GtkHeaderBar, setting: gboolean);
    pub fn gtk_header_bar_set_subtitle(bar: *mut GtkHeaderBar, subtitle: *const c_char);
    pub fn gtk_header_bar_set_title(bar: *mut GtkHeaderBar, title: *const c_char);

    //=========================================================================
    // GtkHeaderBarAccessible
    //=========================================================================
    #[cfg(feature = "v3_24_11")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24_11")))]
    pub fn gtk_header_bar_accessible_get_type() -> GType;

    //=========================================================================
    // GtkIMContext
    //=========================================================================
    pub fn gtk_im_context_get_type() -> GType;
    pub fn gtk_im_context_delete_surrounding(
        context: *mut GtkIMContext,
        offset: c_int,
        n_chars: c_int,
    ) -> gboolean;
    pub fn gtk_im_context_filter_keypress(
        context: *mut GtkIMContext,
        event: *mut gdk::GdkEventKey,
    ) -> gboolean;
    pub fn gtk_im_context_focus_in(context: *mut GtkIMContext);
    pub fn gtk_im_context_focus_out(context: *mut GtkIMContext);
    pub fn gtk_im_context_get_preedit_string(
        context: *mut GtkIMContext,
        str: *mut *mut c_char,
        attrs: *mut *mut pango::PangoAttrList,
        cursor_pos: *mut c_int,
    );
    pub fn gtk_im_context_get_surrounding(
        context: *mut GtkIMContext,
        text: *mut *mut c_char,
        cursor_index: *mut c_int,
    ) -> gboolean;
    pub fn gtk_im_context_reset(context: *mut GtkIMContext);
    pub fn gtk_im_context_set_client_window(
        context: *mut GtkIMContext,
        window: *mut gdk::GdkWindow,
    );
    pub fn gtk_im_context_set_cursor_location(
        context: *mut GtkIMContext,
        area: *const gdk::GdkRectangle,
    );
    pub fn gtk_im_context_set_surrounding(
        context: *mut GtkIMContext,
        text: *const c_char,
        len: c_int,
        cursor_index: c_int,
    );
    pub fn gtk_im_context_set_use_preedit(context: *mut GtkIMContext, use_preedit: gboolean);

    //=========================================================================
    // GtkIMContextSimple
    //=========================================================================
    pub fn gtk_im_context_simple_get_type() -> GType;
    pub fn gtk_im_context_simple_new() -> *mut GtkIMContext;
    pub fn gtk_im_context_simple_add_compose_file(
        context_simple: *mut GtkIMContextSimple,
        compose_file: *const c_char,
    );
    pub fn gtk_im_context_simple_add_table(
        context_simple: *mut GtkIMContextSimple,
        data: *mut u16,
        max_seq_len: c_int,
        n_seqs: c_int,
    );

    //=========================================================================
    // GtkIMMulticontext
    //=========================================================================
    pub fn gtk_im_multicontext_get_type() -> GType;
    pub fn gtk_im_multicontext_new() -> *mut GtkIMContext;
    pub fn gtk_im_multicontext_append_menuitems(
        context: *mut GtkIMMulticontext,
        menushell: *mut GtkMenuShell,
    );
    pub fn gtk_im_multicontext_get_context_id(context: *mut GtkIMMulticontext) -> *const c_char;
    pub fn gtk_im_multicontext_set_context_id(
        context: *mut GtkIMMulticontext,
        context_id: *const c_char,
    );

    //=========================================================================
    // GtkIconFactory
    //=========================================================================
    pub fn gtk_icon_factory_get_type() -> GType;
    pub fn gtk_icon_factory_new() -> *mut GtkIconFactory;
    pub fn gtk_icon_factory_lookup_default(stock_id: *const c_char) -> *mut GtkIconSet;
    pub fn gtk_icon_factory_add(
        factory: *mut GtkIconFactory,
        stock_id: *const c_char,
        icon_set: *mut GtkIconSet,
    );
    pub fn gtk_icon_factory_add_default(factory: *mut GtkIconFactory);
    pub fn gtk_icon_factory_lookup(
        factory: *mut GtkIconFactory,
        stock_id: *const c_char,
    ) -> *mut GtkIconSet;
    pub fn gtk_icon_factory_remove_default(factory: *mut GtkIconFactory);

    //=========================================================================
    // GtkIconInfo
    //=========================================================================
    pub fn gtk_icon_info_get_type() -> GType;
    pub fn gtk_icon_info_new_for_pixbuf(
        icon_theme: *mut GtkIconTheme,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    ) -> *mut GtkIconInfo;
    pub fn gtk_icon_info_copy(icon_info: *mut GtkIconInfo) -> *mut GtkIconInfo;
    pub fn gtk_icon_info_free(icon_info: *mut GtkIconInfo);
    pub fn gtk_icon_info_get_attach_points(
        icon_info: *mut GtkIconInfo,
        points: *mut *mut gdk::GdkPoint,
        n_points: *mut c_int,
    ) -> gboolean;
    pub fn gtk_icon_info_get_base_scale(icon_info: *mut GtkIconInfo) -> c_int;
    pub fn gtk_icon_info_get_base_size(icon_info: *mut GtkIconInfo) -> c_int;
    pub fn gtk_icon_info_get_builtin_pixbuf(
        icon_info: *mut GtkIconInfo,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_info_get_display_name(icon_info: *mut GtkIconInfo) -> *const c_char;
    pub fn gtk_icon_info_get_embedded_rect(
        icon_info: *mut GtkIconInfo,
        rectangle: *mut gdk::GdkRectangle,
    ) -> gboolean;
    pub fn gtk_icon_info_get_filename(icon_info: *mut GtkIconInfo) -> *const c_char;
    pub fn gtk_icon_info_is_symbolic(icon_info: *mut GtkIconInfo) -> gboolean;
    pub fn gtk_icon_info_load_icon(
        icon_info: *mut GtkIconInfo,
        error: *mut *mut glib::GError,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_info_load_icon_async(
        icon_info: *mut GtkIconInfo,
        cancellable: *mut gio::GCancellable,
        callback: gio::GAsyncReadyCallback,
        user_data: gpointer,
    );
    pub fn gtk_icon_info_load_icon_finish(
        icon_info: *mut GtkIconInfo,
        res: *mut gio::GAsyncResult,
        error: *mut *mut glib::GError,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_info_load_surface(
        icon_info: *mut GtkIconInfo,
        for_window: *mut gdk::GdkWindow,
        error: *mut *mut glib::GError,
    ) -> *mut cairo::cairo_surface_t;
    pub fn gtk_icon_info_load_symbolic(
        icon_info: *mut GtkIconInfo,
        fg: *const gdk::GdkRGBA,
        success_color: *const gdk::GdkRGBA,
        warning_color: *const gdk::GdkRGBA,
        error_color: *const gdk::GdkRGBA,
        was_symbolic: *mut gboolean,
        error: *mut *mut glib::GError,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_info_load_symbolic_async(
        icon_info: *mut GtkIconInfo,
        fg: *const gdk::GdkRGBA,
        success_color: *const gdk::GdkRGBA,
        warning_color: *const gdk::GdkRGBA,
        error_color: *const gdk::GdkRGBA,
        cancellable: *mut gio::GCancellable,
        callback: gio::GAsyncReadyCallback,
        user_data: gpointer,
    );
    pub fn gtk_icon_info_load_symbolic_finish(
        icon_info: *mut GtkIconInfo,
        res: *mut gio::GAsyncResult,
        was_symbolic: *mut gboolean,
        error: *mut *mut glib::GError,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_info_load_symbolic_for_context(
        icon_info: *mut GtkIconInfo,
        context: *mut GtkStyleContext,
        was_symbolic: *mut gboolean,
        error: *mut *mut glib::GError,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_info_load_symbolic_for_context_async(
        icon_info: *mut GtkIconInfo,
        context: *mut GtkStyleContext,
        cancellable: *mut gio::GCancellable,
        callback: gio::GAsyncReadyCallback,
        user_data: gpointer,
    );
    pub fn gtk_icon_info_load_symbolic_for_context_finish(
        icon_info: *mut GtkIconInfo,
        res: *mut gio::GAsyncResult,
        was_symbolic: *mut gboolean,
        error: *mut *mut glib::GError,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_info_load_symbolic_for_style(
        icon_info: *mut GtkIconInfo,
        style: *mut GtkStyle,
        state: GtkStateType,
        was_symbolic: *mut gboolean,
        error: *mut *mut glib::GError,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_info_set_raw_coordinates(
        icon_info: *mut GtkIconInfo,
        raw_coordinates: gboolean,
    );

    //=========================================================================
    // GtkIconTheme
    //=========================================================================
    pub fn gtk_icon_theme_get_type() -> GType;
    pub fn gtk_icon_theme_new() -> *mut GtkIconTheme;
    pub fn gtk_icon_theme_add_builtin_icon(
        icon_name: *const c_char,
        size: c_int,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    );
    pub fn gtk_icon_theme_get_default() -> *mut GtkIconTheme;
    pub fn gtk_icon_theme_get_for_screen(screen: *mut gdk::GdkScreen) -> *mut GtkIconTheme;
    pub fn gtk_icon_theme_add_resource_path(icon_theme: *mut GtkIconTheme, path: *const c_char);
    pub fn gtk_icon_theme_append_search_path(icon_theme: *mut GtkIconTheme, path: *const c_char);
    pub fn gtk_icon_theme_choose_icon(
        icon_theme: *mut GtkIconTheme,
        icon_names: *mut *const c_char,
        size: c_int,
        flags: GtkIconLookupFlags,
    ) -> *mut GtkIconInfo;
    pub fn gtk_icon_theme_choose_icon_for_scale(
        icon_theme: *mut GtkIconTheme,
        icon_names: *mut *const c_char,
        size: c_int,
        scale: c_int,
        flags: GtkIconLookupFlags,
    ) -> *mut GtkIconInfo;
    pub fn gtk_icon_theme_get_example_icon_name(icon_theme: *mut GtkIconTheme) -> *mut c_char;
    pub fn gtk_icon_theme_get_icon_sizes(
        icon_theme: *mut GtkIconTheme,
        icon_name: *const c_char,
    ) -> *mut c_int;
    pub fn gtk_icon_theme_get_search_path(
        icon_theme: *mut GtkIconTheme,
        path: *mut *mut *mut c_char,
        n_elements: *mut c_int,
    );
    pub fn gtk_icon_theme_has_icon(
        icon_theme: *mut GtkIconTheme,
        icon_name: *const c_char,
    ) -> gboolean;
    pub fn gtk_icon_theme_list_contexts(icon_theme: *mut GtkIconTheme) -> *mut glib::GList;
    pub fn gtk_icon_theme_list_icons(
        icon_theme: *mut GtkIconTheme,
        context: *const c_char,
    ) -> *mut glib::GList;
    pub fn gtk_icon_theme_load_icon(
        icon_theme: *mut GtkIconTheme,
        icon_name: *const c_char,
        size: c_int,
        flags: GtkIconLookupFlags,
        error: *mut *mut glib::GError,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_theme_load_icon_for_scale(
        icon_theme: *mut GtkIconTheme,
        icon_name: *const c_char,
        size: c_int,
        scale: c_int,
        flags: GtkIconLookupFlags,
        error: *mut *mut glib::GError,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_icon_theme_load_surface(
        icon_theme: *mut GtkIconTheme,
        icon_name: *const c_char,
        size: c_int,
        scale: c_int,
        for_window: *mut gdk::GdkWindow,
        flags: GtkIconLookupFlags,
        error: *mut *mut glib::GError,
    ) -> *mut cairo::cairo_surface_t;
    pub fn gtk_icon_theme_lookup_by_gicon(
        icon_theme: *mut GtkIconTheme,
        icon: *mut gio::GIcon,
        size: c_int,
        flags: GtkIconLookupFlags,
    ) -> *mut GtkIconInfo;
    pub fn gtk_icon_theme_lookup_by_gicon_for_scale(
        icon_theme: *mut GtkIconTheme,
        icon: *mut gio::GIcon,
        size: c_int,
        scale: c_int,
        flags: GtkIconLookupFlags,
    ) -> *mut GtkIconInfo;
    pub fn gtk_icon_theme_lookup_icon(
        icon_theme: *mut GtkIconTheme,
        icon_name: *const c_char,
        size: c_int,
        flags: GtkIconLookupFlags,
    ) -> *mut GtkIconInfo;
    pub fn gtk_icon_theme_lookup_icon_for_scale(
        icon_theme: *mut GtkIconTheme,
        icon_name: *const c_char,
        size: c_int,
        scale: c_int,
        flags: GtkIconLookupFlags,
    ) -> *mut GtkIconInfo;
    pub fn gtk_icon_theme_prepend_search_path(icon_theme: *mut GtkIconTheme, path: *const c_char);
    pub fn gtk_icon_theme_rescan_if_needed(icon_theme: *mut GtkIconTheme) -> gboolean;
    pub fn gtk_icon_theme_set_custom_theme(
        icon_theme: *mut GtkIconTheme,
        theme_name: *const c_char,
    );
    pub fn gtk_icon_theme_set_screen(icon_theme: *mut GtkIconTheme, screen: *mut gdk::GdkScreen);
    pub fn gtk_icon_theme_set_search_path(
        icon_theme: *mut GtkIconTheme,
        path: *mut *const c_char,
        n_elements: c_int,
    );

    //=========================================================================
    // GtkIconView
    //=========================================================================
    pub fn gtk_icon_view_get_type() -> GType;
    pub fn gtk_icon_view_new() -> *mut GtkWidget;
    pub fn gtk_icon_view_new_with_area(area: *mut GtkCellArea) -> *mut GtkWidget;
    pub fn gtk_icon_view_new_with_model(model: *mut GtkTreeModel) -> *mut GtkWidget;
    pub fn gtk_icon_view_convert_widget_to_bin_window_coords(
        icon_view: *mut GtkIconView,
        wx: c_int,
        wy: c_int,
        bx: *mut c_int,
        by: *mut c_int,
    );
    pub fn gtk_icon_view_create_drag_icon(
        icon_view: *mut GtkIconView,
        path: *mut GtkTreePath,
    ) -> *mut cairo::cairo_surface_t;
    pub fn gtk_icon_view_enable_model_drag_dest(
        icon_view: *mut GtkIconView,
        targets: *const GtkTargetEntry,
        n_targets: c_int,
        actions: gdk::GdkDragAction,
    );
    pub fn gtk_icon_view_enable_model_drag_source(
        icon_view: *mut GtkIconView,
        start_button_mask: gdk::GdkModifierType,
        targets: *const GtkTargetEntry,
        n_targets: c_int,
        actions: gdk::GdkDragAction,
    );
    pub fn gtk_icon_view_get_activate_on_single_click(icon_view: *mut GtkIconView) -> gboolean;
    pub fn gtk_icon_view_get_cell_rect(
        icon_view: *mut GtkIconView,
        path: *mut GtkTreePath,
        cell: *mut GtkCellRenderer,
        rect: *mut gdk::GdkRectangle,
    ) -> gboolean;
    pub fn gtk_icon_view_get_column_spacing(icon_view: *mut GtkIconView) -> c_int;
    pub fn gtk_icon_view_get_columns(icon_view: *mut GtkIconView) -> c_int;
    pub fn gtk_icon_view_get_cursor(
        icon_view: *mut GtkIconView,
        path: *mut *mut GtkTreePath,
        cell: *mut *mut GtkCellRenderer,
    ) -> gboolean;
    pub fn gtk_icon_view_get_dest_item_at_pos(
        icon_view: *mut GtkIconView,
        drag_x: c_int,
        drag_y: c_int,
        path: *mut *mut GtkTreePath,
        pos: *mut GtkIconViewDropPosition,
    ) -> gboolean;
    pub fn gtk_icon_view_get_drag_dest_item(
        icon_view: *mut GtkIconView,
        path: *mut *mut GtkTreePath,
        pos: *mut GtkIconViewDropPosition,
    );
    pub fn gtk_icon_view_get_item_at_pos(
        icon_view: *mut GtkIconView,
        x: c_int,
        y: c_int,
        path: *mut *mut GtkTreePath,
        cell: *mut *mut GtkCellRenderer,
    ) -> gboolean;
    pub fn gtk_icon_view_get_item_column(
        icon_view: *mut GtkIconView,
        path: *mut GtkTreePath,
    ) -> c_int;
    pub fn gtk_icon_view_get_item_orientation(icon_view: *mut GtkIconView) -> GtkOrientation;
    pub fn gtk_icon_view_get_item_padding(icon_view: *mut GtkIconView) -> c_int;
    pub fn gtk_icon_view_get_item_row(icon_view: *mut GtkIconView, path: *mut GtkTreePath)
        -> c_int;
    pub fn gtk_icon_view_get_item_width(icon_view: *mut GtkIconView) -> c_int;
    pub fn gtk_icon_view_get_margin(icon_view: *mut GtkIconView) -> c_int;
    pub fn gtk_icon_view_get_markup_column(icon_view: *mut GtkIconView) -> c_int;
    pub fn gtk_icon_view_get_model(icon_view: *mut GtkIconView) -> *mut GtkTreeModel;
    pub fn gtk_icon_view_get_path_at_pos(
        icon_view: *mut GtkIconView,
        x: c_int,
        y: c_int,
    ) -> *mut GtkTreePath;
    pub fn gtk_icon_view_get_pixbuf_column(icon_view: *mut GtkIconView) -> c_int;
    pub fn gtk_icon_view_get_reorderable(icon_view: *mut GtkIconView) -> gboolean;
    pub fn gtk_icon_view_get_row_spacing(icon_view: *mut GtkIconView) -> c_int;
    pub fn gtk_icon_view_get_selected_items(icon_view: *mut GtkIconView) -> *mut glib::GList;
    pub fn gtk_icon_view_get_selection_mode(icon_view: *mut GtkIconView) -> GtkSelectionMode;
    pub fn gtk_icon_view_get_spacing(icon_view: *mut GtkIconView) -> c_int;
    pub fn gtk_icon_view_get_text_column(icon_view: *mut GtkIconView) -> c_int;
    pub fn gtk_icon_view_get_tooltip_column(icon_view: *mut GtkIconView) -> c_int;
    pub fn gtk_icon_view_get_tooltip_context(
        icon_view: *mut GtkIconView,
        x: *mut c_int,
        y: *mut c_int,
        keyboard_tip: gboolean,
        model: *mut *mut GtkTreeModel,
        path: *mut *mut GtkTreePath,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_icon_view_get_visible_range(
        icon_view: *mut GtkIconView,
        start_path: *mut *mut GtkTreePath,
        end_path: *mut *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_icon_view_item_activated(icon_view: *mut GtkIconView, path: *mut GtkTreePath);
    pub fn gtk_icon_view_path_is_selected(
        icon_view: *mut GtkIconView,
        path: *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_icon_view_scroll_to_path(
        icon_view: *mut GtkIconView,
        path: *mut GtkTreePath,
        use_align: gboolean,
        row_align: c_float,
        col_align: c_float,
    );
    pub fn gtk_icon_view_select_all(icon_view: *mut GtkIconView);
    pub fn gtk_icon_view_select_path(icon_view: *mut GtkIconView, path: *mut GtkTreePath);
    pub fn gtk_icon_view_selected_foreach(
        icon_view: *mut GtkIconView,
        func: GtkIconViewForeachFunc,
        data: gpointer,
    );
    pub fn gtk_icon_view_set_activate_on_single_click(
        icon_view: *mut GtkIconView,
        single: gboolean,
    );
    pub fn gtk_icon_view_set_column_spacing(icon_view: *mut GtkIconView, column_spacing: c_int);
    pub fn gtk_icon_view_set_columns(icon_view: *mut GtkIconView, columns: c_int);
    pub fn gtk_icon_view_set_cursor(
        icon_view: *mut GtkIconView,
        path: *mut GtkTreePath,
        cell: *mut GtkCellRenderer,
        start_editing: gboolean,
    );
    pub fn gtk_icon_view_set_drag_dest_item(
        icon_view: *mut GtkIconView,
        path: *mut GtkTreePath,
        pos: GtkIconViewDropPosition,
    );
    pub fn gtk_icon_view_set_item_orientation(
        icon_view: *mut GtkIconView,
        orientation: GtkOrientation,
    );
    pub fn gtk_icon_view_set_item_padding(icon_view: *mut GtkIconView, item_padding: c_int);
    pub fn gtk_icon_view_set_item_width(icon_view: *mut GtkIconView, item_width: c_int);
    pub fn gtk_icon_view_set_margin(icon_view: *mut GtkIconView, margin: c_int);
    pub fn gtk_icon_view_set_markup_column(icon_view: *mut GtkIconView, column: c_int);
    pub fn gtk_icon_view_set_model(icon_view: *mut GtkIconView, model: *mut GtkTreeModel);
    pub fn gtk_icon_view_set_pixbuf_column(icon_view: *mut GtkIconView, column: c_int);
    pub fn gtk_icon_view_set_reorderable(icon_view: *mut GtkIconView, reorderable: gboolean);
    pub fn gtk_icon_view_set_row_spacing(icon_view: *mut GtkIconView, row_spacing: c_int);
    pub fn gtk_icon_view_set_selection_mode(icon_view: *mut GtkIconView, mode: GtkSelectionMode);
    pub fn gtk_icon_view_set_spacing(icon_view: *mut GtkIconView, spacing: c_int);
    pub fn gtk_icon_view_set_text_column(icon_view: *mut GtkIconView, column: c_int);
    pub fn gtk_icon_view_set_tooltip_cell(
        icon_view: *mut GtkIconView,
        tooltip: *mut GtkTooltip,
        path: *mut GtkTreePath,
        cell: *mut GtkCellRenderer,
    );
    pub fn gtk_icon_view_set_tooltip_column(icon_view: *mut GtkIconView, column: c_int);
    pub fn gtk_icon_view_set_tooltip_item(
        icon_view: *mut GtkIconView,
        tooltip: *mut GtkTooltip,
        path: *mut GtkTreePath,
    );
    pub fn gtk_icon_view_unselect_all(icon_view: *mut GtkIconView);
    pub fn gtk_icon_view_unselect_path(icon_view: *mut GtkIconView, path: *mut GtkTreePath);
    pub fn gtk_icon_view_unset_model_drag_dest(icon_view: *mut GtkIconView);
    pub fn gtk_icon_view_unset_model_drag_source(icon_view: *mut GtkIconView);

    //=========================================================================
    // GtkIconViewAccessible
    //=========================================================================
    pub fn gtk_icon_view_accessible_get_type() -> GType;

    //=========================================================================
    // GtkImage
    //=========================================================================
    pub fn gtk_image_get_type() -> GType;
    pub fn gtk_image_new() -> *mut GtkWidget;
    pub fn gtk_image_new_from_animation(
        animation: *mut gdk_pixbuf::GdkPixbufAnimation,
    ) -> *mut GtkWidget;
    pub fn gtk_image_new_from_file(filename: *const c_char) -> *mut GtkWidget;
    pub fn gtk_image_new_from_gicon(icon: *mut gio::GIcon, size: GtkIconSize) -> *mut GtkWidget;
    pub fn gtk_image_new_from_icon_name(
        icon_name: *const c_char,
        size: GtkIconSize,
    ) -> *mut GtkWidget;
    pub fn gtk_image_new_from_icon_set(
        icon_set: *mut GtkIconSet,
        size: GtkIconSize,
    ) -> *mut GtkWidget;
    pub fn gtk_image_new_from_pixbuf(pixbuf: *mut gdk_pixbuf::GdkPixbuf) -> *mut GtkWidget;
    pub fn gtk_image_new_from_resource(resource_path: *const c_char) -> *mut GtkWidget;
    pub fn gtk_image_new_from_stock(stock_id: *const c_char, size: GtkIconSize) -> *mut GtkWidget;
    pub fn gtk_image_new_from_surface(surface: *mut cairo::cairo_surface_t) -> *mut GtkWidget;
    pub fn gtk_image_clear(image: *mut GtkImage);
    pub fn gtk_image_get_animation(image: *mut GtkImage) -> *mut gdk_pixbuf::GdkPixbufAnimation;
    pub fn gtk_image_get_gicon(
        image: *mut GtkImage,
        gicon: *mut *mut gio::GIcon,
        size: *mut GtkIconSize,
    );
    pub fn gtk_image_get_icon_name(
        image: *mut GtkImage,
        icon_name: *mut *const c_char,
        size: *mut GtkIconSize,
    );
    pub fn gtk_image_get_icon_set(
        image: *mut GtkImage,
        icon_set: *mut *mut GtkIconSet,
        size: *mut GtkIconSize,
    );
    pub fn gtk_image_get_pixbuf(image: *mut GtkImage) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_image_get_pixel_size(image: *mut GtkImage) -> c_int;
    pub fn gtk_image_get_stock(
        image: *mut GtkImage,
        stock_id: *mut *mut c_char,
        size: *mut GtkIconSize,
    );
    pub fn gtk_image_get_storage_type(image: *mut GtkImage) -> GtkImageType;
    pub fn gtk_image_set_from_animation(
        image: *mut GtkImage,
        animation: *mut gdk_pixbuf::GdkPixbufAnimation,
    );
    pub fn gtk_image_set_from_file(image: *mut GtkImage, filename: *const c_char);
    pub fn gtk_image_set_from_gicon(image: *mut GtkImage, icon: *mut gio::GIcon, size: GtkIconSize);
    pub fn gtk_image_set_from_icon_name(
        image: *mut GtkImage,
        icon_name: *const c_char,
        size: GtkIconSize,
    );
    pub fn gtk_image_set_from_icon_set(
        image: *mut GtkImage,
        icon_set: *mut GtkIconSet,
        size: GtkIconSize,
    );
    pub fn gtk_image_set_from_pixbuf(image: *mut GtkImage, pixbuf: *mut gdk_pixbuf::GdkPixbuf);
    pub fn gtk_image_set_from_resource(image: *mut GtkImage, resource_path: *const c_char);
    pub fn gtk_image_set_from_stock(
        image: *mut GtkImage,
        stock_id: *const c_char,
        size: GtkIconSize,
    );
    pub fn gtk_image_set_from_surface(image: *mut GtkImage, surface: *mut cairo::cairo_surface_t);
    pub fn gtk_image_set_pixel_size(image: *mut GtkImage, pixel_size: c_int);

    //=========================================================================
    // GtkImageAccessible
    //=========================================================================
    pub fn gtk_image_accessible_get_type() -> GType;

    //=========================================================================
    // GtkImageCellAccessible
    //=========================================================================
    pub fn gtk_image_cell_accessible_get_type() -> GType;

    //=========================================================================
    // GtkImageMenuItem
    //=========================================================================
    pub fn gtk_image_menu_item_get_type() -> GType;
    pub fn gtk_image_menu_item_new() -> *mut GtkWidget;
    pub fn gtk_image_menu_item_new_from_stock(
        stock_id: *const c_char,
        accel_group: *mut GtkAccelGroup,
    ) -> *mut GtkWidget;
    pub fn gtk_image_menu_item_new_with_label(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_image_menu_item_new_with_mnemonic(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_image_menu_item_get_always_show_image(
        image_menu_item: *mut GtkImageMenuItem,
    ) -> gboolean;
    pub fn gtk_image_menu_item_get_image(image_menu_item: *mut GtkImageMenuItem) -> *mut GtkWidget;
    pub fn gtk_image_menu_item_get_use_stock(image_menu_item: *mut GtkImageMenuItem) -> gboolean;
    pub fn gtk_image_menu_item_set_accel_group(
        image_menu_item: *mut GtkImageMenuItem,
        accel_group: *mut GtkAccelGroup,
    );
    pub fn gtk_image_menu_item_set_always_show_image(
        image_menu_item: *mut GtkImageMenuItem,
        always_show: gboolean,
    );
    pub fn gtk_image_menu_item_set_image(
        image_menu_item: *mut GtkImageMenuItem,
        image: *mut GtkWidget,
    );
    pub fn gtk_image_menu_item_set_use_stock(
        image_menu_item: *mut GtkImageMenuItem,
        use_stock: gboolean,
    );

    //=========================================================================
    // GtkInfoBar
    //=========================================================================
    pub fn gtk_info_bar_get_type() -> GType;
    pub fn gtk_info_bar_new() -> *mut GtkWidget;
    pub fn gtk_info_bar_new_with_buttons(first_button_text: *const c_char, ...) -> *mut GtkWidget;
    pub fn gtk_info_bar_add_action_widget(
        info_bar: *mut GtkInfoBar,
        child: *mut GtkWidget,
        response_id: GtkResponseType,
    );
    pub fn gtk_info_bar_add_button(
        info_bar: *mut GtkInfoBar,
        button_text: *const c_char,
        response_id: GtkResponseType,
    ) -> *mut GtkButton;
    pub fn gtk_info_bar_add_buttons(
        info_bar: *mut GtkInfoBar,
        first_button_text: *const c_char,
        ...
    );
    pub fn gtk_info_bar_get_action_area(info_bar: *mut GtkInfoBar) -> *mut GtkBox;
    pub fn gtk_info_bar_get_content_area(info_bar: *mut GtkInfoBar) -> *mut GtkBox;
    pub fn gtk_info_bar_get_message_type(info_bar: *mut GtkInfoBar) -> GtkMessageType;
    pub fn gtk_info_bar_get_revealed(info_bar: *mut GtkInfoBar) -> gboolean;
    pub fn gtk_info_bar_get_show_close_button(info_bar: *mut GtkInfoBar) -> gboolean;
    pub fn gtk_info_bar_response(info_bar: *mut GtkInfoBar, response_id: GtkResponseType);
    pub fn gtk_info_bar_set_default_response(
        info_bar: *mut GtkInfoBar,
        response_id: GtkResponseType,
    );
    pub fn gtk_info_bar_set_message_type(info_bar: *mut GtkInfoBar, message_type: GtkMessageType);
    pub fn gtk_info_bar_set_response_sensitive(
        info_bar: *mut GtkInfoBar,
        response_id: GtkResponseType,
        setting: gboolean,
    );
    pub fn gtk_info_bar_set_revealed(info_bar: *mut GtkInfoBar, revealed: gboolean);
    pub fn gtk_info_bar_set_show_close_button(info_bar: *mut GtkInfoBar, setting: gboolean);

    //=========================================================================
    // GtkInvisible
    //=========================================================================
    pub fn gtk_invisible_get_type() -> GType;
    pub fn gtk_invisible_new() -> *mut GtkWidget;
    pub fn gtk_invisible_new_for_screen(screen: *mut gdk::GdkScreen) -> *mut GtkWidget;
    pub fn gtk_invisible_get_screen(invisible: *mut GtkInvisible) -> *mut gdk::GdkScreen;
    pub fn gtk_invisible_set_screen(invisible: *mut GtkInvisible, screen: *mut gdk::GdkScreen);

    //=========================================================================
    // GtkLabel
    //=========================================================================
    pub fn gtk_label_get_type() -> GType;
    pub fn gtk_label_new(str: *const c_char) -> *mut GtkWidget;
    pub fn gtk_label_new_with_mnemonic(str: *const c_char) -> *mut GtkWidget;
    pub fn gtk_label_get_angle(label: *mut GtkLabel) -> c_double;
    pub fn gtk_label_get_attributes(label: *mut GtkLabel) -> *mut pango::PangoAttrList;
    pub fn gtk_label_get_current_uri(label: *mut GtkLabel) -> *const c_char;
    pub fn gtk_label_get_ellipsize(label: *mut GtkLabel) -> pango::PangoEllipsizeMode;
    pub fn gtk_label_get_justify(label: *mut GtkLabel) -> GtkJustification;
    pub fn gtk_label_get_label(label: *mut GtkLabel) -> *const c_char;
    pub fn gtk_label_get_layout(label: *mut GtkLabel) -> *mut pango::PangoLayout;
    pub fn gtk_label_get_layout_offsets(label: *mut GtkLabel, x: *mut c_int, y: *mut c_int);
    pub fn gtk_label_get_line_wrap(label: *mut GtkLabel) -> gboolean;
    pub fn gtk_label_get_line_wrap_mode(label: *mut GtkLabel) -> pango::PangoWrapMode;
    pub fn gtk_label_get_lines(label: *mut GtkLabel) -> c_int;
    pub fn gtk_label_get_max_width_chars(label: *mut GtkLabel) -> c_int;
    pub fn gtk_label_get_mnemonic_keyval(label: *mut GtkLabel) -> c_uint;
    pub fn gtk_label_get_mnemonic_widget(label: *mut GtkLabel) -> *mut GtkWidget;
    pub fn gtk_label_get_selectable(label: *mut GtkLabel) -> gboolean;
    pub fn gtk_label_get_selection_bounds(
        label: *mut GtkLabel,
        start: *mut c_int,
        end: *mut c_int,
    ) -> gboolean;
    pub fn gtk_label_get_single_line_mode(label: *mut GtkLabel) -> gboolean;
    pub fn gtk_label_get_text(label: *mut GtkLabel) -> *const c_char;
    pub fn gtk_label_get_track_visited_links(label: *mut GtkLabel) -> gboolean;
    pub fn gtk_label_get_use_markup(label: *mut GtkLabel) -> gboolean;
    pub fn gtk_label_get_use_underline(label: *mut GtkLabel) -> gboolean;
    pub fn gtk_label_get_width_chars(label: *mut GtkLabel) -> c_int;
    pub fn gtk_label_get_xalign(label: *mut GtkLabel) -> c_float;
    pub fn gtk_label_get_yalign(label: *mut GtkLabel) -> c_float;
    pub fn gtk_label_select_region(label: *mut GtkLabel, start_offset: c_int, end_offset: c_int);
    pub fn gtk_label_set_angle(label: *mut GtkLabel, angle: c_double);
    pub fn gtk_label_set_attributes(label: *mut GtkLabel, attrs: *mut pango::PangoAttrList);
    pub fn gtk_label_set_ellipsize(label: *mut GtkLabel, mode: pango::PangoEllipsizeMode);
    pub fn gtk_label_set_justify(label: *mut GtkLabel, jtype: GtkJustification);
    pub fn gtk_label_set_label(label: *mut GtkLabel, str: *const c_char);
    pub fn gtk_label_set_line_wrap(label: *mut GtkLabel, wrap: gboolean);
    pub fn gtk_label_set_line_wrap_mode(label: *mut GtkLabel, wrap_mode: pango::PangoWrapMode);
    pub fn gtk_label_set_lines(label: *mut GtkLabel, lines: c_int);
    pub fn gtk_label_set_markup(label: *mut GtkLabel, str: *const c_char);
    pub fn gtk_label_set_markup_with_mnemonic(label: *mut GtkLabel, str: *const c_char);
    pub fn gtk_label_set_max_width_chars(label: *mut GtkLabel, n_chars: c_int);
    pub fn gtk_label_set_mnemonic_widget(label: *mut GtkLabel, widget: *mut GtkWidget);
    pub fn gtk_label_set_pattern(label: *mut GtkLabel, pattern: *const c_char);
    pub fn gtk_label_set_selectable(label: *mut GtkLabel, setting: gboolean);
    pub fn gtk_label_set_single_line_mode(label: *mut GtkLabel, single_line_mode: gboolean);
    pub fn gtk_label_set_text(label: *mut GtkLabel, str: *const c_char);
    pub fn gtk_label_set_text_with_mnemonic(label: *mut GtkLabel, str: *const c_char);
    pub fn gtk_label_set_track_visited_links(label: *mut GtkLabel, track_links: gboolean);
    pub fn gtk_label_set_use_markup(label: *mut GtkLabel, setting: gboolean);
    pub fn gtk_label_set_use_underline(label: *mut GtkLabel, setting: gboolean);
    pub fn gtk_label_set_width_chars(label: *mut GtkLabel, n_chars: c_int);
    pub fn gtk_label_set_xalign(label: *mut GtkLabel, xalign: c_float);
    pub fn gtk_label_set_yalign(label: *mut GtkLabel, yalign: c_float);

    //=========================================================================
    // GtkLabelAccessible
    //=========================================================================
    pub fn gtk_label_accessible_get_type() -> GType;

    //=========================================================================
    // GtkLayout
    //=========================================================================
    pub fn gtk_layout_get_type() -> GType;
    pub fn gtk_layout_new(
        hadjustment: *mut GtkAdjustment,
        vadjustment: *mut GtkAdjustment,
    ) -> *mut GtkWidget;
    pub fn gtk_layout_get_bin_window(layout: *mut GtkLayout) -> *mut gdk::GdkWindow;
    pub fn gtk_layout_get_hadjustment(layout: *mut GtkLayout) -> *mut GtkAdjustment;
    pub fn gtk_layout_get_size(layout: *mut GtkLayout, width: *mut c_uint, height: *mut c_uint);
    pub fn gtk_layout_get_vadjustment(layout: *mut GtkLayout) -> *mut GtkAdjustment;
    pub fn gtk_layout_move(
        layout: *mut GtkLayout,
        child_widget: *mut GtkWidget,
        x: c_int,
        y: c_int,
    );
    pub fn gtk_layout_put(layout: *mut GtkLayout, child_widget: *mut GtkWidget, x: c_int, y: c_int);
    pub fn gtk_layout_set_hadjustment(layout: *mut GtkLayout, adjustment: *mut GtkAdjustment);
    pub fn gtk_layout_set_size(layout: *mut GtkLayout, width: c_uint, height: c_uint);
    pub fn gtk_layout_set_vadjustment(layout: *mut GtkLayout, adjustment: *mut GtkAdjustment);

    //=========================================================================
    // GtkLevelBar
    //=========================================================================
    pub fn gtk_level_bar_get_type() -> GType;
    pub fn gtk_level_bar_new() -> *mut GtkWidget;
    pub fn gtk_level_bar_new_for_interval(
        min_value: c_double,
        max_value: c_double,
    ) -> *mut GtkWidget;
    pub fn gtk_level_bar_add_offset_value(
        self_: *mut GtkLevelBar,
        name: *const c_char,
        value: c_double,
    );
    pub fn gtk_level_bar_get_inverted(self_: *mut GtkLevelBar) -> gboolean;
    pub fn gtk_level_bar_get_max_value(self_: *mut GtkLevelBar) -> c_double;
    pub fn gtk_level_bar_get_min_value(self_: *mut GtkLevelBar) -> c_double;
    pub fn gtk_level_bar_get_mode(self_: *mut GtkLevelBar) -> GtkLevelBarMode;
    pub fn gtk_level_bar_get_offset_value(
        self_: *mut GtkLevelBar,
        name: *const c_char,
        value: *mut c_double,
    ) -> gboolean;
    pub fn gtk_level_bar_get_value(self_: *mut GtkLevelBar) -> c_double;
    pub fn gtk_level_bar_remove_offset_value(self_: *mut GtkLevelBar, name: *const c_char);
    pub fn gtk_level_bar_set_inverted(self_: *mut GtkLevelBar, inverted: gboolean);
    pub fn gtk_level_bar_set_max_value(self_: *mut GtkLevelBar, value: c_double);
    pub fn gtk_level_bar_set_min_value(self_: *mut GtkLevelBar, value: c_double);
    pub fn gtk_level_bar_set_mode(self_: *mut GtkLevelBar, mode: GtkLevelBarMode);
    pub fn gtk_level_bar_set_value(self_: *mut GtkLevelBar, value: c_double);

    //=========================================================================
    // GtkLevelBarAccessible
    //=========================================================================
    pub fn gtk_level_bar_accessible_get_type() -> GType;

    //=========================================================================
    // GtkLinkButton
    //=========================================================================
    pub fn gtk_link_button_get_type() -> GType;
    pub fn gtk_link_button_new(uri: *const c_char) -> *mut GtkWidget;
    pub fn gtk_link_button_new_with_label(
        uri: *const c_char,
        label: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_link_button_get_uri(link_button: *mut GtkLinkButton) -> *const c_char;
    pub fn gtk_link_button_get_visited(link_button: *mut GtkLinkButton) -> gboolean;
    pub fn gtk_link_button_set_uri(link_button: *mut GtkLinkButton, uri: *const c_char);
    pub fn gtk_link_button_set_visited(link_button: *mut GtkLinkButton, visited: gboolean);

    //=========================================================================
    // GtkLinkButtonAccessible
    //=========================================================================
    pub fn gtk_link_button_accessible_get_type() -> GType;

    //=========================================================================
    // GtkListBox
    //=========================================================================
    pub fn gtk_list_box_get_type() -> GType;
    pub fn gtk_list_box_new() -> *mut GtkWidget;
    pub fn gtk_list_box_bind_model(
        box_: *mut GtkListBox,
        model: *mut gio::GListModel,
        create_widget_func: GtkListBoxCreateWidgetFunc,
        user_data: gpointer,
        user_data_free_func: glib::GDestroyNotify,
    );
    pub fn gtk_list_box_drag_highlight_row(box_: *mut GtkListBox, row: *mut GtkListBoxRow);
    pub fn gtk_list_box_drag_unhighlight_row(box_: *mut GtkListBox);
    pub fn gtk_list_box_get_activate_on_single_click(box_: *mut GtkListBox) -> gboolean;
    pub fn gtk_list_box_get_adjustment(box_: *mut GtkListBox) -> *mut GtkAdjustment;
    pub fn gtk_list_box_get_row_at_index(
        box_: *mut GtkListBox,
        index_: c_int,
    ) -> *mut GtkListBoxRow;
    pub fn gtk_list_box_get_row_at_y(box_: *mut GtkListBox, y: c_int) -> *mut GtkListBoxRow;
    pub fn gtk_list_box_get_selected_row(box_: *mut GtkListBox) -> *mut GtkListBoxRow;
    pub fn gtk_list_box_get_selected_rows(box_: *mut GtkListBox) -> *mut glib::GList;
    pub fn gtk_list_box_get_selection_mode(box_: *mut GtkListBox) -> GtkSelectionMode;
    pub fn gtk_list_box_insert(box_: *mut GtkListBox, child: *mut GtkWidget, position: c_int);
    pub fn gtk_list_box_invalidate_filter(box_: *mut GtkListBox);
    pub fn gtk_list_box_invalidate_headers(box_: *mut GtkListBox);
    pub fn gtk_list_box_invalidate_sort(box_: *mut GtkListBox);
    pub fn gtk_list_box_prepend(box_: *mut GtkListBox, child: *mut GtkWidget);
    pub fn gtk_list_box_select_all(box_: *mut GtkListBox);
    pub fn gtk_list_box_select_row(box_: *mut GtkListBox, row: *mut GtkListBoxRow);
    pub fn gtk_list_box_selected_foreach(
        box_: *mut GtkListBox,
        func: GtkListBoxForeachFunc,
        data: gpointer,
    );
    pub fn gtk_list_box_set_activate_on_single_click(box_: *mut GtkListBox, single: gboolean);
    pub fn gtk_list_box_set_adjustment(box_: *mut GtkListBox, adjustment: *mut GtkAdjustment);
    pub fn gtk_list_box_set_filter_func(
        box_: *mut GtkListBox,
        filter_func: GtkListBoxFilterFunc,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_list_box_set_header_func(
        box_: *mut GtkListBox,
        update_header: GtkListBoxUpdateHeaderFunc,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_list_box_set_placeholder(box_: *mut GtkListBox, placeholder: *mut GtkWidget);
    pub fn gtk_list_box_set_selection_mode(box_: *mut GtkListBox, mode: GtkSelectionMode);
    pub fn gtk_list_box_set_sort_func(
        box_: *mut GtkListBox,
        sort_func: GtkListBoxSortFunc,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_list_box_unselect_all(box_: *mut GtkListBox);
    pub fn gtk_list_box_unselect_row(box_: *mut GtkListBox, row: *mut GtkListBoxRow);

    //=========================================================================
    // GtkListBoxAccessible
    //=========================================================================
    pub fn gtk_list_box_accessible_get_type() -> GType;

    //=========================================================================
    // GtkListBoxRow
    //=========================================================================
    pub fn gtk_list_box_row_get_type() -> GType;
    pub fn gtk_list_box_row_new() -> *mut GtkWidget;
    pub fn gtk_list_box_row_changed(row: *mut GtkListBoxRow);
    pub fn gtk_list_box_row_get_activatable(row: *mut GtkListBoxRow) -> gboolean;
    pub fn gtk_list_box_row_get_header(row: *mut GtkListBoxRow) -> *mut GtkWidget;
    pub fn gtk_list_box_row_get_index(row: *mut GtkListBoxRow) -> c_int;
    pub fn gtk_list_box_row_get_selectable(row: *mut GtkListBoxRow) -> gboolean;
    pub fn gtk_list_box_row_is_selected(row: *mut GtkListBoxRow) -> gboolean;
    pub fn gtk_list_box_row_set_activatable(row: *mut GtkListBoxRow, activatable: gboolean);
    pub fn gtk_list_box_row_set_header(row: *mut GtkListBoxRow, header: *mut GtkWidget);
    pub fn gtk_list_box_row_set_selectable(row: *mut GtkListBoxRow, selectable: gboolean);

    //=========================================================================
    // GtkListBoxRowAccessible
    //=========================================================================
    pub fn gtk_list_box_row_accessible_get_type() -> GType;

    //=========================================================================
    // GtkListStore
    //=========================================================================
    pub fn gtk_list_store_get_type() -> GType;
    pub fn gtk_list_store_new(n_columns: c_int, ...) -> *mut GtkListStore;
    pub fn gtk_list_store_newv(n_columns: c_int, types: *mut GType) -> *mut GtkListStore;
    pub fn gtk_list_store_append(list_store: *mut GtkListStore, iter: *mut GtkTreeIter);
    pub fn gtk_list_store_clear(list_store: *mut GtkListStore);
    pub fn gtk_list_store_insert(
        list_store: *mut GtkListStore,
        iter: *mut GtkTreeIter,
        position: c_int,
    );
    pub fn gtk_list_store_insert_after(
        list_store: *mut GtkListStore,
        iter: *mut GtkTreeIter,
        sibling: *mut GtkTreeIter,
    );
    pub fn gtk_list_store_insert_before(
        list_store: *mut GtkListStore,
        iter: *mut GtkTreeIter,
        sibling: *mut GtkTreeIter,
    );
    pub fn gtk_list_store_insert_with_values(
        list_store: *mut GtkListStore,
        iter: *mut GtkTreeIter,
        position: c_int,
        ...
    );
    pub fn gtk_list_store_insert_with_valuesv(
        list_store: *mut GtkListStore,
        iter: *mut GtkTreeIter,
        position: c_int,
        columns: *mut c_int,
        values: *mut gobject::GValue,
        n_values: c_int,
    );
    pub fn gtk_list_store_iter_is_valid(
        list_store: *mut GtkListStore,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_list_store_move_after(
        store: *mut GtkListStore,
        iter: *mut GtkTreeIter,
        position: *mut GtkTreeIter,
    );
    pub fn gtk_list_store_move_before(
        store: *mut GtkListStore,
        iter: *mut GtkTreeIter,
        position: *mut GtkTreeIter,
    );
    pub fn gtk_list_store_prepend(list_store: *mut GtkListStore, iter: *mut GtkTreeIter);
    pub fn gtk_list_store_remove(list_store: *mut GtkListStore, iter: *mut GtkTreeIter)
        -> gboolean;
    pub fn gtk_list_store_reorder(store: *mut GtkListStore, new_order: *mut c_int);
    pub fn gtk_list_store_set(list_store: *mut GtkListStore, iter: *mut GtkTreeIter, ...);
    pub fn gtk_list_store_set_column_types(
        list_store: *mut GtkListStore,
        n_columns: c_int,
        types: *mut GType,
    );
    //pub fn gtk_list_store_set_valist(list_store: *mut GtkListStore, iter: *mut GtkTreeIter, var_args: /*Unimplemented*/va_list);
    pub fn gtk_list_store_set_value(
        list_store: *mut GtkListStore,
        iter: *mut GtkTreeIter,
        column: c_int,
        value: *mut gobject::GValue,
    );
    pub fn gtk_list_store_set_valuesv(
        list_store: *mut GtkListStore,
        iter: *mut GtkTreeIter,
        columns: *mut c_int,
        values: *mut gobject::GValue,
        n_values: c_int,
    );
    pub fn gtk_list_store_swap(store: *mut GtkListStore, a: *mut GtkTreeIter, b: *mut GtkTreeIter);

    //=========================================================================
    // GtkLockButton
    //=========================================================================
    pub fn gtk_lock_button_get_type() -> GType;
    pub fn gtk_lock_button_new(permission: *mut gio::GPermission) -> *mut GtkWidget;
    pub fn gtk_lock_button_get_permission(button: *mut GtkLockButton) -> *mut gio::GPermission;
    pub fn gtk_lock_button_set_permission(
        button: *mut GtkLockButton,
        permission: *mut gio::GPermission,
    );

    //=========================================================================
    // GtkLockButtonAccessible
    //=========================================================================
    pub fn gtk_lock_button_accessible_get_type() -> GType;

    //=========================================================================
    // GtkMenu
    //=========================================================================
    pub fn gtk_menu_get_type() -> GType;
    pub fn gtk_menu_new() -> *mut GtkWidget;
    pub fn gtk_menu_new_from_model(model: *mut gio::GMenuModel) -> *mut GtkWidget;
    pub fn gtk_menu_get_for_attach_widget(widget: *mut GtkWidget) -> *mut glib::GList;
    pub fn gtk_menu_attach(
        menu: *mut GtkMenu,
        child: *mut GtkWidget,
        left_attach: c_uint,
        right_attach: c_uint,
        top_attach: c_uint,
        bottom_attach: c_uint,
    );
    pub fn gtk_menu_attach_to_widget(
        menu: *mut GtkMenu,
        attach_widget: *mut GtkWidget,
        detacher: GtkMenuDetachFunc,
    );
    pub fn gtk_menu_detach(menu: *mut GtkMenu);
    pub fn gtk_menu_get_accel_group(menu: *mut GtkMenu) -> *mut GtkAccelGroup;
    pub fn gtk_menu_get_accel_path(menu: *mut GtkMenu) -> *const c_char;
    pub fn gtk_menu_get_active(menu: *mut GtkMenu) -> *mut GtkWidget;
    pub fn gtk_menu_get_attach_widget(menu: *mut GtkMenu) -> *mut GtkWidget;
    pub fn gtk_menu_get_monitor(menu: *mut GtkMenu) -> c_int;
    pub fn gtk_menu_get_reserve_toggle_size(menu: *mut GtkMenu) -> gboolean;
    pub fn gtk_menu_get_tearoff_state(menu: *mut GtkMenu) -> gboolean;
    pub fn gtk_menu_get_title(menu: *mut GtkMenu) -> *const c_char;
    pub fn gtk_menu_place_on_monitor(menu: *mut GtkMenu, monitor: *mut gdk::GdkMonitor);
    pub fn gtk_menu_popdown(menu: *mut GtkMenu);
    pub fn gtk_menu_popup(
        menu: *mut GtkMenu,
        parent_menu_shell: *mut GtkWidget,
        parent_menu_item: *mut GtkWidget,
        func: GtkMenuPositionFunc,
        data: gpointer,
        button: c_uint,
        activate_time: u32,
    );
    pub fn gtk_menu_popup_at_pointer(menu: *mut GtkMenu, trigger_event: *const gdk::GdkEvent);
    pub fn gtk_menu_popup_at_rect(
        menu: *mut GtkMenu,
        rect_window: *mut gdk::GdkWindow,
        rect: *const gdk::GdkRectangle,
        rect_anchor: gdk::GdkGravity,
        menu_anchor: gdk::GdkGravity,
        trigger_event: *const gdk::GdkEvent,
    );
    pub fn gtk_menu_popup_at_widget(
        menu: *mut GtkMenu,
        widget: *mut GtkWidget,
        widget_anchor: gdk::GdkGravity,
        menu_anchor: gdk::GdkGravity,
        trigger_event: *const gdk::GdkEvent,
    );
    pub fn gtk_menu_popup_for_device(
        menu: *mut GtkMenu,
        device: *mut gdk::GdkDevice,
        parent_menu_shell: *mut GtkWidget,
        parent_menu_item: *mut GtkWidget,
        func: GtkMenuPositionFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
        button: c_uint,
        activate_time: u32,
    );
    pub fn gtk_menu_reorder_child(menu: *mut GtkMenu, child: *mut GtkWidget, position: c_int);
    pub fn gtk_menu_reposition(menu: *mut GtkMenu);
    pub fn gtk_menu_set_accel_group(menu: *mut GtkMenu, accel_group: *mut GtkAccelGroup);
    pub fn gtk_menu_set_accel_path(menu: *mut GtkMenu, accel_path: *const c_char);
    pub fn gtk_menu_set_active(menu: *mut GtkMenu, index: c_uint);
    pub fn gtk_menu_set_monitor(menu: *mut GtkMenu, monitor_num: c_int);
    pub fn gtk_menu_set_reserve_toggle_size(menu: *mut GtkMenu, reserve_toggle_size: gboolean);
    pub fn gtk_menu_set_screen(menu: *mut GtkMenu, screen: *mut gdk::GdkScreen);
    pub fn gtk_menu_set_tearoff_state(menu: *mut GtkMenu, torn_off: gboolean);
    pub fn gtk_menu_set_title(menu: *mut GtkMenu, title: *const c_char);

    //=========================================================================
    // GtkMenuAccessible
    //=========================================================================
    pub fn gtk_menu_accessible_get_type() -> GType;

    //=========================================================================
    // GtkMenuBar
    //=========================================================================
    pub fn gtk_menu_bar_get_type() -> GType;
    pub fn gtk_menu_bar_new() -> *mut GtkWidget;
    pub fn gtk_menu_bar_new_from_model(model: *mut gio::GMenuModel) -> *mut GtkWidget;
    pub fn gtk_menu_bar_get_child_pack_direction(menubar: *mut GtkMenuBar) -> GtkPackDirection;
    pub fn gtk_menu_bar_get_pack_direction(menubar: *mut GtkMenuBar) -> GtkPackDirection;
    pub fn gtk_menu_bar_set_child_pack_direction(
        menubar: *mut GtkMenuBar,
        child_pack_dir: GtkPackDirection,
    );
    pub fn gtk_menu_bar_set_pack_direction(menubar: *mut GtkMenuBar, pack_dir: GtkPackDirection);

    //=========================================================================
    // GtkMenuButton
    //=========================================================================
    pub fn gtk_menu_button_get_type() -> GType;
    pub fn gtk_menu_button_new() -> *mut GtkWidget;
    pub fn gtk_menu_button_get_align_widget(menu_button: *mut GtkMenuButton) -> *mut GtkWidget;
    pub fn gtk_menu_button_get_direction(menu_button: *mut GtkMenuButton) -> GtkArrowType;
    pub fn gtk_menu_button_get_menu_model(menu_button: *mut GtkMenuButton) -> *mut gio::GMenuModel;
    pub fn gtk_menu_button_get_popover(menu_button: *mut GtkMenuButton) -> *mut GtkPopover;
    pub fn gtk_menu_button_get_popup(menu_button: *mut GtkMenuButton) -> *mut GtkMenu;
    pub fn gtk_menu_button_get_use_popover(menu_button: *mut GtkMenuButton) -> gboolean;
    pub fn gtk_menu_button_set_align_widget(
        menu_button: *mut GtkMenuButton,
        align_widget: *mut GtkWidget,
    );
    pub fn gtk_menu_button_set_direction(menu_button: *mut GtkMenuButton, direction: GtkArrowType);
    pub fn gtk_menu_button_set_menu_model(
        menu_button: *mut GtkMenuButton,
        menu_model: *mut gio::GMenuModel,
    );
    pub fn gtk_menu_button_set_popover(menu_button: *mut GtkMenuButton, popover: *mut GtkWidget);
    pub fn gtk_menu_button_set_popup(menu_button: *mut GtkMenuButton, menu: *mut GtkWidget);
    pub fn gtk_menu_button_set_use_popover(menu_button: *mut GtkMenuButton, use_popover: gboolean);

    //=========================================================================
    // GtkMenuButtonAccessible
    //=========================================================================
    pub fn gtk_menu_button_accessible_get_type() -> GType;

    //=========================================================================
    // GtkMenuItem
    //=========================================================================
    pub fn gtk_menu_item_get_type() -> GType;
    pub fn gtk_menu_item_new() -> *mut GtkWidget;
    pub fn gtk_menu_item_new_with_label(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_menu_item_new_with_mnemonic(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_menu_item_activate(menu_item: *mut GtkMenuItem);
    pub fn gtk_menu_item_deselect(menu_item: *mut GtkMenuItem);
    pub fn gtk_menu_item_get_accel_path(menu_item: *mut GtkMenuItem) -> *const c_char;
    pub fn gtk_menu_item_get_label(menu_item: *mut GtkMenuItem) -> *const c_char;
    pub fn gtk_menu_item_get_reserve_indicator(menu_item: *mut GtkMenuItem) -> gboolean;
    pub fn gtk_menu_item_get_right_justified(menu_item: *mut GtkMenuItem) -> gboolean;
    pub fn gtk_menu_item_get_submenu(menu_item: *mut GtkMenuItem) -> *mut GtkWidget;
    pub fn gtk_menu_item_get_use_underline(menu_item: *mut GtkMenuItem) -> gboolean;
    pub fn gtk_menu_item_select(menu_item: *mut GtkMenuItem);
    pub fn gtk_menu_item_set_accel_path(menu_item: *mut GtkMenuItem, accel_path: *const c_char);
    pub fn gtk_menu_item_set_label(menu_item: *mut GtkMenuItem, label: *const c_char);
    pub fn gtk_menu_item_set_reserve_indicator(menu_item: *mut GtkMenuItem, reserve: gboolean);
    pub fn gtk_menu_item_set_right_justified(
        menu_item: *mut GtkMenuItem,
        right_justified: gboolean,
    );
    pub fn gtk_menu_item_set_submenu(menu_item: *mut GtkMenuItem, submenu: *mut GtkMenu);
    pub fn gtk_menu_item_set_use_underline(menu_item: *mut GtkMenuItem, setting: gboolean);
    pub fn gtk_menu_item_toggle_size_allocate(menu_item: *mut GtkMenuItem, allocation: c_int);
    pub fn gtk_menu_item_toggle_size_request(menu_item: *mut GtkMenuItem, requisition: *mut c_int);

    //=========================================================================
    // GtkMenuItemAccessible
    //=========================================================================
    pub fn gtk_menu_item_accessible_get_type() -> GType;

    //=========================================================================
    // GtkMenuShell
    //=========================================================================
    pub fn gtk_menu_shell_get_type() -> GType;
    pub fn gtk_menu_shell_activate_item(
        menu_shell: *mut GtkMenuShell,
        menu_item: *mut GtkWidget,
        force_deactivate: gboolean,
    );
    pub fn gtk_menu_shell_append(menu_shell: *mut GtkMenuShell, child: *mut GtkMenuItem);
    pub fn gtk_menu_shell_bind_model(
        menu_shell: *mut GtkMenuShell,
        model: *mut gio::GMenuModel,
        action_namespace: *const c_char,
        with_separators: gboolean,
    );
    pub fn gtk_menu_shell_cancel(menu_shell: *mut GtkMenuShell);
    pub fn gtk_menu_shell_deactivate(menu_shell: *mut GtkMenuShell);
    pub fn gtk_menu_shell_deselect(menu_shell: *mut GtkMenuShell);
    pub fn gtk_menu_shell_get_parent_shell(menu_shell: *mut GtkMenuShell) -> *mut GtkWidget;
    pub fn gtk_menu_shell_get_selected_item(menu_shell: *mut GtkMenuShell) -> *mut GtkWidget;
    pub fn gtk_menu_shell_get_take_focus(menu_shell: *mut GtkMenuShell) -> gboolean;
    pub fn gtk_menu_shell_insert(
        menu_shell: *mut GtkMenuShell,
        child: *mut GtkWidget,
        position: c_int,
    );
    pub fn gtk_menu_shell_prepend(menu_shell: *mut GtkMenuShell, child: *mut GtkWidget);
    pub fn gtk_menu_shell_select_first(menu_shell: *mut GtkMenuShell, search_sensitive: gboolean);
    pub fn gtk_menu_shell_select_item(menu_shell: *mut GtkMenuShell, menu_item: *mut GtkWidget);
    pub fn gtk_menu_shell_set_take_focus(menu_shell: *mut GtkMenuShell, take_focus: gboolean);

    //=========================================================================
    // GtkMenuShellAccessible
    //=========================================================================
    pub fn gtk_menu_shell_accessible_get_type() -> GType;

    //=========================================================================
    // GtkMenuToolButton
    //=========================================================================
    pub fn gtk_menu_tool_button_get_type() -> GType;
    pub fn gtk_menu_tool_button_new(
        icon_widget: *mut GtkWidget,
        label: *const c_char,
    ) -> *mut GtkToolItem;
    pub fn gtk_menu_tool_button_new_from_stock(stock_id: *const c_char) -> *mut GtkToolItem;
    pub fn gtk_menu_tool_button_get_menu(button: *mut GtkMenuToolButton) -> *mut GtkWidget;
    pub fn gtk_menu_tool_button_set_arrow_tooltip_markup(
        button: *mut GtkMenuToolButton,
        markup: *const c_char,
    );
    pub fn gtk_menu_tool_button_set_arrow_tooltip_text(
        button: *mut GtkMenuToolButton,
        text: *const c_char,
    );
    pub fn gtk_menu_tool_button_set_menu(button: *mut GtkMenuToolButton, menu: *mut GtkWidget);

    //=========================================================================
    // GtkMessageDialog
    //=========================================================================
    pub fn gtk_message_dialog_get_type() -> GType;
    pub fn gtk_message_dialog_new(
        parent: *mut GtkWindow,
        flags: GtkDialogFlags,
        type_: GtkMessageType,
        buttons: GtkButtonsType,
        message_format: *const c_char,
        ...
    ) -> *mut GtkWidget;
    pub fn gtk_message_dialog_new_with_markup(
        parent: *mut GtkWindow,
        flags: GtkDialogFlags,
        type_: GtkMessageType,
        buttons: GtkButtonsType,
        message_format: *const c_char,
        ...
    ) -> *mut GtkWidget;
    pub fn gtk_message_dialog_format_secondary_markup(
        message_dialog: *mut GtkMessageDialog,
        message_format: *const c_char,
        ...
    );
    pub fn gtk_message_dialog_format_secondary_text(
        message_dialog: *mut GtkMessageDialog,
        message_format: *const c_char,
        ...
    );
    pub fn gtk_message_dialog_get_image(dialog: *mut GtkMessageDialog) -> *mut GtkWidget;
    pub fn gtk_message_dialog_get_message_area(
        message_dialog: *mut GtkMessageDialog,
    ) -> *mut GtkWidget;
    pub fn gtk_message_dialog_set_image(dialog: *mut GtkMessageDialog, image: *mut GtkWidget);
    pub fn gtk_message_dialog_set_markup(message_dialog: *mut GtkMessageDialog, str: *const c_char);

    //=========================================================================
    // GtkMisc
    //=========================================================================
    pub fn gtk_misc_get_type() -> GType;
    pub fn gtk_misc_get_alignment(misc: *mut GtkMisc, xalign: *mut c_float, yalign: *mut c_float);
    pub fn gtk_misc_get_padding(misc: *mut GtkMisc, xpad: *mut c_int, ypad: *mut c_int);
    pub fn gtk_misc_set_alignment(misc: *mut GtkMisc, xalign: c_float, yalign: c_float);
    pub fn gtk_misc_set_padding(misc: *mut GtkMisc, xpad: c_int, ypad: c_int);

    //=========================================================================
    // GtkModelButton
    //=========================================================================
    pub fn gtk_model_button_get_type() -> GType;
    pub fn gtk_model_button_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkMountOperation
    //=========================================================================
    pub fn gtk_mount_operation_get_type() -> GType;
    pub fn gtk_mount_operation_new(parent: *mut GtkWindow) -> *mut gio::GMountOperation;
    pub fn gtk_mount_operation_get_parent(op: *mut GtkMountOperation) -> *mut GtkWindow;
    pub fn gtk_mount_operation_get_screen(op: *mut GtkMountOperation) -> *mut gdk::GdkScreen;
    pub fn gtk_mount_operation_is_showing(op: *mut GtkMountOperation) -> gboolean;
    pub fn gtk_mount_operation_set_parent(op: *mut GtkMountOperation, parent: *mut GtkWindow);
    pub fn gtk_mount_operation_set_screen(op: *mut GtkMountOperation, screen: *mut gdk::GdkScreen);

    //=========================================================================
    // GtkNativeDialog
    //=========================================================================
    pub fn gtk_native_dialog_get_type() -> GType;
    pub fn gtk_native_dialog_destroy(self_: *mut GtkNativeDialog);
    pub fn gtk_native_dialog_get_modal(self_: *mut GtkNativeDialog) -> gboolean;
    pub fn gtk_native_dialog_get_title(self_: *mut GtkNativeDialog) -> *const c_char;
    pub fn gtk_native_dialog_get_transient_for(self_: *mut GtkNativeDialog) -> *mut GtkWindow;
    pub fn gtk_native_dialog_get_visible(self_: *mut GtkNativeDialog) -> gboolean;
    pub fn gtk_native_dialog_hide(self_: *mut GtkNativeDialog);
    pub fn gtk_native_dialog_run(self_: *mut GtkNativeDialog) -> c_int;
    pub fn gtk_native_dialog_set_modal(self_: *mut GtkNativeDialog, modal: gboolean);
    pub fn gtk_native_dialog_set_title(self_: *mut GtkNativeDialog, title: *const c_char);
    pub fn gtk_native_dialog_set_transient_for(self_: *mut GtkNativeDialog, parent: *mut GtkWindow);
    pub fn gtk_native_dialog_show(self_: *mut GtkNativeDialog);

    //=========================================================================
    // GtkNotebook
    //=========================================================================
    pub fn gtk_notebook_get_type() -> GType;
    pub fn gtk_notebook_new() -> *mut GtkWidget;
    pub fn gtk_notebook_append_page(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        tab_label: *mut GtkWidget,
    ) -> c_int;
    pub fn gtk_notebook_append_page_menu(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        tab_label: *mut GtkWidget,
        menu_label: *mut GtkWidget,
    ) -> c_int;
    pub fn gtk_notebook_detach_tab(notebook: *mut GtkNotebook, child: *mut GtkWidget);
    pub fn gtk_notebook_get_action_widget(
        notebook: *mut GtkNotebook,
        pack_type: GtkPackType,
    ) -> *mut GtkWidget;
    pub fn gtk_notebook_get_current_page(notebook: *mut GtkNotebook) -> c_int;
    pub fn gtk_notebook_get_group_name(notebook: *mut GtkNotebook) -> *const c_char;
    pub fn gtk_notebook_get_menu_label(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
    ) -> *mut GtkWidget;
    pub fn gtk_notebook_get_menu_label_text(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
    ) -> *const c_char;
    pub fn gtk_notebook_get_n_pages(notebook: *mut GtkNotebook) -> c_int;
    pub fn gtk_notebook_get_nth_page(notebook: *mut GtkNotebook, page_num: c_int)
        -> *mut GtkWidget;
    pub fn gtk_notebook_get_scrollable(notebook: *mut GtkNotebook) -> gboolean;
    pub fn gtk_notebook_get_show_border(notebook: *mut GtkNotebook) -> gboolean;
    pub fn gtk_notebook_get_show_tabs(notebook: *mut GtkNotebook) -> gboolean;
    pub fn gtk_notebook_get_tab_detachable(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_notebook_get_tab_hborder(notebook: *mut GtkNotebook) -> u16;
    pub fn gtk_notebook_get_tab_label(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
    ) -> *mut GtkWidget;
    pub fn gtk_notebook_get_tab_label_text(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
    ) -> *const c_char;
    pub fn gtk_notebook_get_tab_pos(notebook: *mut GtkNotebook) -> GtkPositionType;
    pub fn gtk_notebook_get_tab_reorderable(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_notebook_get_tab_vborder(notebook: *mut GtkNotebook) -> u16;
    pub fn gtk_notebook_insert_page(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        tab_label: *mut GtkWidget,
        position: c_int,
    ) -> c_int;
    pub fn gtk_notebook_insert_page_menu(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        tab_label: *mut GtkWidget,
        menu_label: *mut GtkWidget,
        position: c_int,
    ) -> c_int;
    pub fn gtk_notebook_next_page(notebook: *mut GtkNotebook);
    pub fn gtk_notebook_page_num(notebook: *mut GtkNotebook, child: *mut GtkWidget) -> c_int;
    pub fn gtk_notebook_popup_disable(notebook: *mut GtkNotebook);
    pub fn gtk_notebook_popup_enable(notebook: *mut GtkNotebook);
    pub fn gtk_notebook_prepend_page(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        tab_label: *mut GtkWidget,
    ) -> c_int;
    pub fn gtk_notebook_prepend_page_menu(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        tab_label: *mut GtkWidget,
        menu_label: *mut GtkWidget,
    ) -> c_int;
    pub fn gtk_notebook_prev_page(notebook: *mut GtkNotebook);
    pub fn gtk_notebook_remove_page(notebook: *mut GtkNotebook, page_num: c_int);
    pub fn gtk_notebook_reorder_child(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        position: c_int,
    );
    pub fn gtk_notebook_set_action_widget(
        notebook: *mut GtkNotebook,
        widget: *mut GtkWidget,
        pack_type: GtkPackType,
    );
    pub fn gtk_notebook_set_current_page(notebook: *mut GtkNotebook, page_num: c_int);
    pub fn gtk_notebook_set_group_name(notebook: *mut GtkNotebook, group_name: *const c_char);
    pub fn gtk_notebook_set_menu_label(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        menu_label: *mut GtkWidget,
    );
    pub fn gtk_notebook_set_menu_label_text(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        menu_text: *const c_char,
    );
    pub fn gtk_notebook_set_scrollable(notebook: *mut GtkNotebook, scrollable: gboolean);
    pub fn gtk_notebook_set_show_border(notebook: *mut GtkNotebook, show_border: gboolean);
    pub fn gtk_notebook_set_show_tabs(notebook: *mut GtkNotebook, show_tabs: gboolean);
    pub fn gtk_notebook_set_tab_detachable(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        detachable: gboolean,
    );
    pub fn gtk_notebook_set_tab_label(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        tab_label: *mut GtkWidget,
    );
    pub fn gtk_notebook_set_tab_label_text(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        tab_text: *const c_char,
    );
    pub fn gtk_notebook_set_tab_pos(notebook: *mut GtkNotebook, pos: GtkPositionType);
    pub fn gtk_notebook_set_tab_reorderable(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
        reorderable: gboolean,
    );

    //=========================================================================
    // GtkNotebookAccessible
    //=========================================================================
    pub fn gtk_notebook_accessible_get_type() -> GType;

    //=========================================================================
    // GtkNotebookPageAccessible
    //=========================================================================
    pub fn gtk_notebook_page_accessible_get_type() -> GType;
    pub fn gtk_notebook_page_accessible_new(
        notebook: *mut GtkNotebookAccessible,
        child: *mut GtkWidget,
    ) -> *mut atk::AtkObject;
    pub fn gtk_notebook_page_accessible_invalidate(page: *mut GtkNotebookPageAccessible);

    //=========================================================================
    // GtkNumerableIcon
    //=========================================================================
    pub fn gtk_numerable_icon_get_type() -> GType;
    pub fn gtk_numerable_icon_new(base_icon: *mut gio::GIcon) -> *mut gio::GIcon;
    pub fn gtk_numerable_icon_new_with_style_context(
        base_icon: *mut gio::GIcon,
        context: *mut GtkStyleContext,
    ) -> *mut gio::GIcon;
    pub fn gtk_numerable_icon_get_background_gicon(self_: *mut GtkNumerableIcon)
        -> *mut gio::GIcon;
    pub fn gtk_numerable_icon_get_background_icon_name(
        self_: *mut GtkNumerableIcon,
    ) -> *const c_char;
    pub fn gtk_numerable_icon_get_count(self_: *mut GtkNumerableIcon) -> c_int;
    pub fn gtk_numerable_icon_get_label(self_: *mut GtkNumerableIcon) -> *const c_char;
    pub fn gtk_numerable_icon_get_style_context(
        self_: *mut GtkNumerableIcon,
    ) -> *mut GtkStyleContext;
    pub fn gtk_numerable_icon_set_background_gicon(
        self_: *mut GtkNumerableIcon,
        icon: *mut gio::GIcon,
    );
    pub fn gtk_numerable_icon_set_background_icon_name(
        self_: *mut GtkNumerableIcon,
        icon_name: *const c_char,
    );
    pub fn gtk_numerable_icon_set_count(self_: *mut GtkNumerableIcon, count: c_int);
    pub fn gtk_numerable_icon_set_label(self_: *mut GtkNumerableIcon, label: *const c_char);
    pub fn gtk_numerable_icon_set_style_context(
        self_: *mut GtkNumerableIcon,
        style: *mut GtkStyleContext,
    );

    //=========================================================================
    // GtkOffscreenWindow
    //=========================================================================
    pub fn gtk_offscreen_window_get_type() -> GType;
    pub fn gtk_offscreen_window_new() -> *mut GtkWidget;
    pub fn gtk_offscreen_window_get_pixbuf(
        offscreen: *mut GtkOffscreenWindow,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_offscreen_window_get_surface(
        offscreen: *mut GtkOffscreenWindow,
    ) -> *mut cairo::cairo_surface_t;

    //=========================================================================
    // GtkOverlay
    //=========================================================================
    pub fn gtk_overlay_get_type() -> GType;
    pub fn gtk_overlay_new() -> *mut GtkWidget;
    pub fn gtk_overlay_add_overlay(overlay: *mut GtkOverlay, widget: *mut GtkWidget);
    pub fn gtk_overlay_get_overlay_pass_through(
        overlay: *mut GtkOverlay,
        widget: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_overlay_reorder_overlay(
        overlay: *mut GtkOverlay,
        child: *mut GtkWidget,
        index_: c_int,
    );
    pub fn gtk_overlay_set_overlay_pass_through(
        overlay: *mut GtkOverlay,
        widget: *mut GtkWidget,
        pass_through: gboolean,
    );

    //=========================================================================
    // GtkPadController
    //=========================================================================
    pub fn gtk_pad_controller_get_type() -> GType;
    pub fn gtk_pad_controller_new(
        window: *mut GtkWindow,
        group: *mut gio::GActionGroup,
        pad: *mut gdk::GdkDevice,
    ) -> *mut GtkPadController;
    pub fn gtk_pad_controller_set_action(
        controller: *mut GtkPadController,
        type_: GtkPadActionType,
        index: c_int,
        mode: c_int,
        label: *const c_char,
        action_name: *const c_char,
    );
    pub fn gtk_pad_controller_set_action_entries(
        controller: *mut GtkPadController,
        entries: *const GtkPadActionEntry,
        n_entries: c_int,
    );

    //=========================================================================
    // GtkPageSetup
    //=========================================================================
    pub fn gtk_page_setup_get_type() -> GType;
    pub fn gtk_page_setup_new() -> *mut GtkPageSetup;
    pub fn gtk_page_setup_new_from_file(
        file_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> *mut GtkPageSetup;
    pub fn gtk_page_setup_new_from_gvariant(variant: *mut glib::GVariant) -> *mut GtkPageSetup;
    pub fn gtk_page_setup_new_from_key_file(
        key_file: *mut glib::GKeyFile,
        group_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> *mut GtkPageSetup;
    pub fn gtk_page_setup_copy(other: *mut GtkPageSetup) -> *mut GtkPageSetup;
    pub fn gtk_page_setup_get_bottom_margin(setup: *mut GtkPageSetup, unit: GtkUnit) -> c_double;
    pub fn gtk_page_setup_get_left_margin(setup: *mut GtkPageSetup, unit: GtkUnit) -> c_double;
    pub fn gtk_page_setup_get_orientation(setup: *mut GtkPageSetup) -> GtkPageOrientation;
    pub fn gtk_page_setup_get_page_height(setup: *mut GtkPageSetup, unit: GtkUnit) -> c_double;
    pub fn gtk_page_setup_get_page_width(setup: *mut GtkPageSetup, unit: GtkUnit) -> c_double;
    pub fn gtk_page_setup_get_paper_height(setup: *mut GtkPageSetup, unit: GtkUnit) -> c_double;
    pub fn gtk_page_setup_get_paper_size(setup: *mut GtkPageSetup) -> *mut GtkPaperSize;
    pub fn gtk_page_setup_get_paper_width(setup: *mut GtkPageSetup, unit: GtkUnit) -> c_double;
    pub fn gtk_page_setup_get_right_margin(setup: *mut GtkPageSetup, unit: GtkUnit) -> c_double;
    pub fn gtk_page_setup_get_top_margin(setup: *mut GtkPageSetup, unit: GtkUnit) -> c_double;
    pub fn gtk_page_setup_load_file(
        setup: *mut GtkPageSetup,
        file_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_page_setup_load_key_file(
        setup: *mut GtkPageSetup,
        key_file: *mut glib::GKeyFile,
        group_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_page_setup_set_bottom_margin(
        setup: *mut GtkPageSetup,
        margin: c_double,
        unit: GtkUnit,
    );
    pub fn gtk_page_setup_set_left_margin(
        setup: *mut GtkPageSetup,
        margin: c_double,
        unit: GtkUnit,
    );
    pub fn gtk_page_setup_set_orientation(
        setup: *mut GtkPageSetup,
        orientation: GtkPageOrientation,
    );
    pub fn gtk_page_setup_set_paper_size(setup: *mut GtkPageSetup, size: *mut GtkPaperSize);
    pub fn gtk_page_setup_set_paper_size_and_default_margins(
        setup: *mut GtkPageSetup,
        size: *mut GtkPaperSize,
    );
    pub fn gtk_page_setup_set_right_margin(
        setup: *mut GtkPageSetup,
        margin: c_double,
        unit: GtkUnit,
    );
    pub fn gtk_page_setup_set_top_margin(setup: *mut GtkPageSetup, margin: c_double, unit: GtkUnit);
    pub fn gtk_page_setup_to_file(
        setup: *mut GtkPageSetup,
        file_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_page_setup_to_gvariant(setup: *mut GtkPageSetup) -> *mut glib::GVariant;
    pub fn gtk_page_setup_to_key_file(
        setup: *mut GtkPageSetup,
        key_file: *mut glib::GKeyFile,
        group_name: *const c_char,
    );

    //=========================================================================
    // GtkPaned
    //=========================================================================
    pub fn gtk_paned_get_type() -> GType;
    pub fn gtk_paned_new(orientation: GtkOrientation) -> *mut GtkWidget;
    pub fn gtk_paned_add1(paned: *mut GtkPaned, child: *mut GtkWidget);
    pub fn gtk_paned_add2(paned: *mut GtkPaned, child: *mut GtkWidget);
    pub fn gtk_paned_get_child1(paned: *mut GtkPaned) -> *mut GtkWidget;
    pub fn gtk_paned_get_child2(paned: *mut GtkPaned) -> *mut GtkWidget;
    pub fn gtk_paned_get_handle_window(paned: *mut GtkPaned) -> *mut gdk::GdkWindow;
    pub fn gtk_paned_get_position(paned: *mut GtkPaned) -> c_int;
    pub fn gtk_paned_get_wide_handle(paned: *mut GtkPaned) -> gboolean;
    pub fn gtk_paned_pack1(
        paned: *mut GtkPaned,
        child: *mut GtkWidget,
        resize: gboolean,
        shrink: gboolean,
    );
    pub fn gtk_paned_pack2(
        paned: *mut GtkPaned,
        child: *mut GtkWidget,
        resize: gboolean,
        shrink: gboolean,
    );
    pub fn gtk_paned_set_position(paned: *mut GtkPaned, position: c_int);
    pub fn gtk_paned_set_wide_handle(paned: *mut GtkPaned, wide: gboolean);

    //=========================================================================
    // GtkPanedAccessible
    //=========================================================================
    pub fn gtk_paned_accessible_get_type() -> GType;

    //=========================================================================
    // GtkPlacesSidebar
    //=========================================================================
    pub fn gtk_places_sidebar_get_type() -> GType;
    pub fn gtk_places_sidebar_new() -> *mut GtkWidget;
    pub fn gtk_places_sidebar_add_shortcut(
        sidebar: *mut GtkPlacesSidebar,
        location: *mut gio::GFile,
    );
    pub fn gtk_places_sidebar_get_local_only(sidebar: *mut GtkPlacesSidebar) -> gboolean;
    pub fn gtk_places_sidebar_get_location(sidebar: *mut GtkPlacesSidebar) -> *mut gio::GFile;
    pub fn gtk_places_sidebar_get_nth_bookmark(
        sidebar: *mut GtkPlacesSidebar,
        n: c_int,
    ) -> *mut gio::GFile;
    pub fn gtk_places_sidebar_get_open_flags(sidebar: *mut GtkPlacesSidebar) -> GtkPlacesOpenFlags;
    pub fn gtk_places_sidebar_get_show_connect_to_server(
        sidebar: *mut GtkPlacesSidebar,
    ) -> gboolean;
    pub fn gtk_places_sidebar_get_show_desktop(sidebar: *mut GtkPlacesSidebar) -> gboolean;
    pub fn gtk_places_sidebar_get_show_enter_location(sidebar: *mut GtkPlacesSidebar) -> gboolean;
    pub fn gtk_places_sidebar_get_show_other_locations(sidebar: *mut GtkPlacesSidebar) -> gboolean;
    pub fn gtk_places_sidebar_get_show_recent(sidebar: *mut GtkPlacesSidebar) -> gboolean;
    pub fn gtk_places_sidebar_get_show_starred_location(sidebar: *mut GtkPlacesSidebar)
        -> gboolean;
    pub fn gtk_places_sidebar_get_show_trash(sidebar: *mut GtkPlacesSidebar) -> gboolean;
    pub fn gtk_places_sidebar_list_shortcuts(sidebar: *mut GtkPlacesSidebar) -> *mut glib::GSList;
    pub fn gtk_places_sidebar_remove_shortcut(
        sidebar: *mut GtkPlacesSidebar,
        location: *mut gio::GFile,
    );
    pub fn gtk_places_sidebar_set_drop_targets_visible(
        sidebar: *mut GtkPlacesSidebar,
        visible: gboolean,
        context: *mut gdk::GdkDragContext,
    );
    pub fn gtk_places_sidebar_set_local_only(sidebar: *mut GtkPlacesSidebar, local_only: gboolean);
    pub fn gtk_places_sidebar_set_location(
        sidebar: *mut GtkPlacesSidebar,
        location: *mut gio::GFile,
    );
    pub fn gtk_places_sidebar_set_open_flags(
        sidebar: *mut GtkPlacesSidebar,
        flags: GtkPlacesOpenFlags,
    );
    pub fn gtk_places_sidebar_set_show_connect_to_server(
        sidebar: *mut GtkPlacesSidebar,
        show_connect_to_server: gboolean,
    );
    pub fn gtk_places_sidebar_set_show_desktop(
        sidebar: *mut GtkPlacesSidebar,
        show_desktop: gboolean,
    );
    pub fn gtk_places_sidebar_set_show_enter_location(
        sidebar: *mut GtkPlacesSidebar,
        show_enter_location: gboolean,
    );
    pub fn gtk_places_sidebar_set_show_other_locations(
        sidebar: *mut GtkPlacesSidebar,
        show_other_locations: gboolean,
    );
    pub fn gtk_places_sidebar_set_show_recent(
        sidebar: *mut GtkPlacesSidebar,
        show_recent: gboolean,
    );
    pub fn gtk_places_sidebar_set_show_starred_location(
        sidebar: *mut GtkPlacesSidebar,
        show_starred_location: gboolean,
    );
    pub fn gtk_places_sidebar_set_show_trash(sidebar: *mut GtkPlacesSidebar, show_trash: gboolean);

    //=========================================================================
    // GtkPlug
    //=========================================================================
    pub fn gtk_plug_get_type() -> GType;
    pub fn gtk_plug_new(socket_id: xlib::Window) -> *mut GtkWidget;
    pub fn gtk_plug_new_for_display(
        display: *mut gdk::GdkDisplay,
        socket_id: xlib::Window,
    ) -> *mut GtkWidget;
    pub fn gtk_plug_construct(plug: *mut GtkPlug, socket_id: xlib::Window);
    pub fn gtk_plug_construct_for_display(
        plug: *mut GtkPlug,
        display: *mut gdk::GdkDisplay,
        socket_id: xlib::Window,
    );
    pub fn gtk_plug_get_embedded(plug: *mut GtkPlug) -> gboolean;
    pub fn gtk_plug_get_id(plug: *mut GtkPlug) -> xlib::Window;
    pub fn gtk_plug_get_socket_window(plug: *mut GtkPlug) -> *mut gdk::GdkWindow;

    //=========================================================================
    // GtkPlugAccessible
    //=========================================================================
    #[cfg(feature = "v3_24_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24_30")))]
    pub fn gtk_plug_accessible_get_type() -> GType;
    #[cfg(feature = "v3_24_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24_30")))]
    pub fn gtk_plug_accessible_get_id(plug: *mut GtkPlugAccessible) -> *mut c_char;

    //=========================================================================
    // GtkPopover
    //=========================================================================
    pub fn gtk_popover_get_type() -> GType;
    pub fn gtk_popover_new(relative_to: *mut GtkWidget) -> *mut GtkWidget;
    pub fn gtk_popover_new_from_model(
        relative_to: *mut GtkWidget,
        model: *mut gio::GMenuModel,
    ) -> *mut GtkWidget;
    pub fn gtk_popover_bind_model(
        popover: *mut GtkPopover,
        model: *mut gio::GMenuModel,
        action_namespace: *const c_char,
    );
    pub fn gtk_popover_get_constrain_to(popover: *mut GtkPopover) -> GtkPopoverConstraint;
    pub fn gtk_popover_get_default_widget(popover: *mut GtkPopover) -> *mut GtkWidget;
    pub fn gtk_popover_get_modal(popover: *mut GtkPopover) -> gboolean;
    pub fn gtk_popover_get_pointing_to(
        popover: *mut GtkPopover,
        rect: *mut gdk::GdkRectangle,
    ) -> gboolean;
    pub fn gtk_popover_get_position(popover: *mut GtkPopover) -> GtkPositionType;
    pub fn gtk_popover_get_relative_to(popover: *mut GtkPopover) -> *mut GtkWidget;
    pub fn gtk_popover_get_transitions_enabled(popover: *mut GtkPopover) -> gboolean;
    pub fn gtk_popover_popdown(popover: *mut GtkPopover);
    pub fn gtk_popover_popup(popover: *mut GtkPopover);
    pub fn gtk_popover_set_constrain_to(popover: *mut GtkPopover, constraint: GtkPopoverConstraint);
    pub fn gtk_popover_set_default_widget(popover: *mut GtkPopover, widget: *mut GtkWidget);
    pub fn gtk_popover_set_modal(popover: *mut GtkPopover, modal: gboolean);
    pub fn gtk_popover_set_pointing_to(popover: *mut GtkPopover, rect: *const gdk::GdkRectangle);
    pub fn gtk_popover_set_position(popover: *mut GtkPopover, position: GtkPositionType);
    pub fn gtk_popover_set_relative_to(popover: *mut GtkPopover, relative_to: *mut GtkWidget);
    pub fn gtk_popover_set_transitions_enabled(
        popover: *mut GtkPopover,
        transitions_enabled: gboolean,
    );

    //=========================================================================
    // GtkPopoverAccessible
    //=========================================================================
    pub fn gtk_popover_accessible_get_type() -> GType;

    //=========================================================================
    // GtkPopoverMenu
    //=========================================================================
    pub fn gtk_popover_menu_get_type() -> GType;
    pub fn gtk_popover_menu_new() -> *mut GtkWidget;
    pub fn gtk_popover_menu_open_submenu(popover: *mut GtkPopoverMenu, name: *const c_char);

    //=========================================================================
    // GtkPrintContext
    //=========================================================================
    pub fn gtk_print_context_get_type() -> GType;
    pub fn gtk_print_context_create_pango_context(
        context: *mut GtkPrintContext,
    ) -> *mut pango::PangoContext;
    pub fn gtk_print_context_create_pango_layout(
        context: *mut GtkPrintContext,
    ) -> *mut pango::PangoLayout;
    pub fn gtk_print_context_get_cairo_context(
        context: *mut GtkPrintContext,
    ) -> *mut cairo::cairo_t;
    pub fn gtk_print_context_get_dpi_x(context: *mut GtkPrintContext) -> c_double;
    pub fn gtk_print_context_get_dpi_y(context: *mut GtkPrintContext) -> c_double;
    pub fn gtk_print_context_get_hard_margins(
        context: *mut GtkPrintContext,
        top: *mut c_double,
        bottom: *mut c_double,
        left: *mut c_double,
        right: *mut c_double,
    ) -> gboolean;
    pub fn gtk_print_context_get_height(context: *mut GtkPrintContext) -> c_double;
    pub fn gtk_print_context_get_page_setup(context: *mut GtkPrintContext) -> *mut GtkPageSetup;
    pub fn gtk_print_context_get_pango_fontmap(
        context: *mut GtkPrintContext,
    ) -> *mut pango::PangoFontMap;
    pub fn gtk_print_context_get_width(context: *mut GtkPrintContext) -> c_double;
    pub fn gtk_print_context_set_cairo_context(
        context: *mut GtkPrintContext,
        cr: *mut cairo::cairo_t,
        dpi_x: c_double,
        dpi_y: c_double,
    );

    //=========================================================================
    // GtkPrintOperation
    //=========================================================================
    pub fn gtk_print_operation_get_type() -> GType;
    pub fn gtk_print_operation_new() -> *mut GtkPrintOperation;
    pub fn gtk_print_operation_cancel(op: *mut GtkPrintOperation);
    pub fn gtk_print_operation_draw_page_finish(op: *mut GtkPrintOperation);
    pub fn gtk_print_operation_get_default_page_setup(
        op: *mut GtkPrintOperation,
    ) -> *mut GtkPageSetup;
    pub fn gtk_print_operation_get_embed_page_setup(op: *mut GtkPrintOperation) -> gboolean;
    pub fn gtk_print_operation_get_error(op: *mut GtkPrintOperation, error: *mut *mut glib::GError);
    pub fn gtk_print_operation_get_has_selection(op: *mut GtkPrintOperation) -> gboolean;
    pub fn gtk_print_operation_get_n_pages_to_print(op: *mut GtkPrintOperation) -> c_int;
    pub fn gtk_print_operation_get_print_settings(
        op: *mut GtkPrintOperation,
    ) -> *mut GtkPrintSettings;
    pub fn gtk_print_operation_get_status(op: *mut GtkPrintOperation) -> GtkPrintStatus;
    pub fn gtk_print_operation_get_status_string(op: *mut GtkPrintOperation) -> *const c_char;
    pub fn gtk_print_operation_get_support_selection(op: *mut GtkPrintOperation) -> gboolean;
    pub fn gtk_print_operation_is_finished(op: *mut GtkPrintOperation) -> gboolean;
    pub fn gtk_print_operation_run(
        op: *mut GtkPrintOperation,
        action: GtkPrintOperationAction,
        parent: *mut GtkWindow,
        error: *mut *mut glib::GError,
    ) -> GtkPrintOperationResult;
    pub fn gtk_print_operation_set_allow_async(op: *mut GtkPrintOperation, allow_async: gboolean);
    pub fn gtk_print_operation_set_current_page(op: *mut GtkPrintOperation, current_page: c_int);
    pub fn gtk_print_operation_set_custom_tab_label(
        op: *mut GtkPrintOperation,
        label: *const c_char,
    );
    pub fn gtk_print_operation_set_default_page_setup(
        op: *mut GtkPrintOperation,
        default_page_setup: *mut GtkPageSetup,
    );
    pub fn gtk_print_operation_set_defer_drawing(op: *mut GtkPrintOperation);
    pub fn gtk_print_operation_set_embed_page_setup(op: *mut GtkPrintOperation, embed: gboolean);
    pub fn gtk_print_operation_set_export_filename(
        op: *mut GtkPrintOperation,
        filename: *const c_char,
    );
    pub fn gtk_print_operation_set_has_selection(
        op: *mut GtkPrintOperation,
        has_selection: gboolean,
    );
    pub fn gtk_print_operation_set_job_name(op: *mut GtkPrintOperation, job_name: *const c_char);
    pub fn gtk_print_operation_set_n_pages(op: *mut GtkPrintOperation, n_pages: c_int);
    pub fn gtk_print_operation_set_print_settings(
        op: *mut GtkPrintOperation,
        print_settings: *mut GtkPrintSettings,
    );
    pub fn gtk_print_operation_set_show_progress(
        op: *mut GtkPrintOperation,
        show_progress: gboolean,
    );
    pub fn gtk_print_operation_set_support_selection(
        op: *mut GtkPrintOperation,
        support_selection: gboolean,
    );
    pub fn gtk_print_operation_set_track_print_status(
        op: *mut GtkPrintOperation,
        track_status: gboolean,
    );
    pub fn gtk_print_operation_set_unit(op: *mut GtkPrintOperation, unit: GtkUnit);
    pub fn gtk_print_operation_set_use_full_page(op: *mut GtkPrintOperation, full_page: gboolean);

    //=========================================================================
    // GtkPrintSettings
    //=========================================================================
    pub fn gtk_print_settings_get_type() -> GType;
    pub fn gtk_print_settings_new() -> *mut GtkPrintSettings;
    pub fn gtk_print_settings_new_from_file(
        file_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> *mut GtkPrintSettings;
    pub fn gtk_print_settings_new_from_gvariant(
        variant: *mut glib::GVariant,
    ) -> *mut GtkPrintSettings;
    pub fn gtk_print_settings_new_from_key_file(
        key_file: *mut glib::GKeyFile,
        group_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> *mut GtkPrintSettings;
    pub fn gtk_print_settings_copy(other: *mut GtkPrintSettings) -> *mut GtkPrintSettings;
    pub fn gtk_print_settings_foreach(
        settings: *mut GtkPrintSettings,
        func: GtkPrintSettingsFunc,
        user_data: gpointer,
    );
    pub fn gtk_print_settings_get(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
    ) -> *const c_char;
    pub fn gtk_print_settings_get_bool(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
    ) -> gboolean;
    pub fn gtk_print_settings_get_collate(settings: *mut GtkPrintSettings) -> gboolean;
    pub fn gtk_print_settings_get_default_source(settings: *mut GtkPrintSettings) -> *const c_char;
    pub fn gtk_print_settings_get_dither(settings: *mut GtkPrintSettings) -> *const c_char;
    pub fn gtk_print_settings_get_double(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
    ) -> c_double;
    pub fn gtk_print_settings_get_double_with_default(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
        def: c_double,
    ) -> c_double;
    pub fn gtk_print_settings_get_duplex(settings: *mut GtkPrintSettings) -> GtkPrintDuplex;
    pub fn gtk_print_settings_get_finishings(settings: *mut GtkPrintSettings) -> *const c_char;
    pub fn gtk_print_settings_get_int(settings: *mut GtkPrintSettings, key: *const c_char)
        -> c_int;
    pub fn gtk_print_settings_get_int_with_default(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
        def: c_int,
    ) -> c_int;
    pub fn gtk_print_settings_get_length(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
        unit: GtkUnit,
    ) -> c_double;
    pub fn gtk_print_settings_get_media_type(settings: *mut GtkPrintSettings) -> *const c_char;
    pub fn gtk_print_settings_get_n_copies(settings: *mut GtkPrintSettings) -> c_int;
    pub fn gtk_print_settings_get_number_up(settings: *mut GtkPrintSettings) -> c_int;
    pub fn gtk_print_settings_get_number_up_layout(
        settings: *mut GtkPrintSettings,
    ) -> GtkNumberUpLayout;
    pub fn gtk_print_settings_get_orientation(
        settings: *mut GtkPrintSettings,
    ) -> GtkPageOrientation;
    pub fn gtk_print_settings_get_output_bin(settings: *mut GtkPrintSettings) -> *const c_char;
    pub fn gtk_print_settings_get_page_ranges(
        settings: *mut GtkPrintSettings,
        num_ranges: *mut c_int,
    ) -> *mut GtkPageRange;
    pub fn gtk_print_settings_get_page_set(settings: *mut GtkPrintSettings) -> GtkPageSet;
    pub fn gtk_print_settings_get_paper_height(
        settings: *mut GtkPrintSettings,
        unit: GtkUnit,
    ) -> c_double;
    pub fn gtk_print_settings_get_paper_size(settings: *mut GtkPrintSettings) -> *mut GtkPaperSize;
    pub fn gtk_print_settings_get_paper_width(
        settings: *mut GtkPrintSettings,
        unit: GtkUnit,
    ) -> c_double;
    pub fn gtk_print_settings_get_print_pages(settings: *mut GtkPrintSettings) -> GtkPrintPages;
    pub fn gtk_print_settings_get_printer(settings: *mut GtkPrintSettings) -> *const c_char;
    pub fn gtk_print_settings_get_printer_lpi(settings: *mut GtkPrintSettings) -> c_double;
    pub fn gtk_print_settings_get_quality(settings: *mut GtkPrintSettings) -> GtkPrintQuality;
    pub fn gtk_print_settings_get_resolution(settings: *mut GtkPrintSettings) -> c_int;
    pub fn gtk_print_settings_get_resolution_x(settings: *mut GtkPrintSettings) -> c_int;
    pub fn gtk_print_settings_get_resolution_y(settings: *mut GtkPrintSettings) -> c_int;
    pub fn gtk_print_settings_get_reverse(settings: *mut GtkPrintSettings) -> gboolean;
    pub fn gtk_print_settings_get_scale(settings: *mut GtkPrintSettings) -> c_double;
    pub fn gtk_print_settings_get_use_color(settings: *mut GtkPrintSettings) -> gboolean;
    pub fn gtk_print_settings_has_key(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
    ) -> gboolean;
    pub fn gtk_print_settings_load_file(
        settings: *mut GtkPrintSettings,
        file_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_print_settings_load_key_file(
        settings: *mut GtkPrintSettings,
        key_file: *mut glib::GKeyFile,
        group_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_print_settings_set(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
        value: *const c_char,
    );
    pub fn gtk_print_settings_set_bool(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
        value: gboolean,
    );
    pub fn gtk_print_settings_set_collate(settings: *mut GtkPrintSettings, collate: gboolean);
    pub fn gtk_print_settings_set_default_source(
        settings: *mut GtkPrintSettings,
        default_source: *const c_char,
    );
    pub fn gtk_print_settings_set_dither(settings: *mut GtkPrintSettings, dither: *const c_char);
    pub fn gtk_print_settings_set_double(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
        value: c_double,
    );
    pub fn gtk_print_settings_set_duplex(settings: *mut GtkPrintSettings, duplex: GtkPrintDuplex);
    pub fn gtk_print_settings_set_finishings(
        settings: *mut GtkPrintSettings,
        finishings: *const c_char,
    );
    pub fn gtk_print_settings_set_int(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
        value: c_int,
    );
    pub fn gtk_print_settings_set_length(
        settings: *mut GtkPrintSettings,
        key: *const c_char,
        value: c_double,
        unit: GtkUnit,
    );
    pub fn gtk_print_settings_set_media_type(
        settings: *mut GtkPrintSettings,
        media_type: *const c_char,
    );
    pub fn gtk_print_settings_set_n_copies(settings: *mut GtkPrintSettings, num_copies: c_int);
    pub fn gtk_print_settings_set_number_up(settings: *mut GtkPrintSettings, number_up: c_int);
    pub fn gtk_print_settings_set_number_up_layout(
        settings: *mut GtkPrintSettings,
        number_up_layout: GtkNumberUpLayout,
    );
    pub fn gtk_print_settings_set_orientation(
        settings: *mut GtkPrintSettings,
        orientation: GtkPageOrientation,
    );
    pub fn gtk_print_settings_set_output_bin(
        settings: *mut GtkPrintSettings,
        output_bin: *const c_char,
    );
    pub fn gtk_print_settings_set_page_ranges(
        settings: *mut GtkPrintSettings,
        page_ranges: *mut GtkPageRange,
        num_ranges: c_int,
    );
    pub fn gtk_print_settings_set_page_set(settings: *mut GtkPrintSettings, page_set: GtkPageSet);
    pub fn gtk_print_settings_set_paper_height(
        settings: *mut GtkPrintSettings,
        height: c_double,
        unit: GtkUnit,
    );
    pub fn gtk_print_settings_set_paper_size(
        settings: *mut GtkPrintSettings,
        paper_size: *mut GtkPaperSize,
    );
    pub fn gtk_print_settings_set_paper_width(
        settings: *mut GtkPrintSettings,
        width: c_double,
        unit: GtkUnit,
    );
    pub fn gtk_print_settings_set_print_pages(
        settings: *mut GtkPrintSettings,
        pages: GtkPrintPages,
    );
    pub fn gtk_print_settings_set_printer(settings: *mut GtkPrintSettings, printer: *const c_char);
    pub fn gtk_print_settings_set_printer_lpi(settings: *mut GtkPrintSettings, lpi: c_double);
    pub fn gtk_print_settings_set_quality(
        settings: *mut GtkPrintSettings,
        quality: GtkPrintQuality,
    );
    pub fn gtk_print_settings_set_resolution(settings: *mut GtkPrintSettings, resolution: c_int);
    pub fn gtk_print_settings_set_resolution_xy(
        settings: *mut GtkPrintSettings,
        resolution_x: c_int,
        resolution_y: c_int,
    );
    pub fn gtk_print_settings_set_reverse(settings: *mut GtkPrintSettings, reverse: gboolean);
    pub fn gtk_print_settings_set_scale(settings: *mut GtkPrintSettings, scale: c_double);
    pub fn gtk_print_settings_set_use_color(settings: *mut GtkPrintSettings, use_color: gboolean);
    pub fn gtk_print_settings_to_file(
        settings: *mut GtkPrintSettings,
        file_name: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_print_settings_to_gvariant(settings: *mut GtkPrintSettings) -> *mut glib::GVariant;
    pub fn gtk_print_settings_to_key_file(
        settings: *mut GtkPrintSettings,
        key_file: *mut glib::GKeyFile,
        group_name: *const c_char,
    );
    pub fn gtk_print_settings_unset(settings: *mut GtkPrintSettings, key: *const c_char);

    //=========================================================================
    // GtkProgressBar
    //=========================================================================
    pub fn gtk_progress_bar_get_type() -> GType;
    pub fn gtk_progress_bar_new() -> *mut GtkWidget;
    pub fn gtk_progress_bar_get_ellipsize(pbar: *mut GtkProgressBar) -> pango::PangoEllipsizeMode;
    pub fn gtk_progress_bar_get_fraction(pbar: *mut GtkProgressBar) -> c_double;
    pub fn gtk_progress_bar_get_inverted(pbar: *mut GtkProgressBar) -> gboolean;
    pub fn gtk_progress_bar_get_pulse_step(pbar: *mut GtkProgressBar) -> c_double;
    pub fn gtk_progress_bar_get_show_text(pbar: *mut GtkProgressBar) -> gboolean;
    pub fn gtk_progress_bar_get_text(pbar: *mut GtkProgressBar) -> *const c_char;
    pub fn gtk_progress_bar_pulse(pbar: *mut GtkProgressBar);
    pub fn gtk_progress_bar_set_ellipsize(
        pbar: *mut GtkProgressBar,
        mode: pango::PangoEllipsizeMode,
    );
    pub fn gtk_progress_bar_set_fraction(pbar: *mut GtkProgressBar, fraction: c_double);
    pub fn gtk_progress_bar_set_inverted(pbar: *mut GtkProgressBar, inverted: gboolean);
    pub fn gtk_progress_bar_set_pulse_step(pbar: *mut GtkProgressBar, fraction: c_double);
    pub fn gtk_progress_bar_set_show_text(pbar: *mut GtkProgressBar, show_text: gboolean);
    pub fn gtk_progress_bar_set_text(pbar: *mut GtkProgressBar, text: *const c_char);

    //=========================================================================
    // GtkProgressBarAccessible
    //=========================================================================
    pub fn gtk_progress_bar_accessible_get_type() -> GType;

    //=========================================================================
    // GtkRadioAction
    //=========================================================================
    pub fn gtk_radio_action_get_type() -> GType;
    pub fn gtk_radio_action_new(
        name: *const c_char,
        label: *const c_char,
        tooltip: *const c_char,
        stock_id: *const c_char,
        value: c_int,
    ) -> *mut GtkRadioAction;
    pub fn gtk_radio_action_get_current_value(action: *mut GtkRadioAction) -> c_int;
    pub fn gtk_radio_action_get_group(action: *mut GtkRadioAction) -> *mut glib::GSList;
    pub fn gtk_radio_action_join_group(
        action: *mut GtkRadioAction,
        group_source: *mut GtkRadioAction,
    );
    pub fn gtk_radio_action_set_current_value(action: *mut GtkRadioAction, current_value: c_int);
    pub fn gtk_radio_action_set_group(action: *mut GtkRadioAction, group: *mut glib::GSList);

    //=========================================================================
    // GtkRadioButton
    //=========================================================================
    pub fn gtk_radio_button_get_type() -> GType;
    pub fn gtk_radio_button_new(group: *mut glib::GSList) -> *mut GtkWidget;
    pub fn gtk_radio_button_new_from_widget(
        radio_group_member: *mut GtkRadioButton,
    ) -> *mut GtkWidget;
    pub fn gtk_radio_button_new_with_label(
        group: *mut glib::GSList,
        label: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_radio_button_new_with_label_from_widget(
        radio_group_member: *mut GtkRadioButton,
        label: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_radio_button_new_with_mnemonic(
        group: *mut glib::GSList,
        label: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_radio_button_new_with_mnemonic_from_widget(
        radio_group_member: *mut GtkRadioButton,
        label: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_radio_button_get_group(radio_button: *mut GtkRadioButton) -> *mut glib::GSList;
    pub fn gtk_radio_button_join_group(
        radio_button: *mut GtkRadioButton,
        group_source: *mut GtkRadioButton,
    );
    pub fn gtk_radio_button_set_group(radio_button: *mut GtkRadioButton, group: *mut glib::GSList);

    //=========================================================================
    // GtkRadioButtonAccessible
    //=========================================================================
    pub fn gtk_radio_button_accessible_get_type() -> GType;

    //=========================================================================
    // GtkRadioMenuItem
    //=========================================================================
    pub fn gtk_radio_menu_item_get_type() -> GType;
    pub fn gtk_radio_menu_item_new(group: *mut glib::GSList) -> *mut GtkWidget;
    pub fn gtk_radio_menu_item_new_from_widget(group: *mut GtkRadioMenuItem) -> *mut GtkWidget;
    pub fn gtk_radio_menu_item_new_with_label(
        group: *mut glib::GSList,
        label: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_radio_menu_item_new_with_label_from_widget(
        group: *mut GtkRadioMenuItem,
        label: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_radio_menu_item_new_with_mnemonic(
        group: *mut glib::GSList,
        label: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_radio_menu_item_new_with_mnemonic_from_widget(
        group: *mut GtkRadioMenuItem,
        label: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_radio_menu_item_get_group(
        radio_menu_item: *mut GtkRadioMenuItem,
    ) -> *mut glib::GSList;
    pub fn gtk_radio_menu_item_join_group(
        radio_menu_item: *mut GtkRadioMenuItem,
        group_source: *mut GtkRadioMenuItem,
    );
    pub fn gtk_radio_menu_item_set_group(
        radio_menu_item: *mut GtkRadioMenuItem,
        group: *mut glib::GSList,
    );

    //=========================================================================
    // GtkRadioMenuItemAccessible
    //=========================================================================
    pub fn gtk_radio_menu_item_accessible_get_type() -> GType;

    //=========================================================================
    // GtkRadioToolButton
    //=========================================================================
    pub fn gtk_radio_tool_button_get_type() -> GType;
    pub fn gtk_radio_tool_button_new(group: *mut glib::GSList) -> *mut GtkToolItem;
    pub fn gtk_radio_tool_button_new_from_stock(
        group: *mut glib::GSList,
        stock_id: *const c_char,
    ) -> *mut GtkToolItem;
    pub fn gtk_radio_tool_button_new_from_widget(
        group: *mut GtkRadioToolButton,
    ) -> *mut GtkToolItem;
    pub fn gtk_radio_tool_button_new_with_stock_from_widget(
        group: *mut GtkRadioToolButton,
        stock_id: *const c_char,
    ) -> *mut GtkToolItem;
    pub fn gtk_radio_tool_button_get_group(button: *mut GtkRadioToolButton) -> *mut glib::GSList;
    pub fn gtk_radio_tool_button_set_group(
        button: *mut GtkRadioToolButton,
        group: *mut glib::GSList,
    );

    //=========================================================================
    // GtkRange
    //=========================================================================
    pub fn gtk_range_get_type() -> GType;
    pub fn gtk_range_get_adjustment(range: *mut GtkRange) -> *mut GtkAdjustment;
    pub fn gtk_range_get_fill_level(range: *mut GtkRange) -> c_double;
    pub fn gtk_range_get_flippable(range: *mut GtkRange) -> gboolean;
    pub fn gtk_range_get_inverted(range: *mut GtkRange) -> gboolean;
    pub fn gtk_range_get_lower_stepper_sensitivity(range: *mut GtkRange) -> GtkSensitivityType;
    pub fn gtk_range_get_min_slider_size(range: *mut GtkRange) -> c_int;
    pub fn gtk_range_get_range_rect(range: *mut GtkRange, range_rect: *mut gdk::GdkRectangle);
    pub fn gtk_range_get_restrict_to_fill_level(range: *mut GtkRange) -> gboolean;
    pub fn gtk_range_get_round_digits(range: *mut GtkRange) -> c_int;
    pub fn gtk_range_get_show_fill_level(range: *mut GtkRange) -> gboolean;
    pub fn gtk_range_get_slider_range(
        range: *mut GtkRange,
        slider_start: *mut c_int,
        slider_end: *mut c_int,
    );
    pub fn gtk_range_get_slider_size_fixed(range: *mut GtkRange) -> gboolean;
    pub fn gtk_range_get_upper_stepper_sensitivity(range: *mut GtkRange) -> GtkSensitivityType;
    pub fn gtk_range_get_value(range: *mut GtkRange) -> c_double;
    pub fn gtk_range_set_adjustment(range: *mut GtkRange, adjustment: *mut GtkAdjustment);
    pub fn gtk_range_set_fill_level(range: *mut GtkRange, fill_level: c_double);
    pub fn gtk_range_set_flippable(range: *mut GtkRange, flippable: gboolean);
    pub fn gtk_range_set_increments(range: *mut GtkRange, step: c_double, page: c_double);
    pub fn gtk_range_set_inverted(range: *mut GtkRange, setting: gboolean);
    pub fn gtk_range_set_lower_stepper_sensitivity(
        range: *mut GtkRange,
        sensitivity: GtkSensitivityType,
    );
    pub fn gtk_range_set_min_slider_size(range: *mut GtkRange, min_size: c_int);
    pub fn gtk_range_set_range(range: *mut GtkRange, min: c_double, max: c_double);
    pub fn gtk_range_set_restrict_to_fill_level(
        range: *mut GtkRange,
        restrict_to_fill_level: gboolean,
    );
    pub fn gtk_range_set_round_digits(range: *mut GtkRange, round_digits: c_int);
    pub fn gtk_range_set_show_fill_level(range: *mut GtkRange, show_fill_level: gboolean);
    pub fn gtk_range_set_slider_size_fixed(range: *mut GtkRange, size_fixed: gboolean);
    pub fn gtk_range_set_upper_stepper_sensitivity(
        range: *mut GtkRange,
        sensitivity: GtkSensitivityType,
    );
    pub fn gtk_range_set_value(range: *mut GtkRange, value: c_double);

    //=========================================================================
    // GtkRangeAccessible
    //=========================================================================
    pub fn gtk_range_accessible_get_type() -> GType;

    //=========================================================================
    // GtkRcStyle
    //=========================================================================
    pub fn gtk_rc_style_get_type() -> GType;
    pub fn gtk_rc_style_new() -> *mut GtkRcStyle;
    pub fn gtk_rc_style_copy(orig: *mut GtkRcStyle) -> *mut GtkRcStyle;

    //=========================================================================
    // GtkRecentAction
    //=========================================================================
    pub fn gtk_recent_action_get_type() -> GType;
    pub fn gtk_recent_action_new(
        name: *const c_char,
        label: *const c_char,
        tooltip: *const c_char,
        stock_id: *const c_char,
    ) -> *mut GtkAction;
    pub fn gtk_recent_action_new_for_manager(
        name: *const c_char,
        label: *const c_char,
        tooltip: *const c_char,
        stock_id: *const c_char,
        manager: *mut GtkRecentManager,
    ) -> *mut GtkAction;
    pub fn gtk_recent_action_get_show_numbers(action: *mut GtkRecentAction) -> gboolean;
    pub fn gtk_recent_action_set_show_numbers(action: *mut GtkRecentAction, show_numbers: gboolean);

    //=========================================================================
    // GtkRecentChooserDialog
    //=========================================================================
    pub fn gtk_recent_chooser_dialog_get_type() -> GType;
    pub fn gtk_recent_chooser_dialog_new(
        title: *const c_char,
        parent: *mut GtkWindow,
        first_button_text: *const c_char,
        ...
    ) -> *mut GtkWidget;
    pub fn gtk_recent_chooser_dialog_new_for_manager(
        title: *const c_char,
        parent: *mut GtkWindow,
        manager: *mut GtkRecentManager,
        first_button_text: *const c_char,
        ...
    ) -> *mut GtkWidget;

    //=========================================================================
    // GtkRecentChooserMenu
    //=========================================================================
    pub fn gtk_recent_chooser_menu_get_type() -> GType;
    pub fn gtk_recent_chooser_menu_new() -> *mut GtkWidget;
    pub fn gtk_recent_chooser_menu_new_for_manager(
        manager: *mut GtkRecentManager,
    ) -> *mut GtkWidget;
    pub fn gtk_recent_chooser_menu_get_show_numbers(menu: *mut GtkRecentChooserMenu) -> gboolean;
    pub fn gtk_recent_chooser_menu_set_show_numbers(
        menu: *mut GtkRecentChooserMenu,
        show_numbers: gboolean,
    );

    //=========================================================================
    // GtkRecentChooserWidget
    //=========================================================================
    pub fn gtk_recent_chooser_widget_get_type() -> GType;
    pub fn gtk_recent_chooser_widget_new() -> *mut GtkWidget;
    pub fn gtk_recent_chooser_widget_new_for_manager(
        manager: *mut GtkRecentManager,
    ) -> *mut GtkWidget;

    //=========================================================================
    // GtkRecentFilter
    //=========================================================================
    pub fn gtk_recent_filter_get_type() -> GType;
    pub fn gtk_recent_filter_new() -> *mut GtkRecentFilter;
    pub fn gtk_recent_filter_add_age(filter: *mut GtkRecentFilter, days: c_int);
    pub fn gtk_recent_filter_add_application(
        filter: *mut GtkRecentFilter,
        application: *const c_char,
    );
    pub fn gtk_recent_filter_add_custom(
        filter: *mut GtkRecentFilter,
        needed: GtkRecentFilterFlags,
        func: GtkRecentFilterFunc,
        data: gpointer,
        data_destroy: glib::GDestroyNotify,
    );
    pub fn gtk_recent_filter_add_group(filter: *mut GtkRecentFilter, group: *const c_char);
    pub fn gtk_recent_filter_add_mime_type(filter: *mut GtkRecentFilter, mime_type: *const c_char);
    pub fn gtk_recent_filter_add_pattern(filter: *mut GtkRecentFilter, pattern: *const c_char);
    pub fn gtk_recent_filter_add_pixbuf_formats(filter: *mut GtkRecentFilter);
    pub fn gtk_recent_filter_filter(
        filter: *mut GtkRecentFilter,
        filter_info: *const GtkRecentFilterInfo,
    ) -> gboolean;
    pub fn gtk_recent_filter_get_name(filter: *mut GtkRecentFilter) -> *const c_char;
    pub fn gtk_recent_filter_get_needed(filter: *mut GtkRecentFilter) -> GtkRecentFilterFlags;
    pub fn gtk_recent_filter_set_name(filter: *mut GtkRecentFilter, name: *const c_char);

    //=========================================================================
    // GtkRecentManager
    //=========================================================================
    pub fn gtk_recent_manager_get_type() -> GType;
    pub fn gtk_recent_manager_new() -> *mut GtkRecentManager;
    pub fn gtk_recent_manager_get_default() -> *mut GtkRecentManager;
    pub fn gtk_recent_manager_add_full(
        manager: *mut GtkRecentManager,
        uri: *const c_char,
        recent_data: *const GtkRecentData,
    ) -> gboolean;
    pub fn gtk_recent_manager_add_item(
        manager: *mut GtkRecentManager,
        uri: *const c_char,
    ) -> gboolean;
    pub fn gtk_recent_manager_get_items(manager: *mut GtkRecentManager) -> *mut glib::GList;
    pub fn gtk_recent_manager_has_item(
        manager: *mut GtkRecentManager,
        uri: *const c_char,
    ) -> gboolean;
    pub fn gtk_recent_manager_lookup_item(
        manager: *mut GtkRecentManager,
        uri: *const c_char,
        error: *mut *mut glib::GError,
    ) -> *mut GtkRecentInfo;
    pub fn gtk_recent_manager_move_item(
        manager: *mut GtkRecentManager,
        uri: *const c_char,
        new_uri: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_recent_manager_purge_items(
        manager: *mut GtkRecentManager,
        error: *mut *mut glib::GError,
    ) -> c_int;
    pub fn gtk_recent_manager_remove_item(
        manager: *mut GtkRecentManager,
        uri: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;

    //=========================================================================
    // GtkRendererCellAccessible
    //=========================================================================
    pub fn gtk_renderer_cell_accessible_get_type() -> GType;
    pub fn gtk_renderer_cell_accessible_new(renderer: *mut GtkCellRenderer) -> *mut atk::AtkObject;

    //=========================================================================
    // GtkRevealer
    //=========================================================================
    pub fn gtk_revealer_get_type() -> GType;
    pub fn gtk_revealer_new() -> *mut GtkWidget;
    pub fn gtk_revealer_get_child_revealed(revealer: *mut GtkRevealer) -> gboolean;
    pub fn gtk_revealer_get_reveal_child(revealer: *mut GtkRevealer) -> gboolean;
    pub fn gtk_revealer_get_transition_duration(revealer: *mut GtkRevealer) -> c_uint;
    pub fn gtk_revealer_get_transition_type(
        revealer: *mut GtkRevealer,
    ) -> GtkRevealerTransitionType;
    pub fn gtk_revealer_set_reveal_child(revealer: *mut GtkRevealer, reveal_child: gboolean);
    pub fn gtk_revealer_set_transition_duration(revealer: *mut GtkRevealer, duration: c_uint);
    pub fn gtk_revealer_set_transition_type(
        revealer: *mut GtkRevealer,
        transition: GtkRevealerTransitionType,
    );

    //=========================================================================
    // GtkScale
    //=========================================================================
    pub fn gtk_scale_get_type() -> GType;
    pub fn gtk_scale_new(
        orientation: GtkOrientation,
        adjustment: *mut GtkAdjustment,
    ) -> *mut GtkWidget;
    pub fn gtk_scale_new_with_range(
        orientation: GtkOrientation,
        min: c_double,
        max: c_double,
        step: c_double,
    ) -> *mut GtkWidget;
    pub fn gtk_scale_add_mark(
        scale: *mut GtkScale,
        value: c_double,
        position: GtkPositionType,
        markup: *const c_char,
    );
    pub fn gtk_scale_clear_marks(scale: *mut GtkScale);
    pub fn gtk_scale_get_digits(scale: *mut GtkScale) -> c_int;
    pub fn gtk_scale_get_draw_value(scale: *mut GtkScale) -> gboolean;
    pub fn gtk_scale_get_has_origin(scale: *mut GtkScale) -> gboolean;
    pub fn gtk_scale_get_layout(scale: *mut GtkScale) -> *mut pango::PangoLayout;
    pub fn gtk_scale_get_layout_offsets(scale: *mut GtkScale, x: *mut c_int, y: *mut c_int);
    pub fn gtk_scale_get_value_pos(scale: *mut GtkScale) -> GtkPositionType;
    pub fn gtk_scale_set_digits(scale: *mut GtkScale, digits: c_int);
    pub fn gtk_scale_set_draw_value(scale: *mut GtkScale, draw_value: gboolean);
    pub fn gtk_scale_set_has_origin(scale: *mut GtkScale, has_origin: gboolean);
    pub fn gtk_scale_set_value_pos(scale: *mut GtkScale, pos: GtkPositionType);

    //=========================================================================
    // GtkScaleAccessible
    //=========================================================================
    pub fn gtk_scale_accessible_get_type() -> GType;

    //=========================================================================
    // GtkScaleButton
    //=========================================================================
    pub fn gtk_scale_button_get_type() -> GType;
    pub fn gtk_scale_button_new(
        size: GtkIconSize,
        min: c_double,
        max: c_double,
        step: c_double,
        icons: *mut *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_scale_button_get_adjustment(button: *mut GtkScaleButton) -> *mut GtkAdjustment;
    pub fn gtk_scale_button_get_minus_button(button: *mut GtkScaleButton) -> *mut GtkButton;
    pub fn gtk_scale_button_get_plus_button(button: *mut GtkScaleButton) -> *mut GtkButton;
    pub fn gtk_scale_button_get_popup(button: *mut GtkScaleButton) -> *mut GtkWidget;
    pub fn gtk_scale_button_get_value(button: *mut GtkScaleButton) -> c_double;
    pub fn gtk_scale_button_set_adjustment(
        button: *mut GtkScaleButton,
        adjustment: *mut GtkAdjustment,
    );
    pub fn gtk_scale_button_set_icons(button: *mut GtkScaleButton, icons: *mut *const c_char);
    pub fn gtk_scale_button_set_value(button: *mut GtkScaleButton, value: c_double);

    //=========================================================================
    // GtkScaleButtonAccessible
    //=========================================================================
    pub fn gtk_scale_button_accessible_get_type() -> GType;

    //=========================================================================
    // GtkScrollbar
    //=========================================================================
    pub fn gtk_scrollbar_get_type() -> GType;
    pub fn gtk_scrollbar_new(
        orientation: GtkOrientation,
        adjustment: *mut GtkAdjustment,
    ) -> *mut GtkWidget;

    //=========================================================================
    // GtkScrolledWindow
    //=========================================================================
    pub fn gtk_scrolled_window_get_type() -> GType;
    pub fn gtk_scrolled_window_new(
        hadjustment: *mut GtkAdjustment,
        vadjustment: *mut GtkAdjustment,
    ) -> *mut GtkWidget;
    pub fn gtk_scrolled_window_add_with_viewport(
        scrolled_window: *mut GtkScrolledWindow,
        child: *mut GtkWidget,
    );
    pub fn gtk_scrolled_window_get_capture_button_press(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> gboolean;
    pub fn gtk_scrolled_window_get_hadjustment(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> *mut GtkAdjustment;
    pub fn gtk_scrolled_window_get_hscrollbar(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> *mut GtkWidget;
    pub fn gtk_scrolled_window_get_kinetic_scrolling(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> gboolean;
    pub fn gtk_scrolled_window_get_max_content_height(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> c_int;
    pub fn gtk_scrolled_window_get_max_content_width(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> c_int;
    pub fn gtk_scrolled_window_get_min_content_height(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> c_int;
    pub fn gtk_scrolled_window_get_min_content_width(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> c_int;
    pub fn gtk_scrolled_window_get_overlay_scrolling(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> gboolean;
    pub fn gtk_scrolled_window_get_placement(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> GtkCornerType;
    pub fn gtk_scrolled_window_get_policy(
        scrolled_window: *mut GtkScrolledWindow,
        hscrollbar_policy: *mut GtkPolicyType,
        vscrollbar_policy: *mut GtkPolicyType,
    );
    pub fn gtk_scrolled_window_get_propagate_natural_height(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> gboolean;
    pub fn gtk_scrolled_window_get_propagate_natural_width(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> gboolean;
    pub fn gtk_scrolled_window_get_shadow_type(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> GtkShadowType;
    pub fn gtk_scrolled_window_get_vadjustment(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> *mut GtkAdjustment;
    pub fn gtk_scrolled_window_get_vscrollbar(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> *mut GtkWidget;
    pub fn gtk_scrolled_window_set_capture_button_press(
        scrolled_window: *mut GtkScrolledWindow,
        capture_button_press: gboolean,
    );
    pub fn gtk_scrolled_window_set_hadjustment(
        scrolled_window: *mut GtkScrolledWindow,
        hadjustment: *mut GtkAdjustment,
    );
    pub fn gtk_scrolled_window_set_kinetic_scrolling(
        scrolled_window: *mut GtkScrolledWindow,
        kinetic_scrolling: gboolean,
    );
    pub fn gtk_scrolled_window_set_max_content_height(
        scrolled_window: *mut GtkScrolledWindow,
        height: c_int,
    );
    pub fn gtk_scrolled_window_set_max_content_width(
        scrolled_window: *mut GtkScrolledWindow,
        width: c_int,
    );
    pub fn gtk_scrolled_window_set_min_content_height(
        scrolled_window: *mut GtkScrolledWindow,
        height: c_int,
    );
    pub fn gtk_scrolled_window_set_min_content_width(
        scrolled_window: *mut GtkScrolledWindow,
        width: c_int,
    );
    pub fn gtk_scrolled_window_set_overlay_scrolling(
        scrolled_window: *mut GtkScrolledWindow,
        overlay_scrolling: gboolean,
    );
    pub fn gtk_scrolled_window_set_placement(
        scrolled_window: *mut GtkScrolledWindow,
        window_placement: GtkCornerType,
    );
    pub fn gtk_scrolled_window_set_policy(
        scrolled_window: *mut GtkScrolledWindow,
        hscrollbar_policy: GtkPolicyType,
        vscrollbar_policy: GtkPolicyType,
    );
    pub fn gtk_scrolled_window_set_propagate_natural_height(
        scrolled_window: *mut GtkScrolledWindow,
        propagate: gboolean,
    );
    pub fn gtk_scrolled_window_set_propagate_natural_width(
        scrolled_window: *mut GtkScrolledWindow,
        propagate: gboolean,
    );
    pub fn gtk_scrolled_window_set_shadow_type(
        scrolled_window: *mut GtkScrolledWindow,
        type_: GtkShadowType,
    );
    pub fn gtk_scrolled_window_set_vadjustment(
        scrolled_window: *mut GtkScrolledWindow,
        vadjustment: *mut GtkAdjustment,
    );
    pub fn gtk_scrolled_window_unset_placement(scrolled_window: *mut GtkScrolledWindow);

    //=========================================================================
    // GtkScrolledWindowAccessible
    //=========================================================================
    pub fn gtk_scrolled_window_accessible_get_type() -> GType;

    //=========================================================================
    // GtkSearchBar
    //=========================================================================
    pub fn gtk_search_bar_get_type() -> GType;
    pub fn gtk_search_bar_new() -> *mut GtkWidget;
    pub fn gtk_search_bar_connect_entry(bar: *mut GtkSearchBar, entry: *mut GtkEntry);
    pub fn gtk_search_bar_get_search_mode(bar: *mut GtkSearchBar) -> gboolean;
    pub fn gtk_search_bar_get_show_close_button(bar: *mut GtkSearchBar) -> gboolean;
    pub fn gtk_search_bar_handle_event(
        bar: *mut GtkSearchBar,
        event: *mut gdk::GdkEvent,
    ) -> gboolean;
    pub fn gtk_search_bar_set_search_mode(bar: *mut GtkSearchBar, search_mode: gboolean);
    pub fn gtk_search_bar_set_show_close_button(bar: *mut GtkSearchBar, visible: gboolean);

    //=========================================================================
    // GtkSearchEntry
    //=========================================================================
    pub fn gtk_search_entry_get_type() -> GType;
    pub fn gtk_search_entry_new() -> *mut GtkWidget;
    pub fn gtk_search_entry_handle_event(
        entry: *mut GtkSearchEntry,
        event: *mut gdk::GdkEvent,
    ) -> gboolean;

    //=========================================================================
    // GtkSeparator
    //=========================================================================
    pub fn gtk_separator_get_type() -> GType;
    pub fn gtk_separator_new(orientation: GtkOrientation) -> *mut GtkWidget;

    //=========================================================================
    // GtkSeparatorMenuItem
    //=========================================================================
    pub fn gtk_separator_menu_item_get_type() -> GType;
    pub fn gtk_separator_menu_item_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkSeparatorToolItem
    //=========================================================================
    pub fn gtk_separator_tool_item_get_type() -> GType;
    pub fn gtk_separator_tool_item_new() -> *mut GtkToolItem;
    pub fn gtk_separator_tool_item_get_draw(item: *mut GtkSeparatorToolItem) -> gboolean;
    pub fn gtk_separator_tool_item_set_draw(item: *mut GtkSeparatorToolItem, draw: gboolean);

    //=========================================================================
    // GtkSettings
    //=========================================================================
    pub fn gtk_settings_get_type() -> GType;
    pub fn gtk_settings_get_default() -> *mut GtkSettings;
    pub fn gtk_settings_get_for_screen(screen: *mut gdk::GdkScreen) -> *mut GtkSettings;
    pub fn gtk_settings_install_property(pspec: *mut gobject::GParamSpec);
    pub fn gtk_settings_install_property_parser(
        pspec: *mut gobject::GParamSpec,
        parser: GtkRcPropertyParser,
    );
    pub fn gtk_settings_reset_property(settings: *mut GtkSettings, name: *const c_char);
    pub fn gtk_settings_set_double_property(
        settings: *mut GtkSettings,
        name: *const c_char,
        v_double: c_double,
        origin: *const c_char,
    );
    pub fn gtk_settings_set_long_property(
        settings: *mut GtkSettings,
        name: *const c_char,
        v_long: c_long,
        origin: *const c_char,
    );
    pub fn gtk_settings_set_property_value(
        settings: *mut GtkSettings,
        name: *const c_char,
        svalue: *const GtkSettingsValue,
    );
    pub fn gtk_settings_set_string_property(
        settings: *mut GtkSettings,
        name: *const c_char,
        v_string: *const c_char,
        origin: *const c_char,
    );

    //=========================================================================
    // GtkShortcutLabel
    //=========================================================================
    pub fn gtk_shortcut_label_get_type() -> GType;
    pub fn gtk_shortcut_label_new(accelerator: *const c_char) -> *mut GtkWidget;
    pub fn gtk_shortcut_label_get_accelerator(self_: *mut GtkShortcutLabel) -> *const c_char;
    pub fn gtk_shortcut_label_get_disabled_text(self_: *mut GtkShortcutLabel) -> *const c_char;
    pub fn gtk_shortcut_label_set_accelerator(
        self_: *mut GtkShortcutLabel,
        accelerator: *const c_char,
    );
    pub fn gtk_shortcut_label_set_disabled_text(
        self_: *mut GtkShortcutLabel,
        disabled_text: *const c_char,
    );

    //=========================================================================
    // GtkShortcutsGroup
    //=========================================================================
    pub fn gtk_shortcuts_group_get_type() -> GType;

    //=========================================================================
    // GtkShortcutsSection
    //=========================================================================
    pub fn gtk_shortcuts_section_get_type() -> GType;

    //=========================================================================
    // GtkShortcutsShortcut
    //=========================================================================
    pub fn gtk_shortcuts_shortcut_get_type() -> GType;

    //=========================================================================
    // GtkShortcutsWindow
    //=========================================================================
    pub fn gtk_shortcuts_window_get_type() -> GType;

    //=========================================================================
    // GtkSizeGroup
    //=========================================================================
    pub fn gtk_size_group_get_type() -> GType;
    pub fn gtk_size_group_new(mode: GtkSizeGroupMode) -> *mut GtkSizeGroup;
    pub fn gtk_size_group_add_widget(size_group: *mut GtkSizeGroup, widget: *mut GtkWidget);
    pub fn gtk_size_group_get_ignore_hidden(size_group: *mut GtkSizeGroup) -> gboolean;
    pub fn gtk_size_group_get_mode(size_group: *mut GtkSizeGroup) -> GtkSizeGroupMode;
    pub fn gtk_size_group_get_widgets(size_group: *mut GtkSizeGroup) -> *mut glib::GSList;
    pub fn gtk_size_group_remove_widget(size_group: *mut GtkSizeGroup, widget: *mut GtkWidget);
    pub fn gtk_size_group_set_ignore_hidden(size_group: *mut GtkSizeGroup, ignore_hidden: gboolean);
    pub fn gtk_size_group_set_mode(size_group: *mut GtkSizeGroup, mode: GtkSizeGroupMode);

    //=========================================================================
    // GtkSocket
    //=========================================================================
    pub fn gtk_socket_get_type() -> GType;
    pub fn gtk_socket_new() -> *mut GtkWidget;
    pub fn gtk_socket_add_id(socket_: *mut GtkSocket, window: xlib::Window);
    pub fn gtk_socket_get_id(socket_: *mut GtkSocket) -> xlib::Window;
    pub fn gtk_socket_get_plug_window(socket_: *mut GtkSocket) -> *mut gdk::GdkWindow;

    //=========================================================================
    // GtkSocketAccessible
    //=========================================================================
    #[cfg(feature = "v3_24_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24_30")))]
    pub fn gtk_socket_accessible_get_type() -> GType;
    #[cfg(feature = "v3_24_30")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24_30")))]
    pub fn gtk_socket_accessible_embed(socket: *mut GtkSocketAccessible, path: *mut c_char);

    //=========================================================================
    // GtkSpinButton
    //=========================================================================
    pub fn gtk_spin_button_get_type() -> GType;
    pub fn gtk_spin_button_new(
        adjustment: *mut GtkAdjustment,
        climb_rate: c_double,
        digits: c_uint,
    ) -> *mut GtkWidget;
    pub fn gtk_spin_button_new_with_range(
        min: c_double,
        max: c_double,
        step: c_double,
    ) -> *mut GtkWidget;
    pub fn gtk_spin_button_configure(
        spin_button: *mut GtkSpinButton,
        adjustment: *mut GtkAdjustment,
        climb_rate: c_double,
        digits: c_uint,
    );
    pub fn gtk_spin_button_get_adjustment(spin_button: *mut GtkSpinButton) -> *mut GtkAdjustment;
    pub fn gtk_spin_button_get_digits(spin_button: *mut GtkSpinButton) -> c_uint;
    pub fn gtk_spin_button_get_increments(
        spin_button: *mut GtkSpinButton,
        step: *mut c_double,
        page: *mut c_double,
    );
    pub fn gtk_spin_button_get_numeric(spin_button: *mut GtkSpinButton) -> gboolean;
    pub fn gtk_spin_button_get_range(
        spin_button: *mut GtkSpinButton,
        min: *mut c_double,
        max: *mut c_double,
    );
    pub fn gtk_spin_button_get_snap_to_ticks(spin_button: *mut GtkSpinButton) -> gboolean;
    pub fn gtk_spin_button_get_update_policy(
        spin_button: *mut GtkSpinButton,
    ) -> GtkSpinButtonUpdatePolicy;
    pub fn gtk_spin_button_get_value(spin_button: *mut GtkSpinButton) -> c_double;
    pub fn gtk_spin_button_get_value_as_int(spin_button: *mut GtkSpinButton) -> c_int;
    pub fn gtk_spin_button_get_wrap(spin_button: *mut GtkSpinButton) -> gboolean;
    pub fn gtk_spin_button_set_adjustment(
        spin_button: *mut GtkSpinButton,
        adjustment: *mut GtkAdjustment,
    );
    pub fn gtk_spin_button_set_digits(spin_button: *mut GtkSpinButton, digits: c_uint);
    pub fn gtk_spin_button_set_increments(
        spin_button: *mut GtkSpinButton,
        step: c_double,
        page: c_double,
    );
    pub fn gtk_spin_button_set_numeric(spin_button: *mut GtkSpinButton, numeric: gboolean);
    pub fn gtk_spin_button_set_range(spin_button: *mut GtkSpinButton, min: c_double, max: c_double);
    pub fn gtk_spin_button_set_snap_to_ticks(
        spin_button: *mut GtkSpinButton,
        snap_to_ticks: gboolean,
    );
    pub fn gtk_spin_button_set_update_policy(
        spin_button: *mut GtkSpinButton,
        policy: GtkSpinButtonUpdatePolicy,
    );
    pub fn gtk_spin_button_set_value(spin_button: *mut GtkSpinButton, value: c_double);
    pub fn gtk_spin_button_set_wrap(spin_button: *mut GtkSpinButton, wrap: gboolean);
    pub fn gtk_spin_button_spin(
        spin_button: *mut GtkSpinButton,
        direction: GtkSpinType,
        increment: c_double,
    );
    pub fn gtk_spin_button_update(spin_button: *mut GtkSpinButton);

    //=========================================================================
    // GtkSpinButtonAccessible
    //=========================================================================
    pub fn gtk_spin_button_accessible_get_type() -> GType;

    //=========================================================================
    // GtkSpinner
    //=========================================================================
    pub fn gtk_spinner_get_type() -> GType;
    pub fn gtk_spinner_new() -> *mut GtkWidget;
    pub fn gtk_spinner_start(spinner: *mut GtkSpinner);
    pub fn gtk_spinner_stop(spinner: *mut GtkSpinner);

    //=========================================================================
    // GtkSpinnerAccessible
    //=========================================================================
    pub fn gtk_spinner_accessible_get_type() -> GType;

    //=========================================================================
    // GtkStack
    //=========================================================================
    pub fn gtk_stack_get_type() -> GType;
    pub fn gtk_stack_new() -> *mut GtkWidget;
    pub fn gtk_stack_add_named(stack: *mut GtkStack, child: *mut GtkWidget, name: *const c_char);
    pub fn gtk_stack_add_titled(
        stack: *mut GtkStack,
        child: *mut GtkWidget,
        name: *const c_char,
        title: *const c_char,
    );
    pub fn gtk_stack_get_child_by_name(stack: *mut GtkStack, name: *const c_char)
        -> *mut GtkWidget;
    pub fn gtk_stack_get_hhomogeneous(stack: *mut GtkStack) -> gboolean;
    pub fn gtk_stack_get_homogeneous(stack: *mut GtkStack) -> gboolean;
    pub fn gtk_stack_get_interpolate_size(stack: *mut GtkStack) -> gboolean;
    pub fn gtk_stack_get_transition_duration(stack: *mut GtkStack) -> c_uint;
    pub fn gtk_stack_get_transition_running(stack: *mut GtkStack) -> gboolean;
    pub fn gtk_stack_get_transition_type(stack: *mut GtkStack) -> GtkStackTransitionType;
    pub fn gtk_stack_get_vhomogeneous(stack: *mut GtkStack) -> gboolean;
    pub fn gtk_stack_get_visible_child(stack: *mut GtkStack) -> *mut GtkWidget;
    pub fn gtk_stack_get_visible_child_name(stack: *mut GtkStack) -> *const c_char;
    pub fn gtk_stack_set_hhomogeneous(stack: *mut GtkStack, hhomogeneous: gboolean);
    pub fn gtk_stack_set_homogeneous(stack: *mut GtkStack, homogeneous: gboolean);
    pub fn gtk_stack_set_interpolate_size(stack: *mut GtkStack, interpolate_size: gboolean);
    pub fn gtk_stack_set_transition_duration(stack: *mut GtkStack, duration: c_uint);
    pub fn gtk_stack_set_transition_type(stack: *mut GtkStack, transition: GtkStackTransitionType);
    pub fn gtk_stack_set_vhomogeneous(stack: *mut GtkStack, vhomogeneous: gboolean);
    pub fn gtk_stack_set_visible_child(stack: *mut GtkStack, child: *mut GtkWidget);
    pub fn gtk_stack_set_visible_child_full(
        stack: *mut GtkStack,
        name: *const c_char,
        transition: GtkStackTransitionType,
    );
    pub fn gtk_stack_set_visible_child_name(stack: *mut GtkStack, name: *const c_char);

    //=========================================================================
    // GtkStackAccessible
    //=========================================================================
    pub fn gtk_stack_accessible_get_type() -> GType;

    //=========================================================================
    // GtkStackSidebar
    //=========================================================================
    pub fn gtk_stack_sidebar_get_type() -> GType;
    pub fn gtk_stack_sidebar_new() -> *mut GtkWidget;
    pub fn gtk_stack_sidebar_get_stack(sidebar: *mut GtkStackSidebar) -> *mut GtkStack;
    pub fn gtk_stack_sidebar_set_stack(sidebar: *mut GtkStackSidebar, stack: *mut GtkStack);

    //=========================================================================
    // GtkStackSwitcher
    //=========================================================================
    pub fn gtk_stack_switcher_get_type() -> GType;
    pub fn gtk_stack_switcher_new() -> *mut GtkWidget;
    pub fn gtk_stack_switcher_get_stack(switcher: *mut GtkStackSwitcher) -> *mut GtkStack;
    pub fn gtk_stack_switcher_set_stack(switcher: *mut GtkStackSwitcher, stack: *mut GtkStack);

    //=========================================================================
    // GtkStatusIcon
    //=========================================================================
    pub fn gtk_status_icon_get_type() -> GType;
    pub fn gtk_status_icon_new() -> *mut GtkStatusIcon;
    pub fn gtk_status_icon_new_from_file(filename: *const c_char) -> *mut GtkStatusIcon;
    pub fn gtk_status_icon_new_from_gicon(icon: *mut gio::GIcon) -> *mut GtkStatusIcon;
    pub fn gtk_status_icon_new_from_icon_name(icon_name: *const c_char) -> *mut GtkStatusIcon;
    pub fn gtk_status_icon_new_from_pixbuf(
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    ) -> *mut GtkStatusIcon;
    pub fn gtk_status_icon_new_from_stock(stock_id: *const c_char) -> *mut GtkStatusIcon;
    pub fn gtk_status_icon_position_menu(
        menu: *mut GtkMenu,
        x: *mut c_int,
        y: *mut c_int,
        push_in: *mut gboolean,
        user_data: *mut GtkStatusIcon,
    );
    pub fn gtk_status_icon_get_geometry(
        status_icon: *mut GtkStatusIcon,
        screen: *mut *mut gdk::GdkScreen,
        area: *mut gdk::GdkRectangle,
        orientation: *mut GtkOrientation,
    ) -> gboolean;
    pub fn gtk_status_icon_get_gicon(status_icon: *mut GtkStatusIcon) -> *mut gio::GIcon;
    pub fn gtk_status_icon_get_has_tooltip(status_icon: *mut GtkStatusIcon) -> gboolean;
    pub fn gtk_status_icon_get_icon_name(status_icon: *mut GtkStatusIcon) -> *const c_char;
    pub fn gtk_status_icon_get_pixbuf(
        status_icon: *mut GtkStatusIcon,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_status_icon_get_screen(status_icon: *mut GtkStatusIcon) -> *mut gdk::GdkScreen;
    pub fn gtk_status_icon_get_size(status_icon: *mut GtkStatusIcon) -> c_int;
    pub fn gtk_status_icon_get_stock(status_icon: *mut GtkStatusIcon) -> *const c_char;
    pub fn gtk_status_icon_get_storage_type(status_icon: *mut GtkStatusIcon) -> GtkImageType;
    pub fn gtk_status_icon_get_title(status_icon: *mut GtkStatusIcon) -> *const c_char;
    pub fn gtk_status_icon_get_tooltip_markup(status_icon: *mut GtkStatusIcon) -> *mut c_char;
    pub fn gtk_status_icon_get_tooltip_text(status_icon: *mut GtkStatusIcon) -> *mut c_char;
    pub fn gtk_status_icon_get_visible(status_icon: *mut GtkStatusIcon) -> gboolean;
    pub fn gtk_status_icon_get_x11_window_id(status_icon: *mut GtkStatusIcon) -> u32;
    pub fn gtk_status_icon_is_embedded(status_icon: *mut GtkStatusIcon) -> gboolean;
    pub fn gtk_status_icon_set_from_file(status_icon: *mut GtkStatusIcon, filename: *const c_char);
    pub fn gtk_status_icon_set_from_gicon(status_icon: *mut GtkStatusIcon, icon: *mut gio::GIcon);
    pub fn gtk_status_icon_set_from_icon_name(
        status_icon: *mut GtkStatusIcon,
        icon_name: *const c_char,
    );
    pub fn gtk_status_icon_set_from_pixbuf(
        status_icon: *mut GtkStatusIcon,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    );
    pub fn gtk_status_icon_set_from_stock(status_icon: *mut GtkStatusIcon, stock_id: *const c_char);
    pub fn gtk_status_icon_set_has_tooltip(status_icon: *mut GtkStatusIcon, has_tooltip: gboolean);
    pub fn gtk_status_icon_set_name(status_icon: *mut GtkStatusIcon, name: *const c_char);
    pub fn gtk_status_icon_set_screen(status_icon: *mut GtkStatusIcon, screen: *mut gdk::GdkScreen);
    pub fn gtk_status_icon_set_title(status_icon: *mut GtkStatusIcon, title: *const c_char);
    pub fn gtk_status_icon_set_tooltip_markup(
        status_icon: *mut GtkStatusIcon,
        markup: *const c_char,
    );
    pub fn gtk_status_icon_set_tooltip_text(status_icon: *mut GtkStatusIcon, text: *const c_char);
    pub fn gtk_status_icon_set_visible(status_icon: *mut GtkStatusIcon, visible: gboolean);

    //=========================================================================
    // GtkStatusbar
    //=========================================================================
    pub fn gtk_statusbar_get_type() -> GType;
    pub fn gtk_statusbar_new() -> *mut GtkWidget;
    pub fn gtk_statusbar_get_context_id(
        statusbar: *mut GtkStatusbar,
        context_description: *const c_char,
    ) -> c_uint;
    pub fn gtk_statusbar_get_message_area(statusbar: *mut GtkStatusbar) -> *mut GtkBox;
    pub fn gtk_statusbar_pop(statusbar: *mut GtkStatusbar, context_id: c_uint);
    pub fn gtk_statusbar_push(
        statusbar: *mut GtkStatusbar,
        context_id: c_uint,
        text: *const c_char,
    ) -> c_uint;
    pub fn gtk_statusbar_remove(
        statusbar: *mut GtkStatusbar,
        context_id: c_uint,
        message_id: c_uint,
    );
    pub fn gtk_statusbar_remove_all(statusbar: *mut GtkStatusbar, context_id: c_uint);

    //=========================================================================
    // GtkStatusbarAccessible
    //=========================================================================
    pub fn gtk_statusbar_accessible_get_type() -> GType;

    //=========================================================================
    // GtkStyle
    //=========================================================================
    pub fn gtk_style_get_type() -> GType;
    pub fn gtk_style_new() -> *mut GtkStyle;
    pub fn gtk_style_apply_default_background(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        window: *mut gdk::GdkWindow,
        state_type: GtkStateType,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_style_attach(style: *mut GtkStyle, window: *mut gdk::GdkWindow) -> *mut GtkStyle;
    pub fn gtk_style_copy(style: *mut GtkStyle) -> *mut GtkStyle;
    pub fn gtk_style_detach(style: *mut GtkStyle);
    pub fn gtk_style_get(
        style: *mut GtkStyle,
        widget_type: GType,
        first_property_name: *const c_char,
        ...
    );
    pub fn gtk_style_get_style_property(
        style: *mut GtkStyle,
        widget_type: GType,
        property_name: *const c_char,
        value: *mut gobject::GValue,
    );
    //pub fn gtk_style_get_valist(style: *mut GtkStyle, widget_type: GType, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
    pub fn gtk_style_has_context(style: *mut GtkStyle) -> gboolean;
    pub fn gtk_style_lookup_color(
        style: *mut GtkStyle,
        color_name: *const c_char,
        color: *mut gdk::GdkColor,
    ) -> gboolean;
    pub fn gtk_style_lookup_icon_set(
        style: *mut GtkStyle,
        stock_id: *const c_char,
    ) -> *mut GtkIconSet;
    pub fn gtk_style_render_icon(
        style: *mut GtkStyle,
        source: *const GtkIconSource,
        direction: GtkTextDirection,
        state: GtkStateType,
        size: GtkIconSize,
        widget: *mut GtkWidget,
        detail: *const c_char,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_style_set_background(
        style: *mut GtkStyle,
        window: *mut gdk::GdkWindow,
        state_type: GtkStateType,
    );

    //=========================================================================
    // GtkStyleContext
    //=========================================================================
    pub fn gtk_style_context_get_type() -> GType;
    pub fn gtk_style_context_new() -> *mut GtkStyleContext;
    pub fn gtk_style_context_add_provider_for_screen(
        screen: *mut gdk::GdkScreen,
        provider: *mut GtkStyleProvider,
        priority: c_uint,
    );
    pub fn gtk_style_context_remove_provider_for_screen(
        screen: *mut gdk::GdkScreen,
        provider: *mut GtkStyleProvider,
    );
    pub fn gtk_style_context_reset_widgets(screen: *mut gdk::GdkScreen);
    pub fn gtk_style_context_add_class(context: *mut GtkStyleContext, class_name: *const c_char);
    pub fn gtk_style_context_add_provider(
        context: *mut GtkStyleContext,
        provider: *mut GtkStyleProvider,
        priority: c_uint,
    );
    pub fn gtk_style_context_add_region(
        context: *mut GtkStyleContext,
        region_name: *const c_char,
        flags: GtkRegionFlags,
    );
    pub fn gtk_style_context_cancel_animations(context: *mut GtkStyleContext, region_id: gpointer);
    pub fn gtk_style_context_get(context: *mut GtkStyleContext, state: GtkStateFlags, ...);
    pub fn gtk_style_context_get_background_color(
        context: *mut GtkStyleContext,
        state: GtkStateFlags,
        color: *mut gdk::GdkRGBA,
    );
    pub fn gtk_style_context_get_border(
        context: *mut GtkStyleContext,
        state: GtkStateFlags,
        border: *mut GtkBorder,
    );
    pub fn gtk_style_context_get_border_color(
        context: *mut GtkStyleContext,
        state: GtkStateFlags,
        color: *mut gdk::GdkRGBA,
    );
    pub fn gtk_style_context_get_color(
        context: *mut GtkStyleContext,
        state: GtkStateFlags,
        color: *mut gdk::GdkRGBA,
    );
    pub fn gtk_style_context_get_direction(context: *mut GtkStyleContext) -> GtkTextDirection;
    pub fn gtk_style_context_get_font(
        context: *mut GtkStyleContext,
        state: GtkStateFlags,
    ) -> *const pango::PangoFontDescription;
    pub fn gtk_style_context_get_frame_clock(
        context: *mut GtkStyleContext,
    ) -> *mut gdk::GdkFrameClock;
    pub fn gtk_style_context_get_junction_sides(context: *mut GtkStyleContext) -> GtkJunctionSides;
    pub fn gtk_style_context_get_margin(
        context: *mut GtkStyleContext,
        state: GtkStateFlags,
        margin: *mut GtkBorder,
    );
    pub fn gtk_style_context_get_padding(
        context: *mut GtkStyleContext,
        state: GtkStateFlags,
        padding: *mut GtkBorder,
    );
    pub fn gtk_style_context_get_parent(context: *mut GtkStyleContext) -> *mut GtkStyleContext;
    pub fn gtk_style_context_get_path(context: *mut GtkStyleContext) -> *const GtkWidgetPath;
    pub fn gtk_style_context_get_property(
        context: *mut GtkStyleContext,
        property: *const c_char,
        state: GtkStateFlags,
        value: *mut gobject::GValue,
    );
    pub fn gtk_style_context_get_scale(context: *mut GtkStyleContext) -> c_int;
    pub fn gtk_style_context_get_screen(context: *mut GtkStyleContext) -> *mut gdk::GdkScreen;
    pub fn gtk_style_context_get_section(
        context: *mut GtkStyleContext,
        property: *const c_char,
    ) -> *mut GtkCssSection;
    pub fn gtk_style_context_get_state(context: *mut GtkStyleContext) -> GtkStateFlags;
    pub fn gtk_style_context_get_style(context: *mut GtkStyleContext, ...);
    pub fn gtk_style_context_get_style_property(
        context: *mut GtkStyleContext,
        property_name: *const c_char,
        value: *mut gobject::GValue,
    );
    //pub fn gtk_style_context_get_style_valist(context: *mut GtkStyleContext, args: /*Unimplemented*/va_list);
    //pub fn gtk_style_context_get_valist(context: *mut GtkStyleContext, state: GtkStateFlags, args: /*Unimplemented*/va_list);
    pub fn gtk_style_context_has_class(
        context: *mut GtkStyleContext,
        class_name: *const c_char,
    ) -> gboolean;
    pub fn gtk_style_context_has_region(
        context: *mut GtkStyleContext,
        region_name: *const c_char,
        flags_return: *mut GtkRegionFlags,
    ) -> gboolean;
    pub fn gtk_style_context_invalidate(context: *mut GtkStyleContext);
    pub fn gtk_style_context_list_classes(context: *mut GtkStyleContext) -> *mut glib::GList;
    pub fn gtk_style_context_list_regions(context: *mut GtkStyleContext) -> *mut glib::GList;
    pub fn gtk_style_context_lookup_color(
        context: *mut GtkStyleContext,
        color_name: *const c_char,
        color: *mut gdk::GdkRGBA,
    ) -> gboolean;
    pub fn gtk_style_context_lookup_icon_set(
        context: *mut GtkStyleContext,
        stock_id: *const c_char,
    ) -> *mut GtkIconSet;
    pub fn gtk_style_context_notify_state_change(
        context: *mut GtkStyleContext,
        window: *mut gdk::GdkWindow,
        region_id: gpointer,
        state: GtkStateType,
        state_value: gboolean,
    );
    pub fn gtk_style_context_pop_animatable_region(context: *mut GtkStyleContext);
    pub fn gtk_style_context_push_animatable_region(
        context: *mut GtkStyleContext,
        region_id: gpointer,
    );
    pub fn gtk_style_context_remove_class(context: *mut GtkStyleContext, class_name: *const c_char);
    pub fn gtk_style_context_remove_provider(
        context: *mut GtkStyleContext,
        provider: *mut GtkStyleProvider,
    );
    pub fn gtk_style_context_remove_region(
        context: *mut GtkStyleContext,
        region_name: *const c_char,
    );
    pub fn gtk_style_context_restore(context: *mut GtkStyleContext);
    pub fn gtk_style_context_save(context: *mut GtkStyleContext);
    pub fn gtk_style_context_scroll_animations(
        context: *mut GtkStyleContext,
        window: *mut gdk::GdkWindow,
        dx: c_int,
        dy: c_int,
    );
    pub fn gtk_style_context_set_background(
        context: *mut GtkStyleContext,
        window: *mut gdk::GdkWindow,
    );
    pub fn gtk_style_context_set_direction(
        context: *mut GtkStyleContext,
        direction: GtkTextDirection,
    );
    pub fn gtk_style_context_set_frame_clock(
        context: *mut GtkStyleContext,
        frame_clock: *mut gdk::GdkFrameClock,
    );
    pub fn gtk_style_context_set_junction_sides(
        context: *mut GtkStyleContext,
        sides: GtkJunctionSides,
    );
    pub fn gtk_style_context_set_parent(
        context: *mut GtkStyleContext,
        parent: *mut GtkStyleContext,
    );
    pub fn gtk_style_context_set_path(context: *mut GtkStyleContext, path: *mut GtkWidgetPath);
    pub fn gtk_style_context_set_scale(context: *mut GtkStyleContext, scale: c_int);
    pub fn gtk_style_context_set_screen(context: *mut GtkStyleContext, screen: *mut gdk::GdkScreen);
    pub fn gtk_style_context_set_state(context: *mut GtkStyleContext, flags: GtkStateFlags);
    pub fn gtk_style_context_state_is_running(
        context: *mut GtkStyleContext,
        state: GtkStateType,
        progress: *mut c_double,
    ) -> gboolean;
    pub fn gtk_style_context_to_string(
        context: *mut GtkStyleContext,
        flags: GtkStyleContextPrintFlags,
    ) -> *mut c_char;

    //=========================================================================
    // GtkStyleProperties
    //=========================================================================
    pub fn gtk_style_properties_get_type() -> GType;
    pub fn gtk_style_properties_new() -> *mut GtkStyleProperties;
    pub fn gtk_style_properties_lookup_property(
        property_name: *const c_char,
        parse_func: *mut GtkStylePropertyParser,
        pspec: *mut *mut gobject::GParamSpec,
    ) -> gboolean;
    pub fn gtk_style_properties_register_property(
        parse_func: GtkStylePropertyParser,
        pspec: *mut gobject::GParamSpec,
    );
    pub fn gtk_style_properties_clear(props: *mut GtkStyleProperties);
    pub fn gtk_style_properties_get(props: *mut GtkStyleProperties, state: GtkStateFlags, ...);
    pub fn gtk_style_properties_get_property(
        props: *mut GtkStyleProperties,
        property: *const c_char,
        state: GtkStateFlags,
        value: *mut gobject::GValue,
    ) -> gboolean;
    //pub fn gtk_style_properties_get_valist(props: *mut GtkStyleProperties, state: GtkStateFlags, args: /*Unimplemented*/va_list);
    pub fn gtk_style_properties_lookup_color(
        props: *mut GtkStyleProperties,
        name: *const c_char,
    ) -> *mut GtkSymbolicColor;
    pub fn gtk_style_properties_map_color(
        props: *mut GtkStyleProperties,
        name: *const c_char,
        color: *mut GtkSymbolicColor,
    );
    pub fn gtk_style_properties_merge(
        props: *mut GtkStyleProperties,
        props_to_merge: *const GtkStyleProperties,
        replace: gboolean,
    );
    pub fn gtk_style_properties_set(props: *mut GtkStyleProperties, state: GtkStateFlags, ...);
    pub fn gtk_style_properties_set_property(
        props: *mut GtkStyleProperties,
        property: *const c_char,
        state: GtkStateFlags,
        value: *const gobject::GValue,
    );
    //pub fn gtk_style_properties_set_valist(props: *mut GtkStyleProperties, state: GtkStateFlags, args: /*Unimplemented*/va_list);
    pub fn gtk_style_properties_unset_property(
        props: *mut GtkStyleProperties,
        property: *const c_char,
        state: GtkStateFlags,
    );

    //=========================================================================
    // GtkSwitch
    //=========================================================================
    pub fn gtk_switch_get_type() -> GType;
    pub fn gtk_switch_new() -> *mut GtkWidget;
    pub fn gtk_switch_get_active(sw: *mut GtkSwitch) -> gboolean;
    pub fn gtk_switch_get_state(sw: *mut GtkSwitch) -> gboolean;
    pub fn gtk_switch_set_active(sw: *mut GtkSwitch, is_active: gboolean);
    pub fn gtk_switch_set_state(sw: *mut GtkSwitch, state: gboolean);

    //=========================================================================
    // GtkSwitchAccessible
    //=========================================================================
    pub fn gtk_switch_accessible_get_type() -> GType;

    //=========================================================================
    // GtkTable
    //=========================================================================
    pub fn gtk_table_get_type() -> GType;
    pub fn gtk_table_new(rows: c_uint, columns: c_uint, homogeneous: gboolean) -> *mut GtkWidget;
    pub fn gtk_table_attach(
        table: *mut GtkTable,
        child: *mut GtkWidget,
        left_attach: c_uint,
        right_attach: c_uint,
        top_attach: c_uint,
        bottom_attach: c_uint,
        xoptions: GtkAttachOptions,
        yoptions: GtkAttachOptions,
        xpadding: c_uint,
        ypadding: c_uint,
    );
    pub fn gtk_table_attach_defaults(
        table: *mut GtkTable,
        widget: *mut GtkWidget,
        left_attach: c_uint,
        right_attach: c_uint,
        top_attach: c_uint,
        bottom_attach: c_uint,
    );
    pub fn gtk_table_get_col_spacing(table: *mut GtkTable, column: c_uint) -> c_uint;
    pub fn gtk_table_get_default_col_spacing(table: *mut GtkTable) -> c_uint;
    pub fn gtk_table_get_default_row_spacing(table: *mut GtkTable) -> c_uint;
    pub fn gtk_table_get_homogeneous(table: *mut GtkTable) -> gboolean;
    pub fn gtk_table_get_row_spacing(table: *mut GtkTable, row: c_uint) -> c_uint;
    pub fn gtk_table_get_size(table: *mut GtkTable, rows: *mut c_uint, columns: *mut c_uint);
    pub fn gtk_table_resize(table: *mut GtkTable, rows: c_uint, columns: c_uint);
    pub fn gtk_table_set_col_spacing(table: *mut GtkTable, column: c_uint, spacing: c_uint);
    pub fn gtk_table_set_col_spacings(table: *mut GtkTable, spacing: c_uint);
    pub fn gtk_table_set_homogeneous(table: *mut GtkTable, homogeneous: gboolean);
    pub fn gtk_table_set_row_spacing(table: *mut GtkTable, row: c_uint, spacing: c_uint);
    pub fn gtk_table_set_row_spacings(table: *mut GtkTable, spacing: c_uint);

    //=========================================================================
    // GtkTearoffMenuItem
    //=========================================================================
    pub fn gtk_tearoff_menu_item_get_type() -> GType;
    pub fn gtk_tearoff_menu_item_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkTextBuffer
    //=========================================================================
    pub fn gtk_text_buffer_get_type() -> GType;
    pub fn gtk_text_buffer_new(table: *mut GtkTextTagTable) -> *mut GtkTextBuffer;
    pub fn gtk_text_buffer_add_mark(
        buffer: *mut GtkTextBuffer,
        mark: *mut GtkTextMark,
        where_: *const GtkTextIter,
    );
    pub fn gtk_text_buffer_add_selection_clipboard(
        buffer: *mut GtkTextBuffer,
        clipboard: *mut GtkClipboard,
    );
    pub fn gtk_text_buffer_apply_tag(
        buffer: *mut GtkTextBuffer,
        tag: *mut GtkTextTag,
        start: *const GtkTextIter,
        end: *const GtkTextIter,
    );
    pub fn gtk_text_buffer_apply_tag_by_name(
        buffer: *mut GtkTextBuffer,
        name: *const c_char,
        start: *const GtkTextIter,
        end: *const GtkTextIter,
    );
    pub fn gtk_text_buffer_backspace(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        interactive: gboolean,
        default_editable: gboolean,
    ) -> gboolean;
    pub fn gtk_text_buffer_begin_user_action(buffer: *mut GtkTextBuffer);
    pub fn gtk_text_buffer_copy_clipboard(buffer: *mut GtkTextBuffer, clipboard: *mut GtkClipboard);
    pub fn gtk_text_buffer_create_child_anchor(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
    ) -> *mut GtkTextChildAnchor;
    pub fn gtk_text_buffer_create_mark(
        buffer: *mut GtkTextBuffer,
        mark_name: *const c_char,
        where_: *const GtkTextIter,
        left_gravity: gboolean,
    ) -> *mut GtkTextMark;
    pub fn gtk_text_buffer_create_tag(
        buffer: *mut GtkTextBuffer,
        tag_name: *const c_char,
        first_property_name: *const c_char,
        ...
    ) -> *mut GtkTextTag;
    pub fn gtk_text_buffer_cut_clipboard(
        buffer: *mut GtkTextBuffer,
        clipboard: *mut GtkClipboard,
        default_editable: gboolean,
    );
    pub fn gtk_text_buffer_delete(
        buffer: *mut GtkTextBuffer,
        start: *mut GtkTextIter,
        end: *mut GtkTextIter,
    );
    pub fn gtk_text_buffer_delete_interactive(
        buffer: *mut GtkTextBuffer,
        start_iter: *mut GtkTextIter,
        end_iter: *mut GtkTextIter,
        default_editable: gboolean,
    ) -> gboolean;
    pub fn gtk_text_buffer_delete_mark(buffer: *mut GtkTextBuffer, mark: *mut GtkTextMark);
    pub fn gtk_text_buffer_delete_mark_by_name(buffer: *mut GtkTextBuffer, name: *const c_char);
    pub fn gtk_text_buffer_delete_selection(
        buffer: *mut GtkTextBuffer,
        interactive: gboolean,
        default_editable: gboolean,
    ) -> gboolean;
    pub fn gtk_text_buffer_deserialize(
        register_buffer: *mut GtkTextBuffer,
        content_buffer: *mut GtkTextBuffer,
        format: gdk::GdkAtom,
        iter: *mut GtkTextIter,
        data: *const u8,
        length: size_t,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_text_buffer_deserialize_get_can_create_tags(
        buffer: *mut GtkTextBuffer,
        format: gdk::GdkAtom,
    ) -> gboolean;
    pub fn gtk_text_buffer_deserialize_set_can_create_tags(
        buffer: *mut GtkTextBuffer,
        format: gdk::GdkAtom,
        can_create_tags: gboolean,
    );
    pub fn gtk_text_buffer_end_user_action(buffer: *mut GtkTextBuffer);
    pub fn gtk_text_buffer_get_bounds(
        buffer: *mut GtkTextBuffer,
        start: *mut GtkTextIter,
        end: *mut GtkTextIter,
    );
    pub fn gtk_text_buffer_get_char_count(buffer: *mut GtkTextBuffer) -> c_int;
    pub fn gtk_text_buffer_get_copy_target_list(buffer: *mut GtkTextBuffer) -> *mut GtkTargetList;
    pub fn gtk_text_buffer_get_deserialize_formats(
        buffer: *mut GtkTextBuffer,
        n_formats: *mut c_int,
    ) -> *mut gdk::GdkAtom;
    pub fn gtk_text_buffer_get_end_iter(buffer: *mut GtkTextBuffer, iter: *mut GtkTextIter);
    pub fn gtk_text_buffer_get_has_selection(buffer: *mut GtkTextBuffer) -> gboolean;
    pub fn gtk_text_buffer_get_insert(buffer: *mut GtkTextBuffer) -> *mut GtkTextMark;
    pub fn gtk_text_buffer_get_iter_at_child_anchor(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        anchor: *mut GtkTextChildAnchor,
    );
    pub fn gtk_text_buffer_get_iter_at_line(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        line_number: c_int,
    );
    pub fn gtk_text_buffer_get_iter_at_line_index(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        line_number: c_int,
        byte_index: c_int,
    );
    pub fn gtk_text_buffer_get_iter_at_line_offset(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        line_number: c_int,
        char_offset: c_int,
    );
    pub fn gtk_text_buffer_get_iter_at_mark(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        mark: *mut GtkTextMark,
    );
    pub fn gtk_text_buffer_get_iter_at_offset(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        char_offset: c_int,
    );
    pub fn gtk_text_buffer_get_line_count(buffer: *mut GtkTextBuffer) -> c_int;
    pub fn gtk_text_buffer_get_mark(
        buffer: *mut GtkTextBuffer,
        name: *const c_char,
    ) -> *mut GtkTextMark;
    pub fn gtk_text_buffer_get_modified(buffer: *mut GtkTextBuffer) -> gboolean;
    pub fn gtk_text_buffer_get_paste_target_list(buffer: *mut GtkTextBuffer) -> *mut GtkTargetList;
    pub fn gtk_text_buffer_get_selection_bound(buffer: *mut GtkTextBuffer) -> *mut GtkTextMark;
    pub fn gtk_text_buffer_get_selection_bounds(
        buffer: *mut GtkTextBuffer,
        start: *mut GtkTextIter,
        end: *mut GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_buffer_get_serialize_formats(
        buffer: *mut GtkTextBuffer,
        n_formats: *mut c_int,
    ) -> *mut gdk::GdkAtom;
    pub fn gtk_text_buffer_get_slice(
        buffer: *mut GtkTextBuffer,
        start: *const GtkTextIter,
        end: *const GtkTextIter,
        include_hidden_chars: gboolean,
    ) -> *mut c_char;
    pub fn gtk_text_buffer_get_start_iter(buffer: *mut GtkTextBuffer, iter: *mut GtkTextIter);
    pub fn gtk_text_buffer_get_tag_table(buffer: *mut GtkTextBuffer) -> *mut GtkTextTagTable;
    pub fn gtk_text_buffer_get_text(
        buffer: *mut GtkTextBuffer,
        start: *const GtkTextIter,
        end: *const GtkTextIter,
        include_hidden_chars: gboolean,
    ) -> *mut c_char;
    pub fn gtk_text_buffer_insert(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        text: *const c_char,
        len: c_int,
    );
    pub fn gtk_text_buffer_insert_at_cursor(
        buffer: *mut GtkTextBuffer,
        text: *const c_char,
        len: c_int,
    );
    pub fn gtk_text_buffer_insert_child_anchor(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        anchor: *mut GtkTextChildAnchor,
    );
    pub fn gtk_text_buffer_insert_interactive(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        text: *const c_char,
        len: c_int,
        default_editable: gboolean,
    ) -> gboolean;
    pub fn gtk_text_buffer_insert_interactive_at_cursor(
        buffer: *mut GtkTextBuffer,
        text: *const c_char,
        len: c_int,
        default_editable: gboolean,
    ) -> gboolean;
    pub fn gtk_text_buffer_insert_markup(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        markup: *const c_char,
        len: c_int,
    );
    pub fn gtk_text_buffer_insert_pixbuf(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    );
    pub fn gtk_text_buffer_insert_range(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        start: *const GtkTextIter,
        end: *const GtkTextIter,
    );
    pub fn gtk_text_buffer_insert_range_interactive(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        start: *const GtkTextIter,
        end: *const GtkTextIter,
        default_editable: gboolean,
    ) -> gboolean;
    pub fn gtk_text_buffer_insert_with_tags(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        text: *const c_char,
        len: c_int,
        first_tag: *mut GtkTextTag,
        ...
    );
    pub fn gtk_text_buffer_insert_with_tags_by_name(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        text: *const c_char,
        len: c_int,
        first_tag_name: *const c_char,
        ...
    );
    pub fn gtk_text_buffer_move_mark(
        buffer: *mut GtkTextBuffer,
        mark: *mut GtkTextMark,
        where_: *const GtkTextIter,
    );
    pub fn gtk_text_buffer_move_mark_by_name(
        buffer: *mut GtkTextBuffer,
        name: *const c_char,
        where_: *const GtkTextIter,
    );
    pub fn gtk_text_buffer_paste_clipboard(
        buffer: *mut GtkTextBuffer,
        clipboard: *mut GtkClipboard,
        override_location: *mut GtkTextIter,
        default_editable: gboolean,
    );
    pub fn gtk_text_buffer_place_cursor(buffer: *mut GtkTextBuffer, where_: *const GtkTextIter);
    pub fn gtk_text_buffer_register_deserialize_format(
        buffer: *mut GtkTextBuffer,
        mime_type: *const c_char,
        function: GtkTextBufferDeserializeFunc,
        user_data: gpointer,
        user_data_destroy: glib::GDestroyNotify,
    ) -> gdk::GdkAtom;
    pub fn gtk_text_buffer_register_deserialize_tagset(
        buffer: *mut GtkTextBuffer,
        tagset_name: *const c_char,
    ) -> gdk::GdkAtom;
    pub fn gtk_text_buffer_register_serialize_format(
        buffer: *mut GtkTextBuffer,
        mime_type: *const c_char,
        function: GtkTextBufferSerializeFunc,
        user_data: gpointer,
        user_data_destroy: glib::GDestroyNotify,
    ) -> gdk::GdkAtom;
    pub fn gtk_text_buffer_register_serialize_tagset(
        buffer: *mut GtkTextBuffer,
        tagset_name: *const c_char,
    ) -> gdk::GdkAtom;
    pub fn gtk_text_buffer_remove_all_tags(
        buffer: *mut GtkTextBuffer,
        start: *const GtkTextIter,
        end: *const GtkTextIter,
    );
    pub fn gtk_text_buffer_remove_selection_clipboard(
        buffer: *mut GtkTextBuffer,
        clipboard: *mut GtkClipboard,
    );
    pub fn gtk_text_buffer_remove_tag(
        buffer: *mut GtkTextBuffer,
        tag: *mut GtkTextTag,
        start: *const GtkTextIter,
        end: *const GtkTextIter,
    );
    pub fn gtk_text_buffer_remove_tag_by_name(
        buffer: *mut GtkTextBuffer,
        name: *const c_char,
        start: *const GtkTextIter,
        end: *const GtkTextIter,
    );
    pub fn gtk_text_buffer_select_range(
        buffer: *mut GtkTextBuffer,
        ins: *const GtkTextIter,
        bound: *const GtkTextIter,
    );
    pub fn gtk_text_buffer_serialize(
        register_buffer: *mut GtkTextBuffer,
        content_buffer: *mut GtkTextBuffer,
        format: gdk::GdkAtom,
        start: *const GtkTextIter,
        end: *const GtkTextIter,
        length: *mut size_t,
    ) -> *mut u8;
    pub fn gtk_text_buffer_set_modified(buffer: *mut GtkTextBuffer, setting: gboolean);
    pub fn gtk_text_buffer_set_text(buffer: *mut GtkTextBuffer, text: *const c_char, len: c_int);
    pub fn gtk_text_buffer_unregister_deserialize_format(
        buffer: *mut GtkTextBuffer,
        format: gdk::GdkAtom,
    );
    pub fn gtk_text_buffer_unregister_serialize_format(
        buffer: *mut GtkTextBuffer,
        format: gdk::GdkAtom,
    );

    //=========================================================================
    // GtkTextCellAccessible
    //=========================================================================
    pub fn gtk_text_cell_accessible_get_type() -> GType;

    //=========================================================================
    // GtkTextChildAnchor
    //=========================================================================
    pub fn gtk_text_child_anchor_get_type() -> GType;
    pub fn gtk_text_child_anchor_new() -> *mut GtkTextChildAnchor;
    pub fn gtk_text_child_anchor_get_deleted(anchor: *mut GtkTextChildAnchor) -> gboolean;
    pub fn gtk_text_child_anchor_get_widgets(anchor: *mut GtkTextChildAnchor) -> *mut glib::GList;

    //=========================================================================
    // GtkTextMark
    //=========================================================================
    pub fn gtk_text_mark_get_type() -> GType;
    pub fn gtk_text_mark_new(name: *const c_char, left_gravity: gboolean) -> *mut GtkTextMark;
    pub fn gtk_text_mark_get_buffer(mark: *mut GtkTextMark) -> *mut GtkTextBuffer;
    pub fn gtk_text_mark_get_deleted(mark: *mut GtkTextMark) -> gboolean;
    pub fn gtk_text_mark_get_left_gravity(mark: *mut GtkTextMark) -> gboolean;
    pub fn gtk_text_mark_get_name(mark: *mut GtkTextMark) -> *const c_char;
    pub fn gtk_text_mark_get_visible(mark: *mut GtkTextMark) -> gboolean;
    pub fn gtk_text_mark_set_visible(mark: *mut GtkTextMark, setting: gboolean);

    //=========================================================================
    // GtkTextTag
    //=========================================================================
    pub fn gtk_text_tag_get_type() -> GType;
    pub fn gtk_text_tag_new(name: *const c_char) -> *mut GtkTextTag;
    pub fn gtk_text_tag_changed(tag: *mut GtkTextTag, size_changed: gboolean);
    pub fn gtk_text_tag_event(
        tag: *mut GtkTextTag,
        event_object: *mut gobject::GObject,
        event: *mut gdk::GdkEvent,
        iter: *const GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_tag_get_priority(tag: *mut GtkTextTag) -> c_int;
    pub fn gtk_text_tag_set_priority(tag: *mut GtkTextTag, priority: c_int);

    //=========================================================================
    // GtkTextTagTable
    //=========================================================================
    pub fn gtk_text_tag_table_get_type() -> GType;
    pub fn gtk_text_tag_table_new() -> *mut GtkTextTagTable;
    pub fn gtk_text_tag_table_add(table: *mut GtkTextTagTable, tag: *mut GtkTextTag) -> gboolean;
    pub fn gtk_text_tag_table_foreach(
        table: *mut GtkTextTagTable,
        func: GtkTextTagTableForeach,
        data: gpointer,
    );
    pub fn gtk_text_tag_table_get_size(table: *mut GtkTextTagTable) -> c_int;
    pub fn gtk_text_tag_table_lookup(
        table: *mut GtkTextTagTable,
        name: *const c_char,
    ) -> *mut GtkTextTag;
    pub fn gtk_text_tag_table_remove(table: *mut GtkTextTagTable, tag: *mut GtkTextTag);

    //=========================================================================
    // GtkTextView
    //=========================================================================
    pub fn gtk_text_view_get_type() -> GType;
    pub fn gtk_text_view_new() -> *mut GtkWidget;
    pub fn gtk_text_view_new_with_buffer(buffer: *mut GtkTextBuffer) -> *mut GtkWidget;
    pub fn gtk_text_view_add_child_at_anchor(
        text_view: *mut GtkTextView,
        child: *mut GtkWidget,
        anchor: *mut GtkTextChildAnchor,
    );
    pub fn gtk_text_view_add_child_in_window(
        text_view: *mut GtkTextView,
        child: *mut GtkWidget,
        which_window: GtkTextWindowType,
        xpos: c_int,
        ypos: c_int,
    );
    pub fn gtk_text_view_backward_display_line(
        text_view: *mut GtkTextView,
        iter: *mut GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_view_backward_display_line_start(
        text_view: *mut GtkTextView,
        iter: *mut GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_view_buffer_to_window_coords(
        text_view: *mut GtkTextView,
        win: GtkTextWindowType,
        buffer_x: c_int,
        buffer_y: c_int,
        window_x: *mut c_int,
        window_y: *mut c_int,
    );
    pub fn gtk_text_view_forward_display_line(
        text_view: *mut GtkTextView,
        iter: *mut GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_view_forward_display_line_end(
        text_view: *mut GtkTextView,
        iter: *mut GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_view_get_accepts_tab(text_view: *mut GtkTextView) -> gboolean;
    pub fn gtk_text_view_get_border_window_size(
        text_view: *mut GtkTextView,
        type_: GtkTextWindowType,
    ) -> c_int;
    pub fn gtk_text_view_get_bottom_margin(text_view: *mut GtkTextView) -> c_int;
    pub fn gtk_text_view_get_buffer(text_view: *mut GtkTextView) -> *mut GtkTextBuffer;
    pub fn gtk_text_view_get_cursor_locations(
        text_view: *mut GtkTextView,
        iter: *const GtkTextIter,
        strong: *mut gdk::GdkRectangle,
        weak: *mut gdk::GdkRectangle,
    );
    pub fn gtk_text_view_get_cursor_visible(text_view: *mut GtkTextView) -> gboolean;
    pub fn gtk_text_view_get_default_attributes(
        text_view: *mut GtkTextView,
    ) -> *mut GtkTextAttributes;
    pub fn gtk_text_view_get_editable(text_view: *mut GtkTextView) -> gboolean;
    pub fn gtk_text_view_get_hadjustment(text_view: *mut GtkTextView) -> *mut GtkAdjustment;
    pub fn gtk_text_view_get_indent(text_view: *mut GtkTextView) -> c_int;
    pub fn gtk_text_view_get_input_hints(text_view: *mut GtkTextView) -> GtkInputHints;
    pub fn gtk_text_view_get_input_purpose(text_view: *mut GtkTextView) -> GtkInputPurpose;
    pub fn gtk_text_view_get_iter_at_location(
        text_view: *mut GtkTextView,
        iter: *mut GtkTextIter,
        x: c_int,
        y: c_int,
    ) -> gboolean;
    pub fn gtk_text_view_get_iter_at_position(
        text_view: *mut GtkTextView,
        iter: *mut GtkTextIter,
        trailing: *mut c_int,
        x: c_int,
        y: c_int,
    ) -> gboolean;
    pub fn gtk_text_view_get_iter_location(
        text_view: *mut GtkTextView,
        iter: *const GtkTextIter,
        location: *mut gdk::GdkRectangle,
    );
    pub fn gtk_text_view_get_justification(text_view: *mut GtkTextView) -> GtkJustification;
    pub fn gtk_text_view_get_left_margin(text_view: *mut GtkTextView) -> c_int;
    pub fn gtk_text_view_get_line_at_y(
        text_view: *mut GtkTextView,
        target_iter: *mut GtkTextIter,
        y: c_int,
        line_top: *mut c_int,
    );
    pub fn gtk_text_view_get_line_yrange(
        text_view: *mut GtkTextView,
        iter: *const GtkTextIter,
        y: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_text_view_get_monospace(text_view: *mut GtkTextView) -> gboolean;
    pub fn gtk_text_view_get_overwrite(text_view: *mut GtkTextView) -> gboolean;
    pub fn gtk_text_view_get_pixels_above_lines(text_view: *mut GtkTextView) -> c_int;
    pub fn gtk_text_view_get_pixels_below_lines(text_view: *mut GtkTextView) -> c_int;
    pub fn gtk_text_view_get_pixels_inside_wrap(text_view: *mut GtkTextView) -> c_int;
    pub fn gtk_text_view_get_right_margin(text_view: *mut GtkTextView) -> c_int;
    pub fn gtk_text_view_get_tabs(text_view: *mut GtkTextView) -> *mut pango::PangoTabArray;
    pub fn gtk_text_view_get_top_margin(text_view: *mut GtkTextView) -> c_int;
    pub fn gtk_text_view_get_vadjustment(text_view: *mut GtkTextView) -> *mut GtkAdjustment;
    pub fn gtk_text_view_get_visible_rect(
        text_view: *mut GtkTextView,
        visible_rect: *mut gdk::GdkRectangle,
    );
    pub fn gtk_text_view_get_window(
        text_view: *mut GtkTextView,
        win: GtkTextWindowType,
    ) -> *mut gdk::GdkWindow;
    pub fn gtk_text_view_get_window_type(
        text_view: *mut GtkTextView,
        window: *mut gdk::GdkWindow,
    ) -> GtkTextWindowType;
    pub fn gtk_text_view_get_wrap_mode(text_view: *mut GtkTextView) -> GtkWrapMode;
    pub fn gtk_text_view_im_context_filter_keypress(
        text_view: *mut GtkTextView,
        event: *mut gdk::GdkEventKey,
    ) -> gboolean;
    pub fn gtk_text_view_move_child(
        text_view: *mut GtkTextView,
        child: *mut GtkWidget,
        xpos: c_int,
        ypos: c_int,
    );
    pub fn gtk_text_view_move_mark_onscreen(
        text_view: *mut GtkTextView,
        mark: *mut GtkTextMark,
    ) -> gboolean;
    pub fn gtk_text_view_move_visually(
        text_view: *mut GtkTextView,
        iter: *mut GtkTextIter,
        count: c_int,
    ) -> gboolean;
    pub fn gtk_text_view_place_cursor_onscreen(text_view: *mut GtkTextView) -> gboolean;
    pub fn gtk_text_view_reset_cursor_blink(text_view: *mut GtkTextView);
    pub fn gtk_text_view_reset_im_context(text_view: *mut GtkTextView);
    pub fn gtk_text_view_scroll_mark_onscreen(text_view: *mut GtkTextView, mark: *mut GtkTextMark);
    pub fn gtk_text_view_scroll_to_iter(
        text_view: *mut GtkTextView,
        iter: *mut GtkTextIter,
        within_margin: c_double,
        use_align: gboolean,
        xalign: c_double,
        yalign: c_double,
    ) -> gboolean;
    pub fn gtk_text_view_scroll_to_mark(
        text_view: *mut GtkTextView,
        mark: *mut GtkTextMark,
        within_margin: c_double,
        use_align: gboolean,
        xalign: c_double,
        yalign: c_double,
    );
    pub fn gtk_text_view_set_accepts_tab(text_view: *mut GtkTextView, accepts_tab: gboolean);
    pub fn gtk_text_view_set_border_window_size(
        text_view: *mut GtkTextView,
        type_: GtkTextWindowType,
        size: c_int,
    );
    pub fn gtk_text_view_set_bottom_margin(text_view: *mut GtkTextView, bottom_margin: c_int);
    pub fn gtk_text_view_set_buffer(text_view: *mut GtkTextView, buffer: *mut GtkTextBuffer);
    pub fn gtk_text_view_set_cursor_visible(text_view: *mut GtkTextView, setting: gboolean);
    pub fn gtk_text_view_set_editable(text_view: *mut GtkTextView, setting: gboolean);
    pub fn gtk_text_view_set_indent(text_view: *mut GtkTextView, indent: c_int);
    pub fn gtk_text_view_set_input_hints(text_view: *mut GtkTextView, hints: GtkInputHints);
    pub fn gtk_text_view_set_input_purpose(text_view: *mut GtkTextView, purpose: GtkInputPurpose);
    pub fn gtk_text_view_set_justification(
        text_view: *mut GtkTextView,
        justification: GtkJustification,
    );
    pub fn gtk_text_view_set_left_margin(text_view: *mut GtkTextView, left_margin: c_int);
    pub fn gtk_text_view_set_monospace(text_view: *mut GtkTextView, monospace: gboolean);
    pub fn gtk_text_view_set_overwrite(text_view: *mut GtkTextView, overwrite: gboolean);
    pub fn gtk_text_view_set_pixels_above_lines(
        text_view: *mut GtkTextView,
        pixels_above_lines: c_int,
    );
    pub fn gtk_text_view_set_pixels_below_lines(
        text_view: *mut GtkTextView,
        pixels_below_lines: c_int,
    );
    pub fn gtk_text_view_set_pixels_inside_wrap(
        text_view: *mut GtkTextView,
        pixels_inside_wrap: c_int,
    );
    pub fn gtk_text_view_set_right_margin(text_view: *mut GtkTextView, right_margin: c_int);
    pub fn gtk_text_view_set_tabs(text_view: *mut GtkTextView, tabs: *mut pango::PangoTabArray);
    pub fn gtk_text_view_set_top_margin(text_view: *mut GtkTextView, top_margin: c_int);
    pub fn gtk_text_view_set_wrap_mode(text_view: *mut GtkTextView, wrap_mode: GtkWrapMode);
    pub fn gtk_text_view_starts_display_line(
        text_view: *mut GtkTextView,
        iter: *const GtkTextIter,
    ) -> gboolean;
    pub fn gtk_text_view_window_to_buffer_coords(
        text_view: *mut GtkTextView,
        win: GtkTextWindowType,
        window_x: c_int,
        window_y: c_int,
        buffer_x: *mut c_int,
        buffer_y: *mut c_int,
    );

    //=========================================================================
    // GtkTextViewAccessible
    //=========================================================================
    pub fn gtk_text_view_accessible_get_type() -> GType;

    //=========================================================================
    // GtkThemingEngine
    //=========================================================================
    pub fn gtk_theming_engine_get_type() -> GType;
    pub fn gtk_theming_engine_load(name: *const c_char) -> *mut GtkThemingEngine;
    pub fn gtk_theming_engine_register_property(
        name_space: *const c_char,
        parse_func: GtkStylePropertyParser,
        pspec: *mut gobject::GParamSpec,
    );
    pub fn gtk_theming_engine_get(engine: *mut GtkThemingEngine, state: GtkStateFlags, ...);
    pub fn gtk_theming_engine_get_background_color(
        engine: *mut GtkThemingEngine,
        state: GtkStateFlags,
        color: *mut gdk::GdkRGBA,
    );
    pub fn gtk_theming_engine_get_border(
        engine: *mut GtkThemingEngine,
        state: GtkStateFlags,
        border: *mut GtkBorder,
    );
    pub fn gtk_theming_engine_get_border_color(
        engine: *mut GtkThemingEngine,
        state: GtkStateFlags,
        color: *mut gdk::GdkRGBA,
    );
    pub fn gtk_theming_engine_get_color(
        engine: *mut GtkThemingEngine,
        state: GtkStateFlags,
        color: *mut gdk::GdkRGBA,
    );
    pub fn gtk_theming_engine_get_direction(engine: *mut GtkThemingEngine) -> GtkTextDirection;
    pub fn gtk_theming_engine_get_font(
        engine: *mut GtkThemingEngine,
        state: GtkStateFlags,
    ) -> *const pango::PangoFontDescription;
    pub fn gtk_theming_engine_get_junction_sides(engine: *mut GtkThemingEngine)
        -> GtkJunctionSides;
    pub fn gtk_theming_engine_get_margin(
        engine: *mut GtkThemingEngine,
        state: GtkStateFlags,
        margin: *mut GtkBorder,
    );
    pub fn gtk_theming_engine_get_padding(
        engine: *mut GtkThemingEngine,
        state: GtkStateFlags,
        padding: *mut GtkBorder,
    );
    pub fn gtk_theming_engine_get_path(engine: *mut GtkThemingEngine) -> *const GtkWidgetPath;
    pub fn gtk_theming_engine_get_property(
        engine: *mut GtkThemingEngine,
        property: *const c_char,
        state: GtkStateFlags,
        value: *mut gobject::GValue,
    );
    pub fn gtk_theming_engine_get_screen(engine: *mut GtkThemingEngine) -> *mut gdk::GdkScreen;
    pub fn gtk_theming_engine_get_state(engine: *mut GtkThemingEngine) -> GtkStateFlags;
    pub fn gtk_theming_engine_get_style(engine: *mut GtkThemingEngine, ...);
    pub fn gtk_theming_engine_get_style_property(
        engine: *mut GtkThemingEngine,
        property_name: *const c_char,
        value: *mut gobject::GValue,
    );
    //pub fn gtk_theming_engine_get_style_valist(engine: *mut GtkThemingEngine, args: /*Unimplemented*/va_list);
    //pub fn gtk_theming_engine_get_valist(engine: *mut GtkThemingEngine, state: GtkStateFlags, args: /*Unimplemented*/va_list);
    pub fn gtk_theming_engine_has_class(
        engine: *mut GtkThemingEngine,
        style_class: *const c_char,
    ) -> gboolean;
    pub fn gtk_theming_engine_has_region(
        engine: *mut GtkThemingEngine,
        style_region: *const c_char,
        flags: *mut GtkRegionFlags,
    ) -> gboolean;
    pub fn gtk_theming_engine_lookup_color(
        engine: *mut GtkThemingEngine,
        color_name: *const c_char,
        color: *mut gdk::GdkRGBA,
    ) -> gboolean;
    pub fn gtk_theming_engine_state_is_running(
        engine: *mut GtkThemingEngine,
        state: GtkStateType,
        progress: *mut c_double,
    ) -> gboolean;

    //=========================================================================
    // GtkToggleAction
    //=========================================================================
    pub fn gtk_toggle_action_get_type() -> GType;
    pub fn gtk_toggle_action_new(
        name: *const c_char,
        label: *const c_char,
        tooltip: *const c_char,
        stock_id: *const c_char,
    ) -> *mut GtkToggleAction;
    pub fn gtk_toggle_action_get_active(action: *mut GtkToggleAction) -> gboolean;
    pub fn gtk_toggle_action_get_draw_as_radio(action: *mut GtkToggleAction) -> gboolean;
    pub fn gtk_toggle_action_set_active(action: *mut GtkToggleAction, is_active: gboolean);
    pub fn gtk_toggle_action_set_draw_as_radio(
        action: *mut GtkToggleAction,
        draw_as_radio: gboolean,
    );
    pub fn gtk_toggle_action_toggled(action: *mut GtkToggleAction);

    //=========================================================================
    // GtkToggleButton
    //=========================================================================
    pub fn gtk_toggle_button_get_type() -> GType;
    pub fn gtk_toggle_button_new() -> *mut GtkWidget;
    pub fn gtk_toggle_button_new_with_label(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_toggle_button_new_with_mnemonic(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_toggle_button_get_active(toggle_button: *mut GtkToggleButton) -> gboolean;
    pub fn gtk_toggle_button_get_inconsistent(toggle_button: *mut GtkToggleButton) -> gboolean;
    pub fn gtk_toggle_button_get_mode(toggle_button: *mut GtkToggleButton) -> gboolean;
    pub fn gtk_toggle_button_set_active(toggle_button: *mut GtkToggleButton, is_active: gboolean);
    pub fn gtk_toggle_button_set_inconsistent(
        toggle_button: *mut GtkToggleButton,
        setting: gboolean,
    );
    pub fn gtk_toggle_button_set_mode(
        toggle_button: *mut GtkToggleButton,
        draw_indicator: gboolean,
    );
    pub fn gtk_toggle_button_toggled(toggle_button: *mut GtkToggleButton);

    //=========================================================================
    // GtkToggleButtonAccessible
    //=========================================================================
    pub fn gtk_toggle_button_accessible_get_type() -> GType;

    //=========================================================================
    // GtkToggleToolButton
    //=========================================================================
    pub fn gtk_toggle_tool_button_get_type() -> GType;
    pub fn gtk_toggle_tool_button_new() -> *mut GtkToolItem;
    pub fn gtk_toggle_tool_button_new_from_stock(stock_id: *const c_char) -> *mut GtkToolItem;
    pub fn gtk_toggle_tool_button_get_active(button: *mut GtkToggleToolButton) -> gboolean;
    pub fn gtk_toggle_tool_button_set_active(button: *mut GtkToggleToolButton, is_active: gboolean);

    //=========================================================================
    // GtkToolButton
    //=========================================================================
    pub fn gtk_tool_button_get_type() -> GType;
    pub fn gtk_tool_button_new(
        icon_widget: *mut GtkWidget,
        label: *const c_char,
    ) -> *mut GtkToolItem;
    pub fn gtk_tool_button_new_from_stock(stock_id: *const c_char) -> *mut GtkToolItem;
    pub fn gtk_tool_button_get_icon_name(button: *mut GtkToolButton) -> *const c_char;
    pub fn gtk_tool_button_get_icon_widget(button: *mut GtkToolButton) -> *mut GtkWidget;
    pub fn gtk_tool_button_get_label(button: *mut GtkToolButton) -> *const c_char;
    pub fn gtk_tool_button_get_label_widget(button: *mut GtkToolButton) -> *mut GtkWidget;
    pub fn gtk_tool_button_get_stock_id(button: *mut GtkToolButton) -> *const c_char;
    pub fn gtk_tool_button_get_use_underline(button: *mut GtkToolButton) -> gboolean;
    pub fn gtk_tool_button_set_icon_name(button: *mut GtkToolButton, icon_name: *const c_char);
    pub fn gtk_tool_button_set_icon_widget(button: *mut GtkToolButton, icon_widget: *mut GtkWidget);
    pub fn gtk_tool_button_set_label(button: *mut GtkToolButton, label: *const c_char);
    pub fn gtk_tool_button_set_label_widget(
        button: *mut GtkToolButton,
        label_widget: *mut GtkWidget,
    );
    pub fn gtk_tool_button_set_stock_id(button: *mut GtkToolButton, stock_id: *const c_char);
    pub fn gtk_tool_button_set_use_underline(button: *mut GtkToolButton, use_underline: gboolean);

    //=========================================================================
    // GtkToolItem
    //=========================================================================
    pub fn gtk_tool_item_get_type() -> GType;
    pub fn gtk_tool_item_new() -> *mut GtkToolItem;
    pub fn gtk_tool_item_get_ellipsize_mode(
        tool_item: *mut GtkToolItem,
    ) -> pango::PangoEllipsizeMode;
    pub fn gtk_tool_item_get_expand(tool_item: *mut GtkToolItem) -> gboolean;
    pub fn gtk_tool_item_get_homogeneous(tool_item: *mut GtkToolItem) -> gboolean;
    pub fn gtk_tool_item_get_icon_size(tool_item: *mut GtkToolItem) -> GtkIconSize;
    pub fn gtk_tool_item_get_is_important(tool_item: *mut GtkToolItem) -> gboolean;
    pub fn gtk_tool_item_get_orientation(tool_item: *mut GtkToolItem) -> GtkOrientation;
    pub fn gtk_tool_item_get_proxy_menu_item(
        tool_item: *mut GtkToolItem,
        menu_item_id: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_tool_item_get_relief_style(tool_item: *mut GtkToolItem) -> GtkReliefStyle;
    pub fn gtk_tool_item_get_text_alignment(tool_item: *mut GtkToolItem) -> c_float;
    pub fn gtk_tool_item_get_text_orientation(tool_item: *mut GtkToolItem) -> GtkOrientation;
    pub fn gtk_tool_item_get_text_size_group(tool_item: *mut GtkToolItem) -> *mut GtkSizeGroup;
    pub fn gtk_tool_item_get_toolbar_style(tool_item: *mut GtkToolItem) -> GtkToolbarStyle;
    pub fn gtk_tool_item_get_use_drag_window(tool_item: *mut GtkToolItem) -> gboolean;
    pub fn gtk_tool_item_get_visible_horizontal(tool_item: *mut GtkToolItem) -> gboolean;
    pub fn gtk_tool_item_get_visible_vertical(tool_item: *mut GtkToolItem) -> gboolean;
    pub fn gtk_tool_item_rebuild_menu(tool_item: *mut GtkToolItem);
    pub fn gtk_tool_item_retrieve_proxy_menu_item(tool_item: *mut GtkToolItem) -> *mut GtkWidget;
    pub fn gtk_tool_item_set_expand(tool_item: *mut GtkToolItem, expand: gboolean);
    pub fn gtk_tool_item_set_homogeneous(tool_item: *mut GtkToolItem, homogeneous: gboolean);
    pub fn gtk_tool_item_set_is_important(tool_item: *mut GtkToolItem, is_important: gboolean);
    pub fn gtk_tool_item_set_proxy_menu_item(
        tool_item: *mut GtkToolItem,
        menu_item_id: *const c_char,
        menu_item: *mut GtkWidget,
    );
    pub fn gtk_tool_item_set_tooltip_markup(tool_item: *mut GtkToolItem, markup: *const c_char);
    pub fn gtk_tool_item_set_tooltip_text(tool_item: *mut GtkToolItem, text: *const c_char);
    pub fn gtk_tool_item_set_use_drag_window(
        tool_item: *mut GtkToolItem,
        use_drag_window: gboolean,
    );
    pub fn gtk_tool_item_set_visible_horizontal(
        tool_item: *mut GtkToolItem,
        visible_horizontal: gboolean,
    );
    pub fn gtk_tool_item_set_visible_vertical(
        tool_item: *mut GtkToolItem,
        visible_vertical: gboolean,
    );
    pub fn gtk_tool_item_toolbar_reconfigured(tool_item: *mut GtkToolItem);

    //=========================================================================
    // GtkToolItemGroup
    //=========================================================================
    pub fn gtk_tool_item_group_get_type() -> GType;
    pub fn gtk_tool_item_group_new(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_tool_item_group_get_collapsed(group: *mut GtkToolItemGroup) -> gboolean;
    pub fn gtk_tool_item_group_get_drop_item(
        group: *mut GtkToolItemGroup,
        x: c_int,
        y: c_int,
    ) -> *mut GtkToolItem;
    pub fn gtk_tool_item_group_get_ellipsize(
        group: *mut GtkToolItemGroup,
    ) -> pango::PangoEllipsizeMode;
    pub fn gtk_tool_item_group_get_header_relief(group: *mut GtkToolItemGroup) -> GtkReliefStyle;
    pub fn gtk_tool_item_group_get_item_position(
        group: *mut GtkToolItemGroup,
        item: *mut GtkToolItem,
    ) -> c_int;
    pub fn gtk_tool_item_group_get_label(group: *mut GtkToolItemGroup) -> *const c_char;
    pub fn gtk_tool_item_group_get_label_widget(group: *mut GtkToolItemGroup) -> *mut GtkWidget;
    pub fn gtk_tool_item_group_get_n_items(group: *mut GtkToolItemGroup) -> c_uint;
    pub fn gtk_tool_item_group_get_nth_item(
        group: *mut GtkToolItemGroup,
        index: c_uint,
    ) -> *mut GtkToolItem;
    pub fn gtk_tool_item_group_insert(
        group: *mut GtkToolItemGroup,
        item: *mut GtkToolItem,
        position: c_int,
    );
    pub fn gtk_tool_item_group_set_collapsed(group: *mut GtkToolItemGroup, collapsed: gboolean);
    pub fn gtk_tool_item_group_set_ellipsize(
        group: *mut GtkToolItemGroup,
        ellipsize: pango::PangoEllipsizeMode,
    );
    pub fn gtk_tool_item_group_set_header_relief(
        group: *mut GtkToolItemGroup,
        style: GtkReliefStyle,
    );
    pub fn gtk_tool_item_group_set_item_position(
        group: *mut GtkToolItemGroup,
        item: *mut GtkToolItem,
        position: c_int,
    );
    pub fn gtk_tool_item_group_set_label(group: *mut GtkToolItemGroup, label: *const c_char);
    pub fn gtk_tool_item_group_set_label_widget(
        group: *mut GtkToolItemGroup,
        label_widget: *mut GtkWidget,
    );

    //=========================================================================
    // GtkToolPalette
    //=========================================================================
    pub fn gtk_tool_palette_get_type() -> GType;
    pub fn gtk_tool_palette_new() -> *mut GtkWidget;
    pub fn gtk_tool_palette_get_drag_target_group() -> *const GtkTargetEntry;
    pub fn gtk_tool_palette_get_drag_target_item() -> *const GtkTargetEntry;
    pub fn gtk_tool_palette_add_drag_dest(
        palette: *mut GtkToolPalette,
        widget: *mut GtkWidget,
        flags: GtkDestDefaults,
        targets: GtkToolPaletteDragTargets,
        actions: gdk::GdkDragAction,
    );
    pub fn gtk_tool_palette_get_drag_item(
        palette: *mut GtkToolPalette,
        selection: *const GtkSelectionData,
    ) -> *mut GtkWidget;
    pub fn gtk_tool_palette_get_drop_group(
        palette: *mut GtkToolPalette,
        x: c_int,
        y: c_int,
    ) -> *mut GtkToolItemGroup;
    pub fn gtk_tool_palette_get_drop_item(
        palette: *mut GtkToolPalette,
        x: c_int,
        y: c_int,
    ) -> *mut GtkToolItem;
    pub fn gtk_tool_palette_get_exclusive(
        palette: *mut GtkToolPalette,
        group: *mut GtkToolItemGroup,
    ) -> gboolean;
    pub fn gtk_tool_palette_get_expand(
        palette: *mut GtkToolPalette,
        group: *mut GtkToolItemGroup,
    ) -> gboolean;
    pub fn gtk_tool_palette_get_group_position(
        palette: *mut GtkToolPalette,
        group: *mut GtkToolItemGroup,
    ) -> c_int;
    pub fn gtk_tool_palette_get_hadjustment(palette: *mut GtkToolPalette) -> *mut GtkAdjustment;
    pub fn gtk_tool_palette_get_icon_size(palette: *mut GtkToolPalette) -> GtkIconSize;
    pub fn gtk_tool_palette_get_style(palette: *mut GtkToolPalette) -> GtkToolbarStyle;
    pub fn gtk_tool_palette_get_vadjustment(palette: *mut GtkToolPalette) -> *mut GtkAdjustment;
    pub fn gtk_tool_palette_set_drag_source(
        palette: *mut GtkToolPalette,
        targets: GtkToolPaletteDragTargets,
    );
    pub fn gtk_tool_palette_set_exclusive(
        palette: *mut GtkToolPalette,
        group: *mut GtkToolItemGroup,
        exclusive: gboolean,
    );
    pub fn gtk_tool_palette_set_expand(
        palette: *mut GtkToolPalette,
        group: *mut GtkToolItemGroup,
        expand: gboolean,
    );
    pub fn gtk_tool_palette_set_group_position(
        palette: *mut GtkToolPalette,
        group: *mut GtkToolItemGroup,
        position: c_int,
    );
    pub fn gtk_tool_palette_set_icon_size(palette: *mut GtkToolPalette, icon_size: GtkIconSize);
    pub fn gtk_tool_palette_set_style(palette: *mut GtkToolPalette, style: GtkToolbarStyle);
    pub fn gtk_tool_palette_unset_icon_size(palette: *mut GtkToolPalette);
    pub fn gtk_tool_palette_unset_style(palette: *mut GtkToolPalette);

    //=========================================================================
    // GtkToolbar
    //=========================================================================
    pub fn gtk_toolbar_get_type() -> GType;
    pub fn gtk_toolbar_new() -> *mut GtkWidget;
    pub fn gtk_toolbar_get_drop_index(toolbar: *mut GtkToolbar, x: c_int, y: c_int) -> c_int;
    pub fn gtk_toolbar_get_icon_size(toolbar: *mut GtkToolbar) -> GtkIconSize;
    pub fn gtk_toolbar_get_item_index(toolbar: *mut GtkToolbar, item: *mut GtkToolItem) -> c_int;
    pub fn gtk_toolbar_get_n_items(toolbar: *mut GtkToolbar) -> c_int;
    pub fn gtk_toolbar_get_nth_item(toolbar: *mut GtkToolbar, n: c_int) -> *mut GtkToolItem;
    pub fn gtk_toolbar_get_relief_style(toolbar: *mut GtkToolbar) -> GtkReliefStyle;
    pub fn gtk_toolbar_get_show_arrow(toolbar: *mut GtkToolbar) -> gboolean;
    pub fn gtk_toolbar_get_style(toolbar: *mut GtkToolbar) -> GtkToolbarStyle;
    pub fn gtk_toolbar_insert(toolbar: *mut GtkToolbar, item: *mut GtkToolItem, pos: c_int);
    pub fn gtk_toolbar_set_drop_highlight_item(
        toolbar: *mut GtkToolbar,
        tool_item: *mut GtkToolItem,
        index_: c_int,
    );
    pub fn gtk_toolbar_set_icon_size(toolbar: *mut GtkToolbar, icon_size: GtkIconSize);
    pub fn gtk_toolbar_set_show_arrow(toolbar: *mut GtkToolbar, show_arrow: gboolean);
    pub fn gtk_toolbar_set_style(toolbar: *mut GtkToolbar, style: GtkToolbarStyle);
    pub fn gtk_toolbar_unset_icon_size(toolbar: *mut GtkToolbar);
    pub fn gtk_toolbar_unset_style(toolbar: *mut GtkToolbar);

    //=========================================================================
    // GtkTooltip
    //=========================================================================
    pub fn gtk_tooltip_get_type() -> GType;
    pub fn gtk_tooltip_trigger_tooltip_query(display: *mut gdk::GdkDisplay);
    pub fn gtk_tooltip_set_custom(tooltip: *mut GtkTooltip, custom_widget: *mut GtkWidget);
    pub fn gtk_tooltip_set_icon(tooltip: *mut GtkTooltip, pixbuf: *mut gdk_pixbuf::GdkPixbuf);
    pub fn gtk_tooltip_set_icon_from_gicon(
        tooltip: *mut GtkTooltip,
        gicon: *mut gio::GIcon,
        size: GtkIconSize,
    );
    pub fn gtk_tooltip_set_icon_from_icon_name(
        tooltip: *mut GtkTooltip,
        icon_name: *const c_char,
        size: GtkIconSize,
    );
    pub fn gtk_tooltip_set_icon_from_stock(
        tooltip: *mut GtkTooltip,
        stock_id: *const c_char,
        size: GtkIconSize,
    );
    pub fn gtk_tooltip_set_markup(tooltip: *mut GtkTooltip, markup: *const c_char);
    pub fn gtk_tooltip_set_text(tooltip: *mut GtkTooltip, text: *const c_char);
    pub fn gtk_tooltip_set_tip_area(tooltip: *mut GtkTooltip, rect: *const gdk::GdkRectangle);

    //=========================================================================
    // GtkToplevelAccessible
    //=========================================================================
    pub fn gtk_toplevel_accessible_get_type() -> GType;
    pub fn gtk_toplevel_accessible_get_children(
        accessible: *mut GtkToplevelAccessible,
    ) -> *mut glib::GList;

    //=========================================================================
    // GtkTreeModelFilter
    //=========================================================================
    pub fn gtk_tree_model_filter_get_type() -> GType;
    pub fn gtk_tree_model_filter_clear_cache(filter: *mut GtkTreeModelFilter);
    pub fn gtk_tree_model_filter_convert_child_iter_to_iter(
        filter: *mut GtkTreeModelFilter,
        filter_iter: *mut GtkTreeIter,
        child_iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_model_filter_convert_child_path_to_path(
        filter: *mut GtkTreeModelFilter,
        child_path: *mut GtkTreePath,
    ) -> *mut GtkTreePath;
    pub fn gtk_tree_model_filter_convert_iter_to_child_iter(
        filter: *mut GtkTreeModelFilter,
        child_iter: *mut GtkTreeIter,
        filter_iter: *mut GtkTreeIter,
    );
    pub fn gtk_tree_model_filter_convert_path_to_child_path(
        filter: *mut GtkTreeModelFilter,
        filter_path: *mut GtkTreePath,
    ) -> *mut GtkTreePath;
    pub fn gtk_tree_model_filter_get_model(filter: *mut GtkTreeModelFilter) -> *mut GtkTreeModel;
    pub fn gtk_tree_model_filter_refilter(filter: *mut GtkTreeModelFilter);
    pub fn gtk_tree_model_filter_set_modify_func(
        filter: *mut GtkTreeModelFilter,
        n_columns: c_int,
        types: *mut GType,
        func: GtkTreeModelFilterModifyFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_tree_model_filter_set_visible_column(filter: *mut GtkTreeModelFilter, column: c_int);
    pub fn gtk_tree_model_filter_set_visible_func(
        filter: *mut GtkTreeModelFilter,
        func: GtkTreeModelFilterVisibleFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
    );

    //=========================================================================
    // GtkTreeModelSort
    //=========================================================================
    pub fn gtk_tree_model_sort_get_type() -> GType;
    pub fn gtk_tree_model_sort_new_with_model(
        child_model: *mut GtkTreeModel,
    ) -> *mut GtkTreeModelSort;
    pub fn gtk_tree_model_sort_clear_cache(tree_model_sort: *mut GtkTreeModelSort);
    pub fn gtk_tree_model_sort_convert_child_iter_to_iter(
        tree_model_sort: *mut GtkTreeModelSort,
        sort_iter: *mut GtkTreeIter,
        child_iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_model_sort_convert_child_path_to_path(
        tree_model_sort: *mut GtkTreeModelSort,
        child_path: *mut GtkTreePath,
    ) -> *mut GtkTreePath;
    pub fn gtk_tree_model_sort_convert_iter_to_child_iter(
        tree_model_sort: *mut GtkTreeModelSort,
        child_iter: *mut GtkTreeIter,
        sorted_iter: *mut GtkTreeIter,
    );
    pub fn gtk_tree_model_sort_convert_path_to_child_path(
        tree_model_sort: *mut GtkTreeModelSort,
        sorted_path: *mut GtkTreePath,
    ) -> *mut GtkTreePath;
    pub fn gtk_tree_model_sort_get_model(tree_model: *mut GtkTreeModelSort) -> *mut GtkTreeModel;
    pub fn gtk_tree_model_sort_iter_is_valid(
        tree_model_sort: *mut GtkTreeModelSort,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_model_sort_reset_default_sort_func(tree_model_sort: *mut GtkTreeModelSort);

    //=========================================================================
    // GtkTreeSelection
    //=========================================================================
    pub fn gtk_tree_selection_get_type() -> GType;
    pub fn gtk_tree_selection_count_selected_rows(selection: *mut GtkTreeSelection) -> c_int;
    pub fn gtk_tree_selection_get_mode(selection: *mut GtkTreeSelection) -> GtkSelectionMode;
    pub fn gtk_tree_selection_get_select_function(
        selection: *mut GtkTreeSelection,
    ) -> GtkTreeSelectionFunc;
    pub fn gtk_tree_selection_get_selected(
        selection: *mut GtkTreeSelection,
        model: *mut *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_selection_get_selected_rows(
        selection: *mut GtkTreeSelection,
        model: *mut *mut GtkTreeModel,
    ) -> *mut glib::GList;
    pub fn gtk_tree_selection_get_tree_view(selection: *mut GtkTreeSelection) -> *mut GtkTreeView;
    pub fn gtk_tree_selection_get_user_data(selection: *mut GtkTreeSelection) -> gpointer;
    pub fn gtk_tree_selection_iter_is_selected(
        selection: *mut GtkTreeSelection,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_selection_path_is_selected(
        selection: *mut GtkTreeSelection,
        path: *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_tree_selection_select_all(selection: *mut GtkTreeSelection);
    pub fn gtk_tree_selection_select_iter(selection: *mut GtkTreeSelection, iter: *mut GtkTreeIter);
    pub fn gtk_tree_selection_select_path(selection: *mut GtkTreeSelection, path: *mut GtkTreePath);
    pub fn gtk_tree_selection_select_range(
        selection: *mut GtkTreeSelection,
        start_path: *mut GtkTreePath,
        end_path: *mut GtkTreePath,
    );
    pub fn gtk_tree_selection_selected_foreach(
        selection: *mut GtkTreeSelection,
        func: GtkTreeSelectionForeachFunc,
        data: gpointer,
    );
    pub fn gtk_tree_selection_set_mode(selection: *mut GtkTreeSelection, type_: GtkSelectionMode);
    pub fn gtk_tree_selection_set_select_function(
        selection: *mut GtkTreeSelection,
        func: GtkTreeSelectionFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_tree_selection_unselect_all(selection: *mut GtkTreeSelection);
    pub fn gtk_tree_selection_unselect_iter(
        selection: *mut GtkTreeSelection,
        iter: *mut GtkTreeIter,
    );
    pub fn gtk_tree_selection_unselect_path(
        selection: *mut GtkTreeSelection,
        path: *mut GtkTreePath,
    );
    pub fn gtk_tree_selection_unselect_range(
        selection: *mut GtkTreeSelection,
        start_path: *mut GtkTreePath,
        end_path: *mut GtkTreePath,
    );

    //=========================================================================
    // GtkTreeStore
    //=========================================================================
    pub fn gtk_tree_store_get_type() -> GType;
    pub fn gtk_tree_store_new(n_columns: c_int, ...) -> *mut GtkTreeStore;
    pub fn gtk_tree_store_newv(n_columns: c_int, types: *mut GType) -> *mut GtkTreeStore;
    pub fn gtk_tree_store_append(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        parent: *mut GtkTreeIter,
    );
    pub fn gtk_tree_store_clear(tree_store: *mut GtkTreeStore);
    pub fn gtk_tree_store_insert(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        parent: *mut GtkTreeIter,
        position: c_int,
    );
    pub fn gtk_tree_store_insert_after(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        parent: *mut GtkTreeIter,
        sibling: *mut GtkTreeIter,
    );
    pub fn gtk_tree_store_insert_before(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        parent: *mut GtkTreeIter,
        sibling: *mut GtkTreeIter,
    );
    pub fn gtk_tree_store_insert_with_values(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        parent: *mut GtkTreeIter,
        position: c_int,
        ...
    );
    pub fn gtk_tree_store_insert_with_valuesv(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        parent: *mut GtkTreeIter,
        position: c_int,
        columns: *mut c_int,
        values: *mut gobject::GValue,
        n_values: c_int,
    );
    pub fn gtk_tree_store_is_ancestor(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        descendant: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_store_iter_depth(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
    ) -> c_int;
    pub fn gtk_tree_store_iter_is_valid(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_store_move_after(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        position: *mut GtkTreeIter,
    );
    pub fn gtk_tree_store_move_before(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        position: *mut GtkTreeIter,
    );
    pub fn gtk_tree_store_prepend(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        parent: *mut GtkTreeIter,
    );
    pub fn gtk_tree_store_remove(tree_store: *mut GtkTreeStore, iter: *mut GtkTreeIter)
        -> gboolean;
    pub fn gtk_tree_store_reorder(
        tree_store: *mut GtkTreeStore,
        parent: *mut GtkTreeIter,
        new_order: *mut c_int,
    );
    pub fn gtk_tree_store_set(tree_store: *mut GtkTreeStore, iter: *mut GtkTreeIter, ...);
    pub fn gtk_tree_store_set_column_types(
        tree_store: *mut GtkTreeStore,
        n_columns: c_int,
        types: *mut GType,
    );
    //pub fn gtk_tree_store_set_valist(tree_store: *mut GtkTreeStore, iter: *mut GtkTreeIter, var_args: /*Unimplemented*/va_list);
    pub fn gtk_tree_store_set_value(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        column: c_int,
        value: *mut gobject::GValue,
    );
    pub fn gtk_tree_store_set_valuesv(
        tree_store: *mut GtkTreeStore,
        iter: *mut GtkTreeIter,
        columns: *mut c_int,
        values: *mut gobject::GValue,
        n_values: c_int,
    );
    pub fn gtk_tree_store_swap(
        tree_store: *mut GtkTreeStore,
        a: *mut GtkTreeIter,
        b: *mut GtkTreeIter,
    );

    //=========================================================================
    // GtkTreeView
    //=========================================================================
    pub fn gtk_tree_view_get_type() -> GType;
    pub fn gtk_tree_view_new() -> *mut GtkWidget;
    pub fn gtk_tree_view_new_with_model(model: *mut GtkTreeModel) -> *mut GtkWidget;
    pub fn gtk_tree_view_append_column(
        tree_view: *mut GtkTreeView,
        column: *mut GtkTreeViewColumn,
    ) -> c_int;
    pub fn gtk_tree_view_collapse_all(tree_view: *mut GtkTreeView);
    pub fn gtk_tree_view_collapse_row(
        tree_view: *mut GtkTreeView,
        path: *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_tree_view_columns_autosize(tree_view: *mut GtkTreeView);
    pub fn gtk_tree_view_convert_bin_window_to_tree_coords(
        tree_view: *mut GtkTreeView,
        bx: c_int,
        by: c_int,
        tx: *mut c_int,
        ty: *mut c_int,
    );
    pub fn gtk_tree_view_convert_bin_window_to_widget_coords(
        tree_view: *mut GtkTreeView,
        bx: c_int,
        by: c_int,
        wx: *mut c_int,
        wy: *mut c_int,
    );
    pub fn gtk_tree_view_convert_tree_to_bin_window_coords(
        tree_view: *mut GtkTreeView,
        tx: c_int,
        ty: c_int,
        bx: *mut c_int,
        by: *mut c_int,
    );
    pub fn gtk_tree_view_convert_tree_to_widget_coords(
        tree_view: *mut GtkTreeView,
        tx: c_int,
        ty: c_int,
        wx: *mut c_int,
        wy: *mut c_int,
    );
    pub fn gtk_tree_view_convert_widget_to_bin_window_coords(
        tree_view: *mut GtkTreeView,
        wx: c_int,
        wy: c_int,
        bx: *mut c_int,
        by: *mut c_int,
    );
    pub fn gtk_tree_view_convert_widget_to_tree_coords(
        tree_view: *mut GtkTreeView,
        wx: c_int,
        wy: c_int,
        tx: *mut c_int,
        ty: *mut c_int,
    );
    pub fn gtk_tree_view_create_row_drag_icon(
        tree_view: *mut GtkTreeView,
        path: *mut GtkTreePath,
    ) -> *mut cairo::cairo_surface_t;
    pub fn gtk_tree_view_enable_model_drag_dest(
        tree_view: *mut GtkTreeView,
        targets: *const GtkTargetEntry,
        n_targets: c_int,
        actions: gdk::GdkDragAction,
    );
    pub fn gtk_tree_view_enable_model_drag_source(
        tree_view: *mut GtkTreeView,
        start_button_mask: gdk::GdkModifierType,
        targets: *const GtkTargetEntry,
        n_targets: c_int,
        actions: gdk::GdkDragAction,
    );
    pub fn gtk_tree_view_expand_all(tree_view: *mut GtkTreeView);
    pub fn gtk_tree_view_expand_row(
        tree_view: *mut GtkTreeView,
        path: *mut GtkTreePath,
        open_all: gboolean,
    ) -> gboolean;
    pub fn gtk_tree_view_expand_to_path(tree_view: *mut GtkTreeView, path: *mut GtkTreePath);
    pub fn gtk_tree_view_get_activate_on_single_click(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_background_area(
        tree_view: *mut GtkTreeView,
        path: *mut GtkTreePath,
        column: *mut GtkTreeViewColumn,
        rect: *mut gdk::GdkRectangle,
    );
    pub fn gtk_tree_view_get_bin_window(tree_view: *mut GtkTreeView) -> *mut gdk::GdkWindow;
    pub fn gtk_tree_view_get_cell_area(
        tree_view: *mut GtkTreeView,
        path: *mut GtkTreePath,
        column: *mut GtkTreeViewColumn,
        rect: *mut gdk::GdkRectangle,
    );
    pub fn gtk_tree_view_get_column(
        tree_view: *mut GtkTreeView,
        n: c_int,
    ) -> *mut GtkTreeViewColumn;
    pub fn gtk_tree_view_get_columns(tree_view: *mut GtkTreeView) -> *mut glib::GList;
    pub fn gtk_tree_view_get_cursor(
        tree_view: *mut GtkTreeView,
        path: *mut *mut GtkTreePath,
        focus_column: *mut *mut GtkTreeViewColumn,
    );
    pub fn gtk_tree_view_get_dest_row_at_pos(
        tree_view: *mut GtkTreeView,
        drag_x: c_int,
        drag_y: c_int,
        path: *mut *mut GtkTreePath,
        pos: *mut GtkTreeViewDropPosition,
    ) -> gboolean;
    pub fn gtk_tree_view_get_drag_dest_row(
        tree_view: *mut GtkTreeView,
        path: *mut *mut GtkTreePath,
        pos: *mut GtkTreeViewDropPosition,
    );
    pub fn gtk_tree_view_get_enable_search(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_enable_tree_lines(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_expander_column(tree_view: *mut GtkTreeView)
        -> *mut GtkTreeViewColumn;
    pub fn gtk_tree_view_get_fixed_height_mode(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_grid_lines(tree_view: *mut GtkTreeView) -> GtkTreeViewGridLines;
    pub fn gtk_tree_view_get_hadjustment(tree_view: *mut GtkTreeView) -> *mut GtkAdjustment;
    pub fn gtk_tree_view_get_headers_clickable(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_headers_visible(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_hover_expand(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_hover_selection(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_level_indentation(tree_view: *mut GtkTreeView) -> c_int;
    pub fn gtk_tree_view_get_model(tree_view: *mut GtkTreeView) -> *mut GtkTreeModel;
    pub fn gtk_tree_view_get_n_columns(tree_view: *mut GtkTreeView) -> c_uint;
    pub fn gtk_tree_view_get_path_at_pos(
        tree_view: *mut GtkTreeView,
        x: c_int,
        y: c_int,
        path: *mut *mut GtkTreePath,
        column: *mut *mut GtkTreeViewColumn,
        cell_x: *mut c_int,
        cell_y: *mut c_int,
    ) -> gboolean;
    pub fn gtk_tree_view_get_reorderable(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_row_separator_func(
        tree_view: *mut GtkTreeView,
    ) -> GtkTreeViewRowSeparatorFunc;
    pub fn gtk_tree_view_get_rubber_banding(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_rules_hint(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_search_column(tree_view: *mut GtkTreeView) -> c_int;
    pub fn gtk_tree_view_get_search_entry(tree_view: *mut GtkTreeView) -> *mut GtkEntry;
    pub fn gtk_tree_view_get_search_equal_func(
        tree_view: *mut GtkTreeView,
    ) -> GtkTreeViewSearchEqualFunc;
    pub fn gtk_tree_view_get_search_position_func(
        tree_view: *mut GtkTreeView,
    ) -> GtkTreeViewSearchPositionFunc;
    pub fn gtk_tree_view_get_selection(tree_view: *mut GtkTreeView) -> *mut GtkTreeSelection;
    pub fn gtk_tree_view_get_show_expanders(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_get_tooltip_column(tree_view: *mut GtkTreeView) -> c_int;
    pub fn gtk_tree_view_get_tooltip_context(
        tree_view: *mut GtkTreeView,
        x: *mut c_int,
        y: *mut c_int,
        keyboard_tip: gboolean,
        model: *mut *mut GtkTreeModel,
        path: *mut *mut GtkTreePath,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_view_get_vadjustment(tree_view: *mut GtkTreeView) -> *mut GtkAdjustment;
    pub fn gtk_tree_view_get_visible_range(
        tree_view: *mut GtkTreeView,
        start_path: *mut *mut GtkTreePath,
        end_path: *mut *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_tree_view_get_visible_rect(
        tree_view: *mut GtkTreeView,
        visible_rect: *mut gdk::GdkRectangle,
    );
    pub fn gtk_tree_view_insert_column(
        tree_view: *mut GtkTreeView,
        column: *mut GtkTreeViewColumn,
        position: c_int,
    ) -> c_int;
    pub fn gtk_tree_view_insert_column_with_attributes(
        tree_view: *mut GtkTreeView,
        position: c_int,
        title: *const c_char,
        cell: *mut GtkCellRenderer,
        ...
    ) -> c_int;
    pub fn gtk_tree_view_insert_column_with_data_func(
        tree_view: *mut GtkTreeView,
        position: c_int,
        title: *const c_char,
        cell: *mut GtkCellRenderer,
        func: GtkTreeCellDataFunc,
        data: gpointer,
        dnotify: glib::GDestroyNotify,
    ) -> c_int;
    pub fn gtk_tree_view_is_blank_at_pos(
        tree_view: *mut GtkTreeView,
        x: c_int,
        y: c_int,
        path: *mut *mut GtkTreePath,
        column: *mut *mut GtkTreeViewColumn,
        cell_x: *mut c_int,
        cell_y: *mut c_int,
    ) -> gboolean;
    pub fn gtk_tree_view_is_rubber_banding_active(tree_view: *mut GtkTreeView) -> gboolean;
    pub fn gtk_tree_view_map_expanded_rows(
        tree_view: *mut GtkTreeView,
        func: GtkTreeViewMappingFunc,
        data: gpointer,
    );
    pub fn gtk_tree_view_move_column_after(
        tree_view: *mut GtkTreeView,
        column: *mut GtkTreeViewColumn,
        base_column: *mut GtkTreeViewColumn,
    );
    pub fn gtk_tree_view_remove_column(
        tree_view: *mut GtkTreeView,
        column: *mut GtkTreeViewColumn,
    ) -> c_int;
    pub fn gtk_tree_view_row_activated(
        tree_view: *mut GtkTreeView,
        path: *mut GtkTreePath,
        column: *mut GtkTreeViewColumn,
    );
    pub fn gtk_tree_view_row_expanded(
        tree_view: *mut GtkTreeView,
        path: *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_tree_view_scroll_to_cell(
        tree_view: *mut GtkTreeView,
        path: *mut GtkTreePath,
        column: *mut GtkTreeViewColumn,
        use_align: gboolean,
        row_align: c_float,
        col_align: c_float,
    );
    pub fn gtk_tree_view_scroll_to_point(tree_view: *mut GtkTreeView, tree_x: c_int, tree_y: c_int);
    pub fn gtk_tree_view_set_activate_on_single_click(
        tree_view: *mut GtkTreeView,
        single: gboolean,
    );
    pub fn gtk_tree_view_set_column_drag_function(
        tree_view: *mut GtkTreeView,
        func: GtkTreeViewColumnDropFunc,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_tree_view_set_cursor(
        tree_view: *mut GtkTreeView,
        path: *mut GtkTreePath,
        focus_column: *mut GtkTreeViewColumn,
        start_editing: gboolean,
    );
    pub fn gtk_tree_view_set_cursor_on_cell(
        tree_view: *mut GtkTreeView,
        path: *mut GtkTreePath,
        focus_column: *mut GtkTreeViewColumn,
        focus_cell: *mut GtkCellRenderer,
        start_editing: gboolean,
    );
    pub fn gtk_tree_view_set_destroy_count_func(
        tree_view: *mut GtkTreeView,
        func: GtkTreeDestroyCountFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_tree_view_set_drag_dest_row(
        tree_view: *mut GtkTreeView,
        path: *mut GtkTreePath,
        pos: GtkTreeViewDropPosition,
    );
    pub fn gtk_tree_view_set_enable_search(tree_view: *mut GtkTreeView, enable_search: gboolean);
    pub fn gtk_tree_view_set_enable_tree_lines(tree_view: *mut GtkTreeView, enabled: gboolean);
    pub fn gtk_tree_view_set_expander_column(
        tree_view: *mut GtkTreeView,
        column: *mut GtkTreeViewColumn,
    );
    pub fn gtk_tree_view_set_fixed_height_mode(tree_view: *mut GtkTreeView, enable: gboolean);
    pub fn gtk_tree_view_set_grid_lines(
        tree_view: *mut GtkTreeView,
        grid_lines: GtkTreeViewGridLines,
    );
    pub fn gtk_tree_view_set_hadjustment(
        tree_view: *mut GtkTreeView,
        adjustment: *mut GtkAdjustment,
    );
    pub fn gtk_tree_view_set_headers_clickable(tree_view: *mut GtkTreeView, setting: gboolean);
    pub fn gtk_tree_view_set_headers_visible(
        tree_view: *mut GtkTreeView,
        headers_visible: gboolean,
    );
    pub fn gtk_tree_view_set_hover_expand(tree_view: *mut GtkTreeView, expand: gboolean);
    pub fn gtk_tree_view_set_hover_selection(tree_view: *mut GtkTreeView, hover: gboolean);
    pub fn gtk_tree_view_set_level_indentation(tree_view: *mut GtkTreeView, indentation: c_int);
    pub fn gtk_tree_view_set_model(tree_view: *mut GtkTreeView, model: *mut GtkTreeModel);
    pub fn gtk_tree_view_set_reorderable(tree_view: *mut GtkTreeView, reorderable: gboolean);
    pub fn gtk_tree_view_set_row_separator_func(
        tree_view: *mut GtkTreeView,
        func: GtkTreeViewRowSeparatorFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_tree_view_set_rubber_banding(tree_view: *mut GtkTreeView, enable: gboolean);
    pub fn gtk_tree_view_set_rules_hint(tree_view: *mut GtkTreeView, setting: gboolean);
    pub fn gtk_tree_view_set_search_column(tree_view: *mut GtkTreeView, column: c_int);
    pub fn gtk_tree_view_set_search_entry(tree_view: *mut GtkTreeView, entry: *mut GtkEntry);
    pub fn gtk_tree_view_set_search_equal_func(
        tree_view: *mut GtkTreeView,
        search_equal_func: GtkTreeViewSearchEqualFunc,
        search_user_data: gpointer,
        search_destroy: glib::GDestroyNotify,
    );
    pub fn gtk_tree_view_set_search_position_func(
        tree_view: *mut GtkTreeView,
        func: GtkTreeViewSearchPositionFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_tree_view_set_show_expanders(tree_view: *mut GtkTreeView, enabled: gboolean);
    pub fn gtk_tree_view_set_tooltip_cell(
        tree_view: *mut GtkTreeView,
        tooltip: *mut GtkTooltip,
        path: *mut GtkTreePath,
        column: *mut GtkTreeViewColumn,
        cell: *mut GtkCellRenderer,
    );
    pub fn gtk_tree_view_set_tooltip_column(tree_view: *mut GtkTreeView, column: c_int);
    pub fn gtk_tree_view_set_tooltip_row(
        tree_view: *mut GtkTreeView,
        tooltip: *mut GtkTooltip,
        path: *mut GtkTreePath,
    );
    pub fn gtk_tree_view_set_vadjustment(
        tree_view: *mut GtkTreeView,
        adjustment: *mut GtkAdjustment,
    );
    pub fn gtk_tree_view_unset_rows_drag_dest(tree_view: *mut GtkTreeView);
    pub fn gtk_tree_view_unset_rows_drag_source(tree_view: *mut GtkTreeView);

    //=========================================================================
    // GtkTreeViewAccessible
    //=========================================================================
    pub fn gtk_tree_view_accessible_get_type() -> GType;

    //=========================================================================
    // GtkTreeViewColumn
    //=========================================================================
    pub fn gtk_tree_view_column_get_type() -> GType;
    pub fn gtk_tree_view_column_new() -> *mut GtkTreeViewColumn;
    pub fn gtk_tree_view_column_new_with_area(area: *mut GtkCellArea) -> *mut GtkTreeViewColumn;
    pub fn gtk_tree_view_column_new_with_attributes(
        title: *const c_char,
        cell: *mut GtkCellRenderer,
        ...
    ) -> *mut GtkTreeViewColumn;
    pub fn gtk_tree_view_column_add_attribute(
        tree_column: *mut GtkTreeViewColumn,
        cell_renderer: *mut GtkCellRenderer,
        attribute: *const c_char,
        column: c_int,
    );
    pub fn gtk_tree_view_column_cell_get_position(
        tree_column: *mut GtkTreeViewColumn,
        cell_renderer: *mut GtkCellRenderer,
        x_offset: *mut c_int,
        width: *mut c_int,
    ) -> gboolean;
    pub fn gtk_tree_view_column_cell_get_size(
        tree_column: *mut GtkTreeViewColumn,
        cell_area: *const gdk::GdkRectangle,
        x_offset: *mut c_int,
        y_offset: *mut c_int,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_tree_view_column_cell_is_visible(tree_column: *mut GtkTreeViewColumn) -> gboolean;
    pub fn gtk_tree_view_column_cell_set_cell_data(
        tree_column: *mut GtkTreeViewColumn,
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
        is_expander: gboolean,
        is_expanded: gboolean,
    );
    pub fn gtk_tree_view_column_clear(tree_column: *mut GtkTreeViewColumn);
    pub fn gtk_tree_view_column_clear_attributes(
        tree_column: *mut GtkTreeViewColumn,
        cell_renderer: *mut GtkCellRenderer,
    );
    pub fn gtk_tree_view_column_clicked(tree_column: *mut GtkTreeViewColumn);
    pub fn gtk_tree_view_column_focus_cell(
        tree_column: *mut GtkTreeViewColumn,
        cell: *mut GtkCellRenderer,
    );
    pub fn gtk_tree_view_column_get_alignment(tree_column: *mut GtkTreeViewColumn) -> c_float;
    pub fn gtk_tree_view_column_get_button(tree_column: *mut GtkTreeViewColumn) -> *mut GtkWidget;
    pub fn gtk_tree_view_column_get_clickable(tree_column: *mut GtkTreeViewColumn) -> gboolean;
    pub fn gtk_tree_view_column_get_expand(tree_column: *mut GtkTreeViewColumn) -> gboolean;
    pub fn gtk_tree_view_column_get_fixed_width(tree_column: *mut GtkTreeViewColumn) -> c_int;
    pub fn gtk_tree_view_column_get_max_width(tree_column: *mut GtkTreeViewColumn) -> c_int;
    pub fn gtk_tree_view_column_get_min_width(tree_column: *mut GtkTreeViewColumn) -> c_int;
    pub fn gtk_tree_view_column_get_reorderable(tree_column: *mut GtkTreeViewColumn) -> gboolean;
    pub fn gtk_tree_view_column_get_resizable(tree_column: *mut GtkTreeViewColumn) -> gboolean;
    pub fn gtk_tree_view_column_get_sizing(
        tree_column: *mut GtkTreeViewColumn,
    ) -> GtkTreeViewColumnSizing;
    pub fn gtk_tree_view_column_get_sort_column_id(tree_column: *mut GtkTreeViewColumn) -> c_int;
    pub fn gtk_tree_view_column_get_sort_indicator(tree_column: *mut GtkTreeViewColumn)
        -> gboolean;
    pub fn gtk_tree_view_column_get_sort_order(tree_column: *mut GtkTreeViewColumn) -> GtkSortType;
    pub fn gtk_tree_view_column_get_spacing(tree_column: *mut GtkTreeViewColumn) -> c_int;
    pub fn gtk_tree_view_column_get_title(tree_column: *mut GtkTreeViewColumn) -> *const c_char;
    pub fn gtk_tree_view_column_get_tree_view(
        tree_column: *mut GtkTreeViewColumn,
    ) -> *mut GtkWidget;
    pub fn gtk_tree_view_column_get_visible(tree_column: *mut GtkTreeViewColumn) -> gboolean;
    pub fn gtk_tree_view_column_get_widget(tree_column: *mut GtkTreeViewColumn) -> *mut GtkWidget;
    pub fn gtk_tree_view_column_get_width(tree_column: *mut GtkTreeViewColumn) -> c_int;
    pub fn gtk_tree_view_column_get_x_offset(tree_column: *mut GtkTreeViewColumn) -> c_int;
    pub fn gtk_tree_view_column_pack_end(
        tree_column: *mut GtkTreeViewColumn,
        cell: *mut GtkCellRenderer,
        expand: gboolean,
    );
    pub fn gtk_tree_view_column_pack_start(
        tree_column: *mut GtkTreeViewColumn,
        cell: *mut GtkCellRenderer,
        expand: gboolean,
    );
    pub fn gtk_tree_view_column_queue_resize(tree_column: *mut GtkTreeViewColumn);
    pub fn gtk_tree_view_column_set_alignment(tree_column: *mut GtkTreeViewColumn, xalign: c_float);
    pub fn gtk_tree_view_column_set_attributes(
        tree_column: *mut GtkTreeViewColumn,
        cell_renderer: *mut GtkCellRenderer,
        ...
    );
    pub fn gtk_tree_view_column_set_cell_data_func(
        tree_column: *mut GtkTreeViewColumn,
        cell_renderer: *mut GtkCellRenderer,
        func: GtkTreeCellDataFunc,
        func_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_tree_view_column_set_clickable(
        tree_column: *mut GtkTreeViewColumn,
        clickable: gboolean,
    );
    pub fn gtk_tree_view_column_set_expand(tree_column: *mut GtkTreeViewColumn, expand: gboolean);
    pub fn gtk_tree_view_column_set_fixed_width(
        tree_column: *mut GtkTreeViewColumn,
        fixed_width: c_int,
    );
    pub fn gtk_tree_view_column_set_max_width(
        tree_column: *mut GtkTreeViewColumn,
        max_width: c_int,
    );
    pub fn gtk_tree_view_column_set_min_width(
        tree_column: *mut GtkTreeViewColumn,
        min_width: c_int,
    );
    pub fn gtk_tree_view_column_set_reorderable(
        tree_column: *mut GtkTreeViewColumn,
        reorderable: gboolean,
    );
    pub fn gtk_tree_view_column_set_resizable(
        tree_column: *mut GtkTreeViewColumn,
        resizable: gboolean,
    );
    pub fn gtk_tree_view_column_set_sizing(
        tree_column: *mut GtkTreeViewColumn,
        type_: GtkTreeViewColumnSizing,
    );
    pub fn gtk_tree_view_column_set_sort_column_id(
        tree_column: *mut GtkTreeViewColumn,
        sort_column_id: c_int,
    );
    pub fn gtk_tree_view_column_set_sort_indicator(
        tree_column: *mut GtkTreeViewColumn,
        setting: gboolean,
    );
    pub fn gtk_tree_view_column_set_sort_order(
        tree_column: *mut GtkTreeViewColumn,
        order: GtkSortType,
    );
    pub fn gtk_tree_view_column_set_spacing(tree_column: *mut GtkTreeViewColumn, spacing: c_int);
    pub fn gtk_tree_view_column_set_title(
        tree_column: *mut GtkTreeViewColumn,
        title: *const c_char,
    );
    pub fn gtk_tree_view_column_set_visible(tree_column: *mut GtkTreeViewColumn, visible: gboolean);
    pub fn gtk_tree_view_column_set_widget(
        tree_column: *mut GtkTreeViewColumn,
        widget: *mut GtkWidget,
    );

    //=========================================================================
    // GtkUIManager
    //=========================================================================
    pub fn gtk_ui_manager_get_type() -> GType;
    pub fn gtk_ui_manager_new() -> *mut GtkUIManager;
    pub fn gtk_ui_manager_add_ui(
        manager: *mut GtkUIManager,
        merge_id: c_uint,
        path: *const c_char,
        name: *const c_char,
        action: *const c_char,
        type_: GtkUIManagerItemType,
        top: gboolean,
    );
    pub fn gtk_ui_manager_add_ui_from_file(
        manager: *mut GtkUIManager,
        filename: *const c_char,
        error: *mut *mut glib::GError,
    ) -> c_uint;
    pub fn gtk_ui_manager_add_ui_from_resource(
        manager: *mut GtkUIManager,
        resource_path: *const c_char,
        error: *mut *mut glib::GError,
    ) -> c_uint;
    pub fn gtk_ui_manager_add_ui_from_string(
        manager: *mut GtkUIManager,
        buffer: *const c_char,
        length: ssize_t,
        error: *mut *mut glib::GError,
    ) -> c_uint;
    pub fn gtk_ui_manager_ensure_update(manager: *mut GtkUIManager);
    pub fn gtk_ui_manager_get_accel_group(manager: *mut GtkUIManager) -> *mut GtkAccelGroup;
    pub fn gtk_ui_manager_get_action(
        manager: *mut GtkUIManager,
        path: *const c_char,
    ) -> *mut GtkAction;
    pub fn gtk_ui_manager_get_action_groups(manager: *mut GtkUIManager) -> *mut glib::GList;
    pub fn gtk_ui_manager_get_add_tearoffs(manager: *mut GtkUIManager) -> gboolean;
    pub fn gtk_ui_manager_get_toplevels(
        manager: *mut GtkUIManager,
        types: GtkUIManagerItemType,
    ) -> *mut glib::GSList;
    pub fn gtk_ui_manager_get_ui(manager: *mut GtkUIManager) -> *mut c_char;
    pub fn gtk_ui_manager_get_widget(
        manager: *mut GtkUIManager,
        path: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_ui_manager_insert_action_group(
        manager: *mut GtkUIManager,
        action_group: *mut GtkActionGroup,
        pos: c_int,
    );
    pub fn gtk_ui_manager_new_merge_id(manager: *mut GtkUIManager) -> c_uint;
    pub fn gtk_ui_manager_remove_action_group(
        manager: *mut GtkUIManager,
        action_group: *mut GtkActionGroup,
    );
    pub fn gtk_ui_manager_remove_ui(manager: *mut GtkUIManager, merge_id: c_uint);
    pub fn gtk_ui_manager_set_add_tearoffs(manager: *mut GtkUIManager, add_tearoffs: gboolean);

    //=========================================================================
    // GtkVBox
    //=========================================================================
    pub fn gtk_vbox_get_type() -> GType;
    pub fn gtk_vbox_new(homogeneous: gboolean, spacing: c_int) -> *mut GtkWidget;

    //=========================================================================
    // GtkVButtonBox
    //=========================================================================
    pub fn gtk_vbutton_box_get_type() -> GType;
    pub fn gtk_vbutton_box_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkVPaned
    //=========================================================================
    pub fn gtk_vpaned_get_type() -> GType;
    pub fn gtk_vpaned_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkVScale
    //=========================================================================
    pub fn gtk_vscale_get_type() -> GType;
    pub fn gtk_vscale_new(adjustment: *mut GtkAdjustment) -> *mut GtkWidget;
    pub fn gtk_vscale_new_with_range(
        min: c_double,
        max: c_double,
        step: c_double,
    ) -> *mut GtkWidget;

    //=========================================================================
    // GtkVScrollbar
    //=========================================================================
    pub fn gtk_vscrollbar_get_type() -> GType;
    pub fn gtk_vscrollbar_new(adjustment: *mut GtkAdjustment) -> *mut GtkWidget;

    //=========================================================================
    // GtkVSeparator
    //=========================================================================
    pub fn gtk_vseparator_get_type() -> GType;
    pub fn gtk_vseparator_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkViewport
    //=========================================================================
    pub fn gtk_viewport_get_type() -> GType;
    pub fn gtk_viewport_new(
        hadjustment: *mut GtkAdjustment,
        vadjustment: *mut GtkAdjustment,
    ) -> *mut GtkWidget;
    pub fn gtk_viewport_get_bin_window(viewport: *mut GtkViewport) -> *mut gdk::GdkWindow;
    pub fn gtk_viewport_get_hadjustment(viewport: *mut GtkViewport) -> *mut GtkAdjustment;
    pub fn gtk_viewport_get_shadow_type(viewport: *mut GtkViewport) -> GtkShadowType;
    pub fn gtk_viewport_get_vadjustment(viewport: *mut GtkViewport) -> *mut GtkAdjustment;
    pub fn gtk_viewport_get_view_window(viewport: *mut GtkViewport) -> *mut gdk::GdkWindow;
    pub fn gtk_viewport_set_hadjustment(viewport: *mut GtkViewport, adjustment: *mut GtkAdjustment);
    pub fn gtk_viewport_set_shadow_type(viewport: *mut GtkViewport, type_: GtkShadowType);
    pub fn gtk_viewport_set_vadjustment(viewport: *mut GtkViewport, adjustment: *mut GtkAdjustment);

    //=========================================================================
    // GtkVolumeButton
    //=========================================================================
    pub fn gtk_volume_button_get_type() -> GType;
    pub fn gtk_volume_button_new() -> *mut GtkWidget;

    //=========================================================================
    // GtkWidget
    //=========================================================================
    pub fn gtk_widget_get_type() -> GType;
    pub fn gtk_widget_new(type_: GType, first_property_name: *const c_char, ...) -> *mut GtkWidget;
    pub fn gtk_widget_get_default_direction() -> GtkTextDirection;
    pub fn gtk_widget_get_default_style() -> *mut GtkStyle;
    pub fn gtk_widget_pop_composite_child();
    pub fn gtk_widget_push_composite_child();
    pub fn gtk_widget_set_default_direction(dir: GtkTextDirection);
    pub fn gtk_widget_activate(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_add_accelerator(
        widget: *mut GtkWidget,
        accel_signal: *const c_char,
        accel_group: *mut GtkAccelGroup,
        accel_key: c_uint,
        accel_mods: gdk::GdkModifierType,
        accel_flags: GtkAccelFlags,
    );
    pub fn gtk_widget_add_device_events(
        widget: *mut GtkWidget,
        device: *mut gdk::GdkDevice,
        events: gdk::GdkEventMask,
    );
    pub fn gtk_widget_add_events(widget: *mut GtkWidget, events: c_int);
    pub fn gtk_widget_add_mnemonic_label(widget: *mut GtkWidget, label: *mut GtkWidget);
    pub fn gtk_widget_add_tick_callback(
        widget: *mut GtkWidget,
        callback: GtkTickCallback,
        user_data: gpointer,
        notify: glib::GDestroyNotify,
    ) -> c_uint;
    pub fn gtk_widget_can_activate_accel(widget: *mut GtkWidget, signal_id: c_uint) -> gboolean;
    pub fn gtk_widget_child_focus(widget: *mut GtkWidget, direction: GtkDirectionType) -> gboolean;
    pub fn gtk_widget_child_notify(widget: *mut GtkWidget, child_property: *const c_char);
    pub fn gtk_widget_class_path(
        widget: *mut GtkWidget,
        path_length: *mut c_uint,
        path: *mut *mut c_char,
        path_reversed: *mut *mut c_char,
    );
    pub fn gtk_widget_compute_expand(
        widget: *mut GtkWidget,
        orientation: GtkOrientation,
    ) -> gboolean;
    pub fn gtk_widget_create_pango_context(widget: *mut GtkWidget) -> *mut pango::PangoContext;
    pub fn gtk_widget_create_pango_layout(
        widget: *mut GtkWidget,
        text: *const c_char,
    ) -> *mut pango::PangoLayout;
    pub fn gtk_widget_destroy(widget: *mut GtkWidget);
    pub fn gtk_widget_destroyed(widget: *mut GtkWidget, widget_pointer: *mut *mut GtkWidget);
    pub fn gtk_widget_device_is_shadowed(
        widget: *mut GtkWidget,
        device: *mut gdk::GdkDevice,
    ) -> gboolean;
    pub fn gtk_drag_begin(
        widget: *mut GtkWidget,
        targets: *mut GtkTargetList,
        actions: gdk::GdkDragAction,
        button: c_int,
        event: *mut gdk::GdkEvent,
    ) -> *mut gdk::GdkDragContext;
    pub fn gtk_drag_begin_with_coordinates(
        widget: *mut GtkWidget,
        targets: *mut GtkTargetList,
        actions: gdk::GdkDragAction,
        button: c_int,
        event: *mut gdk::GdkEvent,
        x: c_int,
        y: c_int,
    ) -> *mut gdk::GdkDragContext;
    pub fn gtk_drag_check_threshold(
        widget: *mut GtkWidget,
        start_x: c_int,
        start_y: c_int,
        current_x: c_int,
        current_y: c_int,
    ) -> gboolean;
    pub fn gtk_drag_dest_add_image_targets(widget: *mut GtkWidget);
    pub fn gtk_drag_dest_add_text_targets(widget: *mut GtkWidget);
    pub fn gtk_drag_dest_add_uri_targets(widget: *mut GtkWidget);
    pub fn gtk_drag_dest_find_target(
        widget: *mut GtkWidget,
        context: *mut gdk::GdkDragContext,
        target_list: *mut GtkTargetList,
    ) -> gdk::GdkAtom;
    pub fn gtk_drag_dest_get_target_list(widget: *mut GtkWidget) -> *mut GtkTargetList;
    pub fn gtk_drag_dest_get_track_motion(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_drag_dest_set(
        widget: *mut GtkWidget,
        flags: GtkDestDefaults,
        targets: *const GtkTargetEntry,
        n_targets: c_int,
        actions: gdk::GdkDragAction,
    );
    pub fn gtk_drag_dest_set_proxy(
        widget: *mut GtkWidget,
        proxy_window: *mut gdk::GdkWindow,
        protocol: gdk::GdkDragProtocol,
        use_coordinates: gboolean,
    );
    pub fn gtk_drag_dest_set_target_list(widget: *mut GtkWidget, target_list: *mut GtkTargetList);
    pub fn gtk_drag_dest_set_track_motion(widget: *mut GtkWidget, track_motion: gboolean);
    pub fn gtk_drag_dest_unset(widget: *mut GtkWidget);
    pub fn gtk_drag_get_data(
        widget: *mut GtkWidget,
        context: *mut gdk::GdkDragContext,
        target: gdk::GdkAtom,
        time_: u32,
    );
    pub fn gtk_drag_highlight(widget: *mut GtkWidget);
    pub fn gtk_drag_source_add_image_targets(widget: *mut GtkWidget);
    pub fn gtk_drag_source_add_text_targets(widget: *mut GtkWidget);
    pub fn gtk_drag_source_add_uri_targets(widget: *mut GtkWidget);
    pub fn gtk_drag_source_get_target_list(widget: *mut GtkWidget) -> *mut GtkTargetList;
    pub fn gtk_drag_source_set(
        widget: *mut GtkWidget,
        start_button_mask: gdk::GdkModifierType,
        targets: *const GtkTargetEntry,
        n_targets: c_int,
        actions: gdk::GdkDragAction,
    );
    pub fn gtk_drag_source_set_icon_gicon(widget: *mut GtkWidget, icon: *mut gio::GIcon);
    pub fn gtk_drag_source_set_icon_name(widget: *mut GtkWidget, icon_name: *const c_char);
    pub fn gtk_drag_source_set_icon_pixbuf(
        widget: *mut GtkWidget,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
    );
    pub fn gtk_drag_source_set_icon_stock(widget: *mut GtkWidget, stock_id: *const c_char);
    pub fn gtk_drag_source_set_target_list(widget: *mut GtkWidget, target_list: *mut GtkTargetList);
    pub fn gtk_drag_source_unset(widget: *mut GtkWidget);
    pub fn gtk_drag_unhighlight(widget: *mut GtkWidget);
    pub fn gtk_widget_draw(widget: *mut GtkWidget, cr: *mut cairo::cairo_t);
    pub fn gtk_widget_ensure_style(widget: *mut GtkWidget);
    pub fn gtk_widget_error_bell(widget: *mut GtkWidget);
    pub fn gtk_widget_event(widget: *mut GtkWidget, event: *mut gdk::GdkEvent) -> gboolean;
    pub fn gtk_widget_freeze_child_notify(widget: *mut GtkWidget);
    pub fn gtk_widget_get_accessible(widget: *mut GtkWidget) -> *mut atk::AtkObject;
    pub fn gtk_widget_get_action_group(
        widget: *mut GtkWidget,
        prefix: *const c_char,
    ) -> *mut gio::GActionGroup;
    pub fn gtk_widget_get_allocated_baseline(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_allocated_height(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_allocated_size(
        widget: *mut GtkWidget,
        allocation: *mut GtkAllocation,
        baseline: *mut c_int,
    );
    pub fn gtk_widget_get_allocated_width(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_allocation(widget: *mut GtkWidget, allocation: *mut GtkAllocation);
    pub fn gtk_widget_get_ancestor(widget: *mut GtkWidget, widget_type: GType) -> *mut GtkWidget;
    pub fn gtk_widget_get_app_paintable(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_can_default(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_can_focus(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_child_requisition(
        widget: *mut GtkWidget,
        requisition: *mut GtkRequisition,
    );
    pub fn gtk_widget_get_child_visible(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_clip(widget: *mut GtkWidget, clip: *mut GtkAllocation);
    pub fn gtk_widget_get_clipboard(
        widget: *mut GtkWidget,
        selection: gdk::GdkAtom,
    ) -> *mut GtkClipboard;
    pub fn gtk_widget_get_composite_name(widget: *mut GtkWidget) -> *mut c_char;
    pub fn gtk_widget_get_device_enabled(
        widget: *mut GtkWidget,
        device: *mut gdk::GdkDevice,
    ) -> gboolean;
    pub fn gtk_widget_get_device_events(
        widget: *mut GtkWidget,
        device: *mut gdk::GdkDevice,
    ) -> gdk::GdkEventMask;
    pub fn gtk_widget_get_direction(widget: *mut GtkWidget) -> GtkTextDirection;
    pub fn gtk_widget_get_display(widget: *mut GtkWidget) -> *mut gdk::GdkDisplay;
    pub fn gtk_widget_get_double_buffered(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_events(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_focus_on_click(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_font_map(widget: *mut GtkWidget) -> *mut pango::PangoFontMap;
    pub fn gtk_widget_get_font_options(
        widget: *mut GtkWidget,
    ) -> *const cairo::cairo_font_options_t;
    pub fn gtk_widget_get_frame_clock(widget: *mut GtkWidget) -> *mut gdk::GdkFrameClock;
    pub fn gtk_widget_get_halign(widget: *mut GtkWidget) -> GtkAlign;
    pub fn gtk_widget_get_has_tooltip(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_has_window(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_hexpand(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_hexpand_set(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_mapped(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_margin_bottom(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_margin_end(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_margin_left(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_margin_right(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_margin_start(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_margin_top(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_modifier_mask(
        widget: *mut GtkWidget,
        intent: gdk::GdkModifierIntent,
    ) -> gdk::GdkModifierType;
    pub fn gtk_widget_get_modifier_style(widget: *mut GtkWidget) -> *mut GtkRcStyle;
    pub fn gtk_widget_get_name(widget: *mut GtkWidget) -> *const c_char;
    pub fn gtk_widget_get_no_show_all(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_opacity(widget: *mut GtkWidget) -> c_double;
    pub fn gtk_widget_get_pango_context(widget: *mut GtkWidget) -> *mut pango::PangoContext;
    pub fn gtk_widget_get_parent(widget: *mut GtkWidget) -> *mut GtkWidget;
    pub fn gtk_widget_get_parent_window(widget: *mut GtkWidget) -> *mut gdk::GdkWindow;
    pub fn gtk_widget_get_path(widget: *mut GtkWidget) -> *mut GtkWidgetPath;
    pub fn gtk_widget_get_pointer(widget: *mut GtkWidget, x: *mut c_int, y: *mut c_int);
    pub fn gtk_widget_get_preferred_height(
        widget: *mut GtkWidget,
        minimum_height: *mut c_int,
        natural_height: *mut c_int,
    );
    pub fn gtk_widget_get_preferred_height_and_baseline_for_width(
        widget: *mut GtkWidget,
        width: c_int,
        minimum_height: *mut c_int,
        natural_height: *mut c_int,
        minimum_baseline: *mut c_int,
        natural_baseline: *mut c_int,
    );
    pub fn gtk_widget_get_preferred_height_for_width(
        widget: *mut GtkWidget,
        width: c_int,
        minimum_height: *mut c_int,
        natural_height: *mut c_int,
    );
    pub fn gtk_widget_get_preferred_size(
        widget: *mut GtkWidget,
        minimum_size: *mut GtkRequisition,
        natural_size: *mut GtkRequisition,
    );
    pub fn gtk_widget_get_preferred_width(
        widget: *mut GtkWidget,
        minimum_width: *mut c_int,
        natural_width: *mut c_int,
    );
    pub fn gtk_widget_get_preferred_width_for_height(
        widget: *mut GtkWidget,
        height: c_int,
        minimum_width: *mut c_int,
        natural_width: *mut c_int,
    );
    pub fn gtk_widget_get_realized(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_receives_default(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_request_mode(widget: *mut GtkWidget) -> GtkSizeRequestMode;
    pub fn gtk_widget_get_requisition(widget: *mut GtkWidget, requisition: *mut GtkRequisition);
    pub fn gtk_widget_get_root_window(widget: *mut GtkWidget) -> *mut gdk::GdkWindow;
    pub fn gtk_widget_get_scale_factor(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_screen(widget: *mut GtkWidget) -> *mut gdk::GdkScreen;
    pub fn gtk_widget_get_sensitive(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_settings(widget: *mut GtkWidget) -> *mut GtkSettings;
    pub fn gtk_widget_get_size_request(
        widget: *mut GtkWidget,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_widget_get_state(widget: *mut GtkWidget) -> GtkStateType;
    pub fn gtk_widget_get_state_flags(widget: *mut GtkWidget) -> GtkStateFlags;
    pub fn gtk_widget_get_style(widget: *mut GtkWidget) -> *mut GtkStyle;
    pub fn gtk_widget_get_style_context(widget: *mut GtkWidget) -> *mut GtkStyleContext;
    pub fn gtk_widget_get_support_multidevice(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_template_child(
        widget: *mut GtkWidget,
        widget_type: GType,
        name: *const c_char,
    ) -> *mut gobject::GObject;
    pub fn gtk_widget_get_tooltip_markup(widget: *mut GtkWidget) -> *mut c_char;
    pub fn gtk_widget_get_tooltip_text(widget: *mut GtkWidget) -> *mut c_char;
    pub fn gtk_widget_get_tooltip_window(widget: *mut GtkWidget) -> *mut GtkWindow;
    pub fn gtk_widget_get_toplevel(widget: *mut GtkWidget) -> *mut GtkWidget;
    pub fn gtk_widget_get_valign(widget: *mut GtkWidget) -> GtkAlign;
    pub fn gtk_widget_get_valign_with_baseline(widget: *mut GtkWidget) -> GtkAlign;
    pub fn gtk_widget_get_vexpand(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_vexpand_set(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_visible(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_visual(widget: *mut GtkWidget) -> *mut gdk::GdkVisual;
    pub fn gtk_widget_get_window(widget: *mut GtkWidget) -> *mut gdk::GdkWindow;
    pub fn gtk_grab_add(widget: *mut GtkWidget);
    pub fn gtk_widget_grab_default(widget: *mut GtkWidget);
    pub fn gtk_widget_grab_focus(widget: *mut GtkWidget);
    pub fn gtk_grab_remove(widget: *mut GtkWidget);
    pub fn gtk_widget_has_default(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_has_focus(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_has_grab(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_has_rc_style(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_has_screen(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_has_visible_focus(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_hide(widget: *mut GtkWidget);
    pub fn gtk_widget_hide_on_delete(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_in_destruction(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_init_template(widget: *mut GtkWidget);
    pub fn gtk_widget_input_shape_combine_region(
        widget: *mut GtkWidget,
        region: *mut cairo::cairo_region_t,
    );
    pub fn gtk_widget_insert_action_group(
        widget: *mut GtkWidget,
        name: *const c_char,
        group: *mut gio::GActionGroup,
    );
    pub fn gtk_widget_intersect(
        widget: *mut GtkWidget,
        area: *const gdk::GdkRectangle,
        intersection: *mut gdk::GdkRectangle,
    ) -> gboolean;
    pub fn gtk_widget_is_ancestor(widget: *mut GtkWidget, ancestor: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_is_composited(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_is_drawable(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_is_focus(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_is_sensitive(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_is_toplevel(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_is_visible(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_keynav_failed(
        widget: *mut GtkWidget,
        direction: GtkDirectionType,
    ) -> gboolean;
    pub fn gtk_widget_list_accel_closures(widget: *mut GtkWidget) -> *mut glib::GList;
    pub fn gtk_widget_list_action_prefixes(widget: *mut GtkWidget) -> *mut *const c_char;
    pub fn gtk_widget_list_mnemonic_labels(widget: *mut GtkWidget) -> *mut glib::GList;
    pub fn gtk_widget_map(widget: *mut GtkWidget);
    pub fn gtk_widget_mnemonic_activate(
        widget: *mut GtkWidget,
        group_cycling: gboolean,
    ) -> gboolean;
    pub fn gtk_widget_modify_base(
        widget: *mut GtkWidget,
        state: GtkStateType,
        color: *const gdk::GdkColor,
    );
    pub fn gtk_widget_modify_bg(
        widget: *mut GtkWidget,
        state: GtkStateType,
        color: *const gdk::GdkColor,
    );
    pub fn gtk_widget_modify_cursor(
        widget: *mut GtkWidget,
        primary: *const gdk::GdkColor,
        secondary: *const gdk::GdkColor,
    );
    pub fn gtk_widget_modify_fg(
        widget: *mut GtkWidget,
        state: GtkStateType,
        color: *const gdk::GdkColor,
    );
    pub fn gtk_widget_modify_font(
        widget: *mut GtkWidget,
        font_desc: *mut pango::PangoFontDescription,
    );
    pub fn gtk_widget_modify_style(widget: *mut GtkWidget, style: *mut GtkRcStyle);
    pub fn gtk_widget_modify_text(
        widget: *mut GtkWidget,
        state: GtkStateType,
        color: *const gdk::GdkColor,
    );
    pub fn gtk_widget_override_background_color(
        widget: *mut GtkWidget,
        state: GtkStateFlags,
        color: *const gdk::GdkRGBA,
    );
    pub fn gtk_widget_override_color(
        widget: *mut GtkWidget,
        state: GtkStateFlags,
        color: *const gdk::GdkRGBA,
    );
    pub fn gtk_widget_override_cursor(
        widget: *mut GtkWidget,
        cursor: *const gdk::GdkRGBA,
        secondary_cursor: *const gdk::GdkRGBA,
    );
    pub fn gtk_widget_override_font(
        widget: *mut GtkWidget,
        font_desc: *const pango::PangoFontDescription,
    );
    pub fn gtk_widget_override_symbolic_color(
        widget: *mut GtkWidget,
        name: *const c_char,
        color: *const gdk::GdkRGBA,
    );
    pub fn gtk_widget_path(
        widget: *mut GtkWidget,
        path_length: *mut c_uint,
        path: *mut *mut c_char,
        path_reversed: *mut *mut c_char,
    );
    pub fn gtk_widget_queue_allocate(widget: *mut GtkWidget);
    pub fn gtk_widget_queue_compute_expand(widget: *mut GtkWidget);
    pub fn gtk_widget_queue_draw(widget: *mut GtkWidget);
    pub fn gtk_widget_queue_draw_area(
        widget: *mut GtkWidget,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_widget_queue_draw_region(
        widget: *mut GtkWidget,
        region: *const cairo::cairo_region_t,
    );
    pub fn gtk_widget_queue_resize(widget: *mut GtkWidget);
    pub fn gtk_widget_queue_resize_no_redraw(widget: *mut GtkWidget);
    pub fn gtk_widget_realize(widget: *mut GtkWidget);
    pub fn gtk_widget_region_intersect(
        widget: *mut GtkWidget,
        region: *const cairo::cairo_region_t,
    ) -> *mut cairo::cairo_region_t;
    pub fn gtk_widget_register_window(widget: *mut GtkWidget, window: *mut gdk::GdkWindow);
    pub fn gtk_widget_remove_accelerator(
        widget: *mut GtkWidget,
        accel_group: *mut GtkAccelGroup,
        accel_key: c_uint,
        accel_mods: gdk::GdkModifierType,
    ) -> gboolean;
    pub fn gtk_widget_remove_mnemonic_label(widget: *mut GtkWidget, label: *mut GtkWidget);
    pub fn gtk_widget_remove_tick_callback(widget: *mut GtkWidget, id: c_uint);
    pub fn gtk_widget_render_icon(
        widget: *mut GtkWidget,
        stock_id: *const c_char,
        size: GtkIconSize,
        detail: *const c_char,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_widget_render_icon_pixbuf(
        widget: *mut GtkWidget,
        stock_id: *const c_char,
        size: GtkIconSize,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_widget_reparent(widget: *mut GtkWidget, new_parent: *mut GtkWidget);
    pub fn gtk_widget_reset_rc_styles(widget: *mut GtkWidget);
    pub fn gtk_widget_reset_style(widget: *mut GtkWidget);
    pub fn gtk_widget_send_expose(widget: *mut GtkWidget, event: *mut gdk::GdkEvent) -> c_int;
    pub fn gtk_widget_send_focus_change(
        widget: *mut GtkWidget,
        event: *mut gdk::GdkEvent,
    ) -> gboolean;
    pub fn gtk_widget_set_accel_path(
        widget: *mut GtkWidget,
        accel_path: *const c_char,
        accel_group: *mut GtkAccelGroup,
    );
    pub fn gtk_widget_set_allocation(widget: *mut GtkWidget, allocation: *const GtkAllocation);
    pub fn gtk_widget_set_app_paintable(widget: *mut GtkWidget, app_paintable: gboolean);
    pub fn gtk_widget_set_can_default(widget: *mut GtkWidget, can_default: gboolean);
    pub fn gtk_widget_set_can_focus(widget: *mut GtkWidget, can_focus: gboolean);
    pub fn gtk_widget_set_child_visible(widget: *mut GtkWidget, is_visible: gboolean);
    pub fn gtk_widget_set_clip(widget: *mut GtkWidget, clip: *const GtkAllocation);
    pub fn gtk_widget_set_composite_name(widget: *mut GtkWidget, name: *const c_char);
    pub fn gtk_widget_set_device_enabled(
        widget: *mut GtkWidget,
        device: *mut gdk::GdkDevice,
        enabled: gboolean,
    );
    pub fn gtk_widget_set_device_events(
        widget: *mut GtkWidget,
        device: *mut gdk::GdkDevice,
        events: gdk::GdkEventMask,
    );
    pub fn gtk_widget_set_direction(widget: *mut GtkWidget, dir: GtkTextDirection);
    pub fn gtk_widget_set_double_buffered(widget: *mut GtkWidget, double_buffered: gboolean);
    pub fn gtk_widget_set_events(widget: *mut GtkWidget, events: c_int);
    pub fn gtk_widget_set_focus_on_click(widget: *mut GtkWidget, focus_on_click: gboolean);
    pub fn gtk_widget_set_font_map(widget: *mut GtkWidget, font_map: *mut pango::PangoFontMap);
    pub fn gtk_widget_set_font_options(
        widget: *mut GtkWidget,
        options: *const cairo::cairo_font_options_t,
    );
    pub fn gtk_widget_set_halign(widget: *mut GtkWidget, align: GtkAlign);
    pub fn gtk_widget_set_has_tooltip(widget: *mut GtkWidget, has_tooltip: gboolean);
    pub fn gtk_widget_set_has_window(widget: *mut GtkWidget, has_window: gboolean);
    pub fn gtk_widget_set_hexpand(widget: *mut GtkWidget, expand: gboolean);
    pub fn gtk_widget_set_hexpand_set(widget: *mut GtkWidget, set: gboolean);
    pub fn gtk_widget_set_mapped(widget: *mut GtkWidget, mapped: gboolean);
    pub fn gtk_widget_set_margin_bottom(widget: *mut GtkWidget, margin: c_int);
    pub fn gtk_widget_set_margin_end(widget: *mut GtkWidget, margin: c_int);
    pub fn gtk_widget_set_margin_left(widget: *mut GtkWidget, margin: c_int);
    pub fn gtk_widget_set_margin_right(widget: *mut GtkWidget, margin: c_int);
    pub fn gtk_widget_set_margin_start(widget: *mut GtkWidget, margin: c_int);
    pub fn gtk_widget_set_margin_top(widget: *mut GtkWidget, margin: c_int);
    pub fn gtk_widget_set_name(widget: *mut GtkWidget, name: *const c_char);
    pub fn gtk_widget_set_no_show_all(widget: *mut GtkWidget, no_show_all: gboolean);
    pub fn gtk_widget_set_opacity(widget: *mut GtkWidget, opacity: c_double);
    pub fn gtk_widget_set_parent(widget: *mut GtkWidget, parent: *mut GtkWidget);
    pub fn gtk_widget_set_parent_window(widget: *mut GtkWidget, parent_window: *mut gdk::GdkWindow);
    pub fn gtk_widget_set_realized(widget: *mut GtkWidget, realized: gboolean);
    pub fn gtk_widget_set_receives_default(widget: *mut GtkWidget, receives_default: gboolean);
    pub fn gtk_widget_set_redraw_on_allocate(widget: *mut GtkWidget, redraw_on_allocate: gboolean);
    pub fn gtk_widget_set_sensitive(widget: *mut GtkWidget, sensitive: gboolean);
    pub fn gtk_widget_set_size_request(widget: *mut GtkWidget, width: c_int, height: c_int);
    pub fn gtk_widget_set_state(widget: *mut GtkWidget, state: GtkStateType);
    pub fn gtk_widget_set_state_flags(
        widget: *mut GtkWidget,
        flags: GtkStateFlags,
        clear: gboolean,
    );
    pub fn gtk_widget_set_style(widget: *mut GtkWidget, style: *mut GtkStyle);
    pub fn gtk_widget_set_support_multidevice(
        widget: *mut GtkWidget,
        support_multidevice: gboolean,
    );
    pub fn gtk_widget_set_tooltip_markup(widget: *mut GtkWidget, markup: *const c_char);
    pub fn gtk_widget_set_tooltip_text(widget: *mut GtkWidget, text: *const c_char);
    pub fn gtk_widget_set_tooltip_window(widget: *mut GtkWidget, custom_window: *mut GtkWindow);
    pub fn gtk_widget_set_valign(widget: *mut GtkWidget, align: GtkAlign);
    pub fn gtk_widget_set_vexpand(widget: *mut GtkWidget, expand: gboolean);
    pub fn gtk_widget_set_vexpand_set(widget: *mut GtkWidget, set: gboolean);
    pub fn gtk_widget_set_visible(widget: *mut GtkWidget, visible: gboolean);
    pub fn gtk_widget_set_visual(widget: *mut GtkWidget, visual: *mut gdk::GdkVisual);
    pub fn gtk_widget_set_window(widget: *mut GtkWidget, window: *mut gdk::GdkWindow);
    pub fn gtk_widget_shape_combine_region(
        widget: *mut GtkWidget,
        region: *mut cairo::cairo_region_t,
    );
    pub fn gtk_widget_show(widget: *mut GtkWidget);
    pub fn gtk_widget_show_all(widget: *mut GtkWidget);
    pub fn gtk_widget_show_now(widget: *mut GtkWidget);
    pub fn gtk_widget_size_allocate(widget: *mut GtkWidget, allocation: *mut GtkAllocation);
    pub fn gtk_widget_size_allocate_with_baseline(
        widget: *mut GtkWidget,
        allocation: *mut GtkAllocation,
        baseline: c_int,
    );
    pub fn gtk_widget_size_request(widget: *mut GtkWidget, requisition: *mut GtkRequisition);
    pub fn gtk_widget_style_attach(widget: *mut GtkWidget);
    pub fn gtk_widget_style_get(widget: *mut GtkWidget, first_property_name: *const c_char, ...);
    pub fn gtk_widget_style_get_property(
        widget: *mut GtkWidget,
        property_name: *const c_char,
        value: *mut gobject::GValue,
    );
    //pub fn gtk_widget_style_get_valist(widget: *mut GtkWidget, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
    pub fn gtk_widget_thaw_child_notify(widget: *mut GtkWidget);
    pub fn gtk_widget_translate_coordinates(
        src_widget: *mut GtkWidget,
        dest_widget: *mut GtkWidget,
        src_x: c_int,
        src_y: c_int,
        dest_x: *mut c_int,
        dest_y: *mut c_int,
    ) -> gboolean;
    pub fn gtk_widget_trigger_tooltip_query(widget: *mut GtkWidget);
    pub fn gtk_widget_unmap(widget: *mut GtkWidget);
    pub fn gtk_widget_unparent(widget: *mut GtkWidget);
    pub fn gtk_widget_unrealize(widget: *mut GtkWidget);
    pub fn gtk_widget_unregister_window(widget: *mut GtkWidget, window: *mut gdk::GdkWindow);
    pub fn gtk_widget_unset_state_flags(widget: *mut GtkWidget, flags: GtkStateFlags);

    //=========================================================================
    // GtkWidgetAccessible
    //=========================================================================
    pub fn gtk_widget_accessible_get_type() -> GType;

    //=========================================================================
    // GtkWindow
    //=========================================================================
    pub fn gtk_window_get_type() -> GType;
    pub fn gtk_window_new(type_: GtkWindowType) -> *mut GtkWidget;
    pub fn gtk_window_get_default_icon_list() -> *mut glib::GList;
    pub fn gtk_window_get_default_icon_name() -> *const c_char;
    pub fn gtk_window_list_toplevels() -> *mut glib::GList;
    pub fn gtk_window_set_auto_startup_notification(setting: gboolean);
    pub fn gtk_window_set_default_icon(icon: *mut gdk_pixbuf::GdkPixbuf);
    pub fn gtk_window_set_default_icon_from_file(
        filename: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_window_set_default_icon_list(list: *mut glib::GList);
    pub fn gtk_window_set_default_icon_name(name: *const c_char);
    pub fn gtk_window_set_interactive_debugging(enable: gboolean);
    pub fn gtk_window_activate_default(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_activate_focus(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_activate_key(
        window: *mut GtkWindow,
        event: *mut gdk::GdkEventKey,
    ) -> gboolean;
    pub fn gtk_window_add_accel_group(window: *mut GtkWindow, accel_group: *mut GtkAccelGroup);
    pub fn gtk_window_add_mnemonic(window: *mut GtkWindow, keyval: c_uint, target: *mut GtkWidget);
    pub fn gtk_window_begin_move_drag(
        window: *mut GtkWindow,
        button: c_int,
        root_x: c_int,
        root_y: c_int,
        timestamp: u32,
    );
    pub fn gtk_window_begin_resize_drag(
        window: *mut GtkWindow,
        edge: gdk::GdkWindowEdge,
        button: c_int,
        root_x: c_int,
        root_y: c_int,
        timestamp: u32,
    );
    pub fn gtk_window_close(window: *mut GtkWindow);
    pub fn gtk_window_deiconify(window: *mut GtkWindow);
    pub fn gtk_window_fullscreen(window: *mut GtkWindow);
    pub fn gtk_window_fullscreen_on_monitor(
        window: *mut GtkWindow,
        screen: *mut gdk::GdkScreen,
        monitor: c_int,
    );
    pub fn gtk_window_get_accept_focus(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_application(window: *mut GtkWindow) -> *mut GtkApplication;
    pub fn gtk_window_get_attached_to(window: *mut GtkWindow) -> *mut GtkWidget;
    pub fn gtk_window_get_decorated(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_default_size(
        window: *mut GtkWindow,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_window_get_default_widget(window: *mut GtkWindow) -> *mut GtkWidget;
    pub fn gtk_window_get_deletable(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_destroy_with_parent(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_focus(window: *mut GtkWindow) -> *mut GtkWidget;
    pub fn gtk_window_get_focus_on_map(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_focus_visible(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_gravity(window: *mut GtkWindow) -> gdk::GdkGravity;
    pub fn gtk_window_get_group(window: *mut GtkWindow) -> *mut GtkWindowGroup;
    pub fn gtk_window_get_has_resize_grip(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_hide_titlebar_when_maximized(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_icon(window: *mut GtkWindow) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_window_get_icon_list(window: *mut GtkWindow) -> *mut glib::GList;
    pub fn gtk_window_get_icon_name(window: *mut GtkWindow) -> *const c_char;
    pub fn gtk_window_get_mnemonic_modifier(window: *mut GtkWindow) -> gdk::GdkModifierType;
    pub fn gtk_window_get_mnemonics_visible(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_modal(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_opacity(window: *mut GtkWindow) -> c_double;
    pub fn gtk_window_get_position(window: *mut GtkWindow, root_x: *mut c_int, root_y: *mut c_int);
    pub fn gtk_window_get_resizable(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_resize_grip_area(
        window: *mut GtkWindow,
        rect: *mut gdk::GdkRectangle,
    ) -> gboolean;
    pub fn gtk_window_get_role(window: *mut GtkWindow) -> *const c_char;
    pub fn gtk_window_get_screen(window: *mut GtkWindow) -> *mut gdk::GdkScreen;
    pub fn gtk_window_get_size(window: *mut GtkWindow, width: *mut c_int, height: *mut c_int);
    pub fn gtk_window_get_skip_pager_hint(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_skip_taskbar_hint(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_title(window: *mut GtkWindow) -> *const c_char;
    pub fn gtk_window_get_titlebar(window: *mut GtkWindow) -> *mut GtkWidget;
    pub fn gtk_window_get_transient_for(window: *mut GtkWindow) -> *mut GtkWindow;
    pub fn gtk_window_get_type_hint(window: *mut GtkWindow) -> gdk::GdkWindowTypeHint;
    pub fn gtk_window_get_urgency_hint(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_window_type(window: *mut GtkWindow) -> GtkWindowType;
    pub fn gtk_window_has_group(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_has_toplevel_focus(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_iconify(window: *mut GtkWindow);
    pub fn gtk_window_is_active(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_is_maximized(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_maximize(window: *mut GtkWindow);
    pub fn gtk_window_mnemonic_activate(
        window: *mut GtkWindow,
        keyval: c_uint,
        modifier: gdk::GdkModifierType,
    ) -> gboolean;
    pub fn gtk_window_move(window: *mut GtkWindow, x: c_int, y: c_int);
    pub fn gtk_window_parse_geometry(window: *mut GtkWindow, geometry: *const c_char) -> gboolean;
    pub fn gtk_window_present(window: *mut GtkWindow);
    pub fn gtk_window_present_with_time(window: *mut GtkWindow, timestamp: u32);
    pub fn gtk_window_propagate_key_event(
        window: *mut GtkWindow,
        event: *mut gdk::GdkEventKey,
    ) -> gboolean;
    pub fn gtk_window_remove_accel_group(window: *mut GtkWindow, accel_group: *mut GtkAccelGroup);
    pub fn gtk_window_remove_mnemonic(
        window: *mut GtkWindow,
        keyval: c_uint,
        target: *mut GtkWidget,
    );
    pub fn gtk_window_reshow_with_initial_size(window: *mut GtkWindow);
    pub fn gtk_window_resize(window: *mut GtkWindow, width: c_int, height: c_int);
    pub fn gtk_window_resize_grip_is_visible(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_resize_to_geometry(window: *mut GtkWindow, width: c_int, height: c_int);
    pub fn gtk_window_set_accept_focus(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_application(window: *mut GtkWindow, application: *mut GtkApplication);
    pub fn gtk_window_set_attached_to(window: *mut GtkWindow, attach_widget: *mut GtkWidget);
    pub fn gtk_window_set_decorated(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_default(window: *mut GtkWindow, default_widget: *mut GtkWidget);
    pub fn gtk_window_set_default_geometry(window: *mut GtkWindow, width: c_int, height: c_int);
    pub fn gtk_window_set_default_size(window: *mut GtkWindow, width: c_int, height: c_int);
    pub fn gtk_window_set_deletable(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_destroy_with_parent(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_focus(window: *mut GtkWindow, focus: *mut GtkWidget);
    pub fn gtk_window_set_focus_on_map(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_focus_visible(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_geometry_hints(
        window: *mut GtkWindow,
        geometry_widget: *mut GtkWidget,
        geometry: *mut gdk::GdkGeometry,
        geom_mask: gdk::GdkWindowHints,
    );
    pub fn gtk_window_set_gravity(window: *mut GtkWindow, gravity: gdk::GdkGravity);
    pub fn gtk_window_set_has_resize_grip(window: *mut GtkWindow, value: gboolean);
    pub fn gtk_window_set_has_user_ref_count(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_hide_titlebar_when_maximized(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_icon(window: *mut GtkWindow, icon: *mut gdk_pixbuf::GdkPixbuf);
    pub fn gtk_window_set_icon_from_file(
        window: *mut GtkWindow,
        filename: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_window_set_icon_list(window: *mut GtkWindow, list: *mut glib::GList);
    pub fn gtk_window_set_icon_name(window: *mut GtkWindow, name: *const c_char);
    pub fn gtk_window_set_keep_above(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_keep_below(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_mnemonic_modifier(window: *mut GtkWindow, modifier: gdk::GdkModifierType);
    pub fn gtk_window_set_mnemonics_visible(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_modal(window: *mut GtkWindow, modal: gboolean);
    pub fn gtk_window_set_opacity(window: *mut GtkWindow, opacity: c_double);
    pub fn gtk_window_set_position(window: *mut GtkWindow, position: GtkWindowPosition);
    pub fn gtk_window_set_resizable(window: *mut GtkWindow, resizable: gboolean);
    pub fn gtk_window_set_role(window: *mut GtkWindow, role: *const c_char);
    pub fn gtk_window_set_screen(window: *mut GtkWindow, screen: *mut gdk::GdkScreen);
    pub fn gtk_window_set_skip_pager_hint(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_skip_taskbar_hint(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_startup_id(window: *mut GtkWindow, startup_id: *const c_char);
    pub fn gtk_window_set_title(window: *mut GtkWindow, title: *const c_char);
    pub fn gtk_window_set_titlebar(window: *mut GtkWindow, titlebar: *mut GtkWidget);
    pub fn gtk_window_set_transient_for(window: *mut GtkWindow, parent: *mut GtkWindow);
    pub fn gtk_window_set_type_hint(window: *mut GtkWindow, hint: gdk::GdkWindowTypeHint);
    pub fn gtk_window_set_urgency_hint(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_wmclass(
        window: *mut GtkWindow,
        wmclass_name: *const c_char,
        wmclass_class: *const c_char,
    );
    pub fn gtk_window_stick(window: *mut GtkWindow);
    pub fn gtk_window_unfullscreen(window: *mut GtkWindow);
    pub fn gtk_window_unmaximize(window: *mut GtkWindow);
    pub fn gtk_window_unstick(window: *mut GtkWindow);

    //=========================================================================
    // GtkWindowAccessible
    //=========================================================================
    pub fn gtk_window_accessible_get_type() -> GType;

    //=========================================================================
    // GtkWindowGroup
    //=========================================================================
    pub fn gtk_window_group_get_type() -> GType;
    pub fn gtk_window_group_new() -> *mut GtkWindowGroup;
    pub fn gtk_window_group_add_window(window_group: *mut GtkWindowGroup, window: *mut GtkWindow);
    pub fn gtk_window_group_get_current_device_grab(
        window_group: *mut GtkWindowGroup,
        device: *mut gdk::GdkDevice,
    ) -> *mut GtkWidget;
    pub fn gtk_window_group_get_current_grab(window_group: *mut GtkWindowGroup) -> *mut GtkWidget;
    pub fn gtk_window_group_list_windows(window_group: *mut GtkWindowGroup) -> *mut glib::GList;
    pub fn gtk_window_group_remove_window(
        window_group: *mut GtkWindowGroup,
        window: *mut GtkWindow,
    );

    //=========================================================================
    // GtkActionable
    //=========================================================================
    pub fn gtk_actionable_get_type() -> GType;
    pub fn gtk_actionable_get_action_name(actionable: *mut GtkActionable) -> *const c_char;
    pub fn gtk_actionable_get_action_target_value(
        actionable: *mut GtkActionable,
    ) -> *mut glib::GVariant;
    pub fn gtk_actionable_set_action_name(
        actionable: *mut GtkActionable,
        action_name: *const c_char,
    );
    pub fn gtk_actionable_set_action_target(
        actionable: *mut GtkActionable,
        format_string: *const c_char,
        ...
    );
    pub fn gtk_actionable_set_action_target_value(
        actionable: *mut GtkActionable,
        target_value: *mut glib::GVariant,
    );
    pub fn gtk_actionable_set_detailed_action_name(
        actionable: *mut GtkActionable,
        detailed_action_name: *const c_char,
    );

    //=========================================================================
    // GtkActivatable
    //=========================================================================
    pub fn gtk_activatable_get_type() -> GType;
    pub fn gtk_activatable_do_set_related_action(
        activatable: *mut GtkActivatable,
        action: *mut GtkAction,
    );
    pub fn gtk_activatable_get_related_action(activatable: *mut GtkActivatable) -> *mut GtkAction;
    pub fn gtk_activatable_get_use_action_appearance(activatable: *mut GtkActivatable) -> gboolean;
    pub fn gtk_activatable_set_related_action(
        activatable: *mut GtkActivatable,
        action: *mut GtkAction,
    );
    pub fn gtk_activatable_set_use_action_appearance(
        activatable: *mut GtkActivatable,
        use_appearance: gboolean,
    );
    pub fn gtk_activatable_sync_action_properties(
        activatable: *mut GtkActivatable,
        action: *mut GtkAction,
    );

    //=========================================================================
    // GtkAppChooser
    //=========================================================================
    pub fn gtk_app_chooser_get_type() -> GType;
    pub fn gtk_app_chooser_get_app_info(self_: *mut GtkAppChooser) -> *mut gio::GAppInfo;
    pub fn gtk_app_chooser_get_content_type(self_: *mut GtkAppChooser) -> *mut c_char;
    pub fn gtk_app_chooser_refresh(self_: *mut GtkAppChooser);

    //=========================================================================
    // GtkBuildable
    //=========================================================================
    pub fn gtk_buildable_get_type() -> GType;
    pub fn gtk_buildable_add_child(
        buildable: *mut GtkBuildable,
        builder: *mut GtkBuilder,
        child: *mut gobject::GObject,
        type_: *const c_char,
    );
    pub fn gtk_buildable_construct_child(
        buildable: *mut GtkBuildable,
        builder: *mut GtkBuilder,
        name: *const c_char,
    ) -> *mut gobject::GObject;
    pub fn gtk_buildable_custom_finished(
        buildable: *mut GtkBuildable,
        builder: *mut GtkBuilder,
        child: *mut gobject::GObject,
        tagname: *const c_char,
        data: gpointer,
    );
    pub fn gtk_buildable_custom_tag_end(
        buildable: *mut GtkBuildable,
        builder: *mut GtkBuilder,
        child: *mut gobject::GObject,
        tagname: *const c_char,
        data: *mut gpointer,
    );
    pub fn gtk_buildable_custom_tag_start(
        buildable: *mut GtkBuildable,
        builder: *mut GtkBuilder,
        child: *mut gobject::GObject,
        tagname: *const c_char,
        parser: *mut glib::GMarkupParser,
        data: *mut gpointer,
    ) -> gboolean;
    pub fn gtk_buildable_get_internal_child(
        buildable: *mut GtkBuildable,
        builder: *mut GtkBuilder,
        childname: *const c_char,
    ) -> *mut gobject::GObject;
    pub fn gtk_buildable_get_name(buildable: *mut GtkBuildable) -> *const c_char;
    pub fn gtk_buildable_parser_finished(buildable: *mut GtkBuildable, builder: *mut GtkBuilder);
    pub fn gtk_buildable_set_buildable_property(
        buildable: *mut GtkBuildable,
        builder: *mut GtkBuilder,
        name: *const c_char,
        value: *const gobject::GValue,
    );
    pub fn gtk_buildable_set_name(buildable: *mut GtkBuildable, name: *const c_char);

    //=========================================================================
    // GtkCellAccessibleParent
    //=========================================================================
    pub fn gtk_cell_accessible_parent_get_type() -> GType;
    pub fn gtk_cell_accessible_parent_activate(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
    );
    pub fn gtk_cell_accessible_parent_edit(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
    );
    pub fn gtk_cell_accessible_parent_expand_collapse(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
    );
    pub fn gtk_cell_accessible_parent_get_cell_area(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
        cell_rect: *mut gdk::GdkRectangle,
    );
    pub fn gtk_cell_accessible_parent_get_cell_extents(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
        x: *mut c_int,
        y: *mut c_int,
        width: *mut c_int,
        height: *mut c_int,
        coord_type: atk::AtkCoordType,
    );
    pub fn gtk_cell_accessible_parent_get_cell_position(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
        row: *mut c_int,
        column: *mut c_int,
    );
    pub fn gtk_cell_accessible_parent_get_child_index(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
    ) -> c_int;
    pub fn gtk_cell_accessible_parent_get_column_header_cells(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
    ) -> *mut glib::GPtrArray;
    pub fn gtk_cell_accessible_parent_get_renderer_state(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
    ) -> GtkCellRendererState;
    pub fn gtk_cell_accessible_parent_get_row_header_cells(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
    ) -> *mut glib::GPtrArray;
    pub fn gtk_cell_accessible_parent_grab_focus(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
    ) -> gboolean;
    pub fn gtk_cell_accessible_parent_update_relationset(
        parent: *mut GtkCellAccessibleParent,
        cell: *mut GtkCellAccessible,
        relationset: *mut atk::AtkRelationSet,
    );

    //=========================================================================
    // GtkCellEditable
    //=========================================================================
    pub fn gtk_cell_editable_get_type() -> GType;
    pub fn gtk_cell_editable_editing_done(cell_editable: *mut GtkCellEditable);
    pub fn gtk_cell_editable_remove_widget(cell_editable: *mut GtkCellEditable);
    pub fn gtk_cell_editable_start_editing(
        cell_editable: *mut GtkCellEditable,
        event: *mut gdk::GdkEvent,
    );

    //=========================================================================
    // GtkCellLayout
    //=========================================================================
    pub fn gtk_cell_layout_get_type() -> GType;
    pub fn gtk_cell_layout_add_attribute(
        cell_layout: *mut GtkCellLayout,
        cell: *mut GtkCellRenderer,
        attribute: *const c_char,
        column: c_int,
    );
    pub fn gtk_cell_layout_clear(cell_layout: *mut GtkCellLayout);
    pub fn gtk_cell_layout_clear_attributes(
        cell_layout: *mut GtkCellLayout,
        cell: *mut GtkCellRenderer,
    );
    pub fn gtk_cell_layout_get_area(cell_layout: *mut GtkCellLayout) -> *mut GtkCellArea;
    pub fn gtk_cell_layout_get_cells(cell_layout: *mut GtkCellLayout) -> *mut glib::GList;
    pub fn gtk_cell_layout_pack_end(
        cell_layout: *mut GtkCellLayout,
        cell: *mut GtkCellRenderer,
        expand: gboolean,
    );
    pub fn gtk_cell_layout_pack_start(
        cell_layout: *mut GtkCellLayout,
        cell: *mut GtkCellRenderer,
        expand: gboolean,
    );
    pub fn gtk_cell_layout_reorder(
        cell_layout: *mut GtkCellLayout,
        cell: *mut GtkCellRenderer,
        position: c_int,
    );
    pub fn gtk_cell_layout_set_attributes(
        cell_layout: *mut GtkCellLayout,
        cell: *mut GtkCellRenderer,
        ...
    );
    pub fn gtk_cell_layout_set_cell_data_func(
        cell_layout: *mut GtkCellLayout,
        cell: *mut GtkCellRenderer,
        func: GtkCellLayoutDataFunc,
        func_data: gpointer,
        destroy: glib::GDestroyNotify,
    );

    //=========================================================================
    // GtkColorChooser
    //=========================================================================
    pub fn gtk_color_chooser_get_type() -> GType;
    pub fn gtk_color_chooser_add_palette(
        chooser: *mut GtkColorChooser,
        orientation: GtkOrientation,
        colors_per_line: c_int,
        n_colors: c_int,
        colors: *mut gdk::GdkRGBA,
    );
    pub fn gtk_color_chooser_get_rgba(chooser: *mut GtkColorChooser, color: *mut gdk::GdkRGBA);
    pub fn gtk_color_chooser_get_use_alpha(chooser: *mut GtkColorChooser) -> gboolean;
    pub fn gtk_color_chooser_set_rgba(chooser: *mut GtkColorChooser, color: *const gdk::GdkRGBA);
    pub fn gtk_color_chooser_set_use_alpha(chooser: *mut GtkColorChooser, use_alpha: gboolean);

    //=========================================================================
    // GtkEditable
    //=========================================================================
    pub fn gtk_editable_get_type() -> GType;
    pub fn gtk_editable_copy_clipboard(editable: *mut GtkEditable);
    pub fn gtk_editable_cut_clipboard(editable: *mut GtkEditable);
    pub fn gtk_editable_delete_selection(editable: *mut GtkEditable);
    pub fn gtk_editable_delete_text(editable: *mut GtkEditable, start_pos: c_int, end_pos: c_int);
    pub fn gtk_editable_get_chars(
        editable: *mut GtkEditable,
        start_pos: c_int,
        end_pos: c_int,
    ) -> *mut c_char;
    pub fn gtk_editable_get_editable(editable: *mut GtkEditable) -> gboolean;
    pub fn gtk_editable_get_position(editable: *mut GtkEditable) -> c_int;
    pub fn gtk_editable_get_selection_bounds(
        editable: *mut GtkEditable,
        start_pos: *mut c_int,
        end_pos: *mut c_int,
    ) -> gboolean;
    pub fn gtk_editable_insert_text(
        editable: *mut GtkEditable,
        new_text: *const c_char,
        new_text_length: c_int,
        position: *mut c_int,
    );
    pub fn gtk_editable_paste_clipboard(editable: *mut GtkEditable);
    pub fn gtk_editable_select_region(editable: *mut GtkEditable, start_pos: c_int, end_pos: c_int);
    pub fn gtk_editable_set_editable(editable: *mut GtkEditable, is_editable: gboolean);
    pub fn gtk_editable_set_position(editable: *mut GtkEditable, position: c_int);

    //=========================================================================
    // GtkFileChooser
    //=========================================================================
    pub fn gtk_file_chooser_get_type() -> GType;
    pub fn gtk_file_chooser_add_choice(
        chooser: *mut GtkFileChooser,
        id: *const c_char,
        label: *const c_char,
        options: *mut *const c_char,
        option_labels: *mut *const c_char,
    );
    pub fn gtk_file_chooser_add_filter(chooser: *mut GtkFileChooser, filter: *mut GtkFileFilter);
    pub fn gtk_file_chooser_add_shortcut_folder(
        chooser: *mut GtkFileChooser,
        folder: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_file_chooser_add_shortcut_folder_uri(
        chooser: *mut GtkFileChooser,
        uri: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_file_chooser_get_action(chooser: *mut GtkFileChooser) -> GtkFileChooserAction;
    pub fn gtk_file_chooser_get_choice(
        chooser: *mut GtkFileChooser,
        id: *const c_char,
    ) -> *const c_char;
    pub fn gtk_file_chooser_get_create_folders(chooser: *mut GtkFileChooser) -> gboolean;
    pub fn gtk_file_chooser_get_current_folder(chooser: *mut GtkFileChooser) -> *mut c_char;
    pub fn gtk_file_chooser_get_current_folder_file(
        chooser: *mut GtkFileChooser,
    ) -> *mut gio::GFile;
    pub fn gtk_file_chooser_get_current_folder_uri(chooser: *mut GtkFileChooser) -> *mut c_char;
    pub fn gtk_file_chooser_get_current_name(chooser: *mut GtkFileChooser) -> *mut c_char;
    pub fn gtk_file_chooser_get_do_overwrite_confirmation(chooser: *mut GtkFileChooser)
        -> gboolean;
    pub fn gtk_file_chooser_get_extra_widget(chooser: *mut GtkFileChooser) -> *mut GtkWidget;
    pub fn gtk_file_chooser_get_file(chooser: *mut GtkFileChooser) -> *mut gio::GFile;
    pub fn gtk_file_chooser_get_filename(chooser: *mut GtkFileChooser) -> *mut c_char;
    pub fn gtk_file_chooser_get_filenames(chooser: *mut GtkFileChooser) -> *mut glib::GSList;
    pub fn gtk_file_chooser_get_files(chooser: *mut GtkFileChooser) -> *mut glib::GSList;
    pub fn gtk_file_chooser_get_filter(chooser: *mut GtkFileChooser) -> *mut GtkFileFilter;
    pub fn gtk_file_chooser_get_local_only(chooser: *mut GtkFileChooser) -> gboolean;
    pub fn gtk_file_chooser_get_preview_file(chooser: *mut GtkFileChooser) -> *mut gio::GFile;
    pub fn gtk_file_chooser_get_preview_filename(chooser: *mut GtkFileChooser) -> *mut c_char;
    pub fn gtk_file_chooser_get_preview_uri(chooser: *mut GtkFileChooser) -> *mut c_char;
    pub fn gtk_file_chooser_get_preview_widget(chooser: *mut GtkFileChooser) -> *mut GtkWidget;
    pub fn gtk_file_chooser_get_preview_widget_active(chooser: *mut GtkFileChooser) -> gboolean;
    pub fn gtk_file_chooser_get_select_multiple(chooser: *mut GtkFileChooser) -> gboolean;
    pub fn gtk_file_chooser_get_show_hidden(chooser: *mut GtkFileChooser) -> gboolean;
    pub fn gtk_file_chooser_get_uri(chooser: *mut GtkFileChooser) -> *mut c_char;
    pub fn gtk_file_chooser_get_uris(chooser: *mut GtkFileChooser) -> *mut glib::GSList;
    pub fn gtk_file_chooser_get_use_preview_label(chooser: *mut GtkFileChooser) -> gboolean;
    pub fn gtk_file_chooser_list_filters(chooser: *mut GtkFileChooser) -> *mut glib::GSList;
    pub fn gtk_file_chooser_list_shortcut_folder_uris(
        chooser: *mut GtkFileChooser,
    ) -> *mut glib::GSList;
    pub fn gtk_file_chooser_list_shortcut_folders(
        chooser: *mut GtkFileChooser,
    ) -> *mut glib::GSList;
    pub fn gtk_file_chooser_remove_choice(chooser: *mut GtkFileChooser, id: *const c_char);
    pub fn gtk_file_chooser_remove_filter(chooser: *mut GtkFileChooser, filter: *mut GtkFileFilter);
    pub fn gtk_file_chooser_remove_shortcut_folder(
        chooser: *mut GtkFileChooser,
        folder: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_file_chooser_remove_shortcut_folder_uri(
        chooser: *mut GtkFileChooser,
        uri: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_file_chooser_select_all(chooser: *mut GtkFileChooser);
    pub fn gtk_file_chooser_select_file(
        chooser: *mut GtkFileChooser,
        file: *mut gio::GFile,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_file_chooser_select_filename(
        chooser: *mut GtkFileChooser,
        filename: *const c_char,
    ) -> gboolean;
    pub fn gtk_file_chooser_select_uri(
        chooser: *mut GtkFileChooser,
        uri: *const c_char,
    ) -> gboolean;
    pub fn gtk_file_chooser_set_action(chooser: *mut GtkFileChooser, action: GtkFileChooserAction);
    pub fn gtk_file_chooser_set_choice(
        chooser: *mut GtkFileChooser,
        id: *const c_char,
        option: *const c_char,
    );
    pub fn gtk_file_chooser_set_create_folders(
        chooser: *mut GtkFileChooser,
        create_folders: gboolean,
    );
    pub fn gtk_file_chooser_set_current_folder(
        chooser: *mut GtkFileChooser,
        filename: *const c_char,
    ) -> gboolean;
    pub fn gtk_file_chooser_set_current_folder_file(
        chooser: *mut GtkFileChooser,
        file: *mut gio::GFile,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_file_chooser_set_current_folder_uri(
        chooser: *mut GtkFileChooser,
        uri: *const c_char,
    ) -> gboolean;
    pub fn gtk_file_chooser_set_current_name(chooser: *mut GtkFileChooser, name: *const c_char);
    pub fn gtk_file_chooser_set_do_overwrite_confirmation(
        chooser: *mut GtkFileChooser,
        do_overwrite_confirmation: gboolean,
    );
    pub fn gtk_file_chooser_set_extra_widget(
        chooser: *mut GtkFileChooser,
        extra_widget: *mut GtkWidget,
    );
    pub fn gtk_file_chooser_set_file(
        chooser: *mut GtkFileChooser,
        file: *mut gio::GFile,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_file_chooser_set_filename(
        chooser: *mut GtkFileChooser,
        filename: *const c_char,
    ) -> gboolean;
    pub fn gtk_file_chooser_set_filter(chooser: *mut GtkFileChooser, filter: *mut GtkFileFilter);
    pub fn gtk_file_chooser_set_local_only(chooser: *mut GtkFileChooser, local_only: gboolean);
    pub fn gtk_file_chooser_set_preview_widget(
        chooser: *mut GtkFileChooser,
        preview_widget: *mut GtkWidget,
    );
    pub fn gtk_file_chooser_set_preview_widget_active(
        chooser: *mut GtkFileChooser,
        active: gboolean,
    );
    pub fn gtk_file_chooser_set_select_multiple(
        chooser: *mut GtkFileChooser,
        select_multiple: gboolean,
    );
    pub fn gtk_file_chooser_set_show_hidden(chooser: *mut GtkFileChooser, show_hidden: gboolean);
    pub fn gtk_file_chooser_set_uri(chooser: *mut GtkFileChooser, uri: *const c_char) -> gboolean;
    pub fn gtk_file_chooser_set_use_preview_label(
        chooser: *mut GtkFileChooser,
        use_label: gboolean,
    );
    pub fn gtk_file_chooser_unselect_all(chooser: *mut GtkFileChooser);
    pub fn gtk_file_chooser_unselect_file(chooser: *mut GtkFileChooser, file: *mut gio::GFile);
    pub fn gtk_file_chooser_unselect_filename(
        chooser: *mut GtkFileChooser,
        filename: *const c_char,
    );
    pub fn gtk_file_chooser_unselect_uri(chooser: *mut GtkFileChooser, uri: *const c_char);

    //=========================================================================
    // GtkFontChooser
    //=========================================================================
    pub fn gtk_font_chooser_get_type() -> GType;
    pub fn gtk_font_chooser_get_font(fontchooser: *mut GtkFontChooser) -> *mut c_char;
    pub fn gtk_font_chooser_get_font_desc(
        fontchooser: *mut GtkFontChooser,
    ) -> *mut pango::PangoFontDescription;
    pub fn gtk_font_chooser_get_font_face(
        fontchooser: *mut GtkFontChooser,
    ) -> *mut pango::PangoFontFace;
    pub fn gtk_font_chooser_get_font_family(
        fontchooser: *mut GtkFontChooser,
    ) -> *mut pango::PangoFontFamily;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_font_chooser_get_font_features(fontchooser: *mut GtkFontChooser) -> *mut c_char;
    pub fn gtk_font_chooser_get_font_map(
        fontchooser: *mut GtkFontChooser,
    ) -> *mut pango::PangoFontMap;
    pub fn gtk_font_chooser_get_font_size(fontchooser: *mut GtkFontChooser) -> c_int;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_font_chooser_get_language(fontchooser: *mut GtkFontChooser) -> *mut c_char;
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_font_chooser_get_level(fontchooser: *mut GtkFontChooser) -> GtkFontChooserLevel;
    pub fn gtk_font_chooser_get_preview_text(fontchooser: *mut GtkFontChooser) -> *mut c_char;
    pub fn gtk_font_chooser_get_show_preview_entry(fontchooser: *mut GtkFontChooser) -> gboolean;
    pub fn gtk_font_chooser_set_filter_func(
        fontchooser: *mut GtkFontChooser,
        filter: GtkFontFilterFunc,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_font_chooser_set_font(fontchooser: *mut GtkFontChooser, fontname: *const c_char);
    pub fn gtk_font_chooser_set_font_desc(
        fontchooser: *mut GtkFontChooser,
        font_desc: *const pango::PangoFontDescription,
    );
    pub fn gtk_font_chooser_set_font_map(
        fontchooser: *mut GtkFontChooser,
        fontmap: *mut pango::PangoFontMap,
    );
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_font_chooser_set_language(fontchooser: *mut GtkFontChooser, language: *const c_char);
    #[cfg(feature = "v3_24")]
    #[cfg_attr(docsrs, doc(cfg(feature = "v3_24")))]
    pub fn gtk_font_chooser_set_level(fontchooser: *mut GtkFontChooser, level: GtkFontChooserLevel);
    pub fn gtk_font_chooser_set_preview_text(fontchooser: *mut GtkFontChooser, text: *const c_char);
    pub fn gtk_font_chooser_set_show_preview_entry(
        fontchooser: *mut GtkFontChooser,
        show_preview_entry: gboolean,
    );

    //=========================================================================
    // GtkOrientable
    //=========================================================================
    pub fn gtk_orientable_get_type() -> GType;
    pub fn gtk_orientable_get_orientation(orientable: *mut GtkOrientable) -> GtkOrientation;
    pub fn gtk_orientable_set_orientation(
        orientable: *mut GtkOrientable,
        orientation: GtkOrientation,
    );

    //=========================================================================
    // GtkPrintOperationPreview
    //=========================================================================
    pub fn gtk_print_operation_preview_get_type() -> GType;
    pub fn gtk_print_operation_preview_end_preview(preview: *mut GtkPrintOperationPreview);
    pub fn gtk_print_operation_preview_is_selected(
        preview: *mut GtkPrintOperationPreview,
        page_nr: c_int,
    ) -> gboolean;
    pub fn gtk_print_operation_preview_render_page(
        preview: *mut GtkPrintOperationPreview,
        page_nr: c_int,
    );

    //=========================================================================
    // GtkRecentChooser
    //=========================================================================
    pub fn gtk_recent_chooser_get_type() -> GType;
    pub fn gtk_recent_chooser_add_filter(
        chooser: *mut GtkRecentChooser,
        filter: *mut GtkRecentFilter,
    );
    pub fn gtk_recent_chooser_get_current_item(
        chooser: *mut GtkRecentChooser,
    ) -> *mut GtkRecentInfo;
    pub fn gtk_recent_chooser_get_current_uri(chooser: *mut GtkRecentChooser) -> *mut c_char;
    pub fn gtk_recent_chooser_get_filter(chooser: *mut GtkRecentChooser) -> *mut GtkRecentFilter;
    pub fn gtk_recent_chooser_get_items(chooser: *mut GtkRecentChooser) -> *mut glib::GList;
    pub fn gtk_recent_chooser_get_limit(chooser: *mut GtkRecentChooser) -> c_int;
    pub fn gtk_recent_chooser_get_local_only(chooser: *mut GtkRecentChooser) -> gboolean;
    pub fn gtk_recent_chooser_get_select_multiple(chooser: *mut GtkRecentChooser) -> gboolean;
    pub fn gtk_recent_chooser_get_show_icons(chooser: *mut GtkRecentChooser) -> gboolean;
    pub fn gtk_recent_chooser_get_show_not_found(chooser: *mut GtkRecentChooser) -> gboolean;
    pub fn gtk_recent_chooser_get_show_private(chooser: *mut GtkRecentChooser) -> gboolean;
    pub fn gtk_recent_chooser_get_show_tips(chooser: *mut GtkRecentChooser) -> gboolean;
    pub fn gtk_recent_chooser_get_sort_type(chooser: *mut GtkRecentChooser) -> GtkRecentSortType;
    pub fn gtk_recent_chooser_get_uris(
        chooser: *mut GtkRecentChooser,
        length: *mut size_t,
    ) -> *mut *mut c_char;
    pub fn gtk_recent_chooser_list_filters(chooser: *mut GtkRecentChooser) -> *mut glib::GSList;
    pub fn gtk_recent_chooser_remove_filter(
        chooser: *mut GtkRecentChooser,
        filter: *mut GtkRecentFilter,
    );
    pub fn gtk_recent_chooser_select_all(chooser: *mut GtkRecentChooser);
    pub fn gtk_recent_chooser_select_uri(
        chooser: *mut GtkRecentChooser,
        uri: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_recent_chooser_set_current_uri(
        chooser: *mut GtkRecentChooser,
        uri: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_recent_chooser_set_filter(
        chooser: *mut GtkRecentChooser,
        filter: *mut GtkRecentFilter,
    );
    pub fn gtk_recent_chooser_set_limit(chooser: *mut GtkRecentChooser, limit: c_int);
    pub fn gtk_recent_chooser_set_local_only(chooser: *mut GtkRecentChooser, local_only: gboolean);
    pub fn gtk_recent_chooser_set_select_multiple(
        chooser: *mut GtkRecentChooser,
        select_multiple: gboolean,
    );
    pub fn gtk_recent_chooser_set_show_icons(chooser: *mut GtkRecentChooser, show_icons: gboolean);
    pub fn gtk_recent_chooser_set_show_not_found(
        chooser: *mut GtkRecentChooser,
        show_not_found: gboolean,
    );
    pub fn gtk_recent_chooser_set_show_private(
        chooser: *mut GtkRecentChooser,
        show_private: gboolean,
    );
    pub fn gtk_recent_chooser_set_show_tips(chooser: *mut GtkRecentChooser, show_tips: gboolean);
    pub fn gtk_recent_chooser_set_sort_func(
        chooser: *mut GtkRecentChooser,
        sort_func: GtkRecentSortFunc,
        sort_data: gpointer,
        data_destroy: glib::GDestroyNotify,
    );
    pub fn gtk_recent_chooser_set_sort_type(
        chooser: *mut GtkRecentChooser,
        sort_type: GtkRecentSortType,
    );
    pub fn gtk_recent_chooser_unselect_all(chooser: *mut GtkRecentChooser);
    pub fn gtk_recent_chooser_unselect_uri(chooser: *mut GtkRecentChooser, uri: *const c_char);

    //=========================================================================
    // GtkScrollable
    //=========================================================================
    pub fn gtk_scrollable_get_type() -> GType;
    pub fn gtk_scrollable_get_border(
        scrollable: *mut GtkScrollable,
        border: *mut GtkBorder,
    ) -> gboolean;
    pub fn gtk_scrollable_get_hadjustment(scrollable: *mut GtkScrollable) -> *mut GtkAdjustment;
    pub fn gtk_scrollable_get_hscroll_policy(scrollable: *mut GtkScrollable)
        -> GtkScrollablePolicy;
    pub fn gtk_scrollable_get_vadjustment(scrollable: *mut GtkScrollable) -> *mut GtkAdjustment;
    pub fn gtk_scrollable_get_vscroll_policy(scrollable: *mut GtkScrollable)
        -> GtkScrollablePolicy;
    pub fn gtk_scrollable_set_hadjustment(
        scrollable: *mut GtkScrollable,
        hadjustment: *mut GtkAdjustment,
    );
    pub fn gtk_scrollable_set_hscroll_policy(
        scrollable: *mut GtkScrollable,
        policy: GtkScrollablePolicy,
    );
    pub fn gtk_scrollable_set_vadjustment(
        scrollable: *mut GtkScrollable,
        vadjustment: *mut GtkAdjustment,
    );
    pub fn gtk_scrollable_set_vscroll_policy(
        scrollable: *mut GtkScrollable,
        policy: GtkScrollablePolicy,
    );

    //=========================================================================
    // GtkStyleProvider
    //=========================================================================
    pub fn gtk_style_provider_get_type() -> GType;
    pub fn gtk_style_provider_get_icon_factory(
        provider: *mut GtkStyleProvider,
        path: *mut GtkWidgetPath,
    ) -> *mut GtkIconFactory;
    pub fn gtk_style_provider_get_style(
        provider: *mut GtkStyleProvider,
        path: *mut GtkWidgetPath,
    ) -> *mut GtkStyleProperties;
    pub fn gtk_style_provider_get_style_property(
        provider: *mut GtkStyleProvider,
        path: *mut GtkWidgetPath,
        state: GtkStateFlags,
        pspec: *mut gobject::GParamSpec,
        value: *mut gobject::GValue,
    ) -> gboolean;

    //=========================================================================
    // GtkToolShell
    //=========================================================================
    pub fn gtk_tool_shell_get_type() -> GType;
    pub fn gtk_tool_shell_get_ellipsize_mode(shell: *mut GtkToolShell)
        -> pango::PangoEllipsizeMode;
    pub fn gtk_tool_shell_get_icon_size(shell: *mut GtkToolShell) -> GtkIconSize;
    pub fn gtk_tool_shell_get_orientation(shell: *mut GtkToolShell) -> GtkOrientation;
    pub fn gtk_tool_shell_get_relief_style(shell: *mut GtkToolShell) -> GtkReliefStyle;
    pub fn gtk_tool_shell_get_style(shell: *mut GtkToolShell) -> GtkToolbarStyle;
    pub fn gtk_tool_shell_get_text_alignment(shell: *mut GtkToolShell) -> c_float;
    pub fn gtk_tool_shell_get_text_orientation(shell: *mut GtkToolShell) -> GtkOrientation;
    pub fn gtk_tool_shell_get_text_size_group(shell: *mut GtkToolShell) -> *mut GtkSizeGroup;
    pub fn gtk_tool_shell_rebuild_menu(shell: *mut GtkToolShell);

    //=========================================================================
    // GtkTreeDragDest
    //=========================================================================
    pub fn gtk_tree_drag_dest_get_type() -> GType;
    pub fn gtk_tree_drag_dest_drag_data_received(
        drag_dest: *mut GtkTreeDragDest,
        dest: *mut GtkTreePath,
        selection_data: *mut GtkSelectionData,
    ) -> gboolean;
    pub fn gtk_tree_drag_dest_row_drop_possible(
        drag_dest: *mut GtkTreeDragDest,
        dest_path: *mut GtkTreePath,
        selection_data: *mut GtkSelectionData,
    ) -> gboolean;

    //=========================================================================
    // GtkTreeDragSource
    //=========================================================================
    pub fn gtk_tree_drag_source_get_type() -> GType;
    pub fn gtk_tree_drag_source_drag_data_delete(
        drag_source: *mut GtkTreeDragSource,
        path: *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_tree_drag_source_drag_data_get(
        drag_source: *mut GtkTreeDragSource,
        path: *mut GtkTreePath,
        selection_data: *mut GtkSelectionData,
    ) -> gboolean;
    pub fn gtk_tree_drag_source_row_draggable(
        drag_source: *mut GtkTreeDragSource,
        path: *mut GtkTreePath,
    ) -> gboolean;

    //=========================================================================
    // GtkTreeModel
    //=========================================================================
    pub fn gtk_tree_model_get_type() -> GType;
    pub fn gtk_tree_model_filter_new(
        child_model: *mut GtkTreeModel,
        root: *mut GtkTreePath,
    ) -> *mut GtkTreeModel;
    pub fn gtk_tree_model_foreach(
        model: *mut GtkTreeModel,
        func: GtkTreeModelForeachFunc,
        user_data: gpointer,
    );
    pub fn gtk_tree_model_get(tree_model: *mut GtkTreeModel, iter: *mut GtkTreeIter, ...);
    pub fn gtk_tree_model_get_column_type(tree_model: *mut GtkTreeModel, index_: c_int) -> GType;
    pub fn gtk_tree_model_get_flags(tree_model: *mut GtkTreeModel) -> GtkTreeModelFlags;
    pub fn gtk_tree_model_get_iter(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
        path: *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_tree_model_get_iter_first(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_model_get_iter_from_string(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
        path_string: *const c_char,
    ) -> gboolean;
    pub fn gtk_tree_model_get_n_columns(tree_model: *mut GtkTreeModel) -> c_int;
    pub fn gtk_tree_model_get_path(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
    ) -> *mut GtkTreePath;
    pub fn gtk_tree_model_get_string_from_iter(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
    ) -> *mut c_char;
    //pub fn gtk_tree_model_get_valist(tree_model: *mut GtkTreeModel, iter: *mut GtkTreeIter, var_args: /*Unimplemented*/va_list);
    pub fn gtk_tree_model_get_value(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
        column: c_int,
        value: *mut gobject::GValue,
    );
    pub fn gtk_tree_model_iter_children(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
        parent: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_model_iter_has_child(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_model_iter_n_children(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
    ) -> c_int;
    pub fn gtk_tree_model_iter_next(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_model_iter_nth_child(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
        parent: *mut GtkTreeIter,
        n: c_int,
    ) -> gboolean;
    pub fn gtk_tree_model_iter_parent(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
        child: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_model_iter_previous(
        tree_model: *mut GtkTreeModel,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    pub fn gtk_tree_model_ref_node(tree_model: *mut GtkTreeModel, iter: *mut GtkTreeIter);
    pub fn gtk_tree_model_row_changed(
        tree_model: *mut GtkTreeModel,
        path: *mut GtkTreePath,
        iter: *mut GtkTreeIter,
    );
    pub fn gtk_tree_model_row_deleted(tree_model: *mut GtkTreeModel, path: *mut GtkTreePath);
    pub fn gtk_tree_model_row_has_child_toggled(
        tree_model: *mut GtkTreeModel,
        path: *mut GtkTreePath,
        iter: *mut GtkTreeIter,
    );
    pub fn gtk_tree_model_row_inserted(
        tree_model: *mut GtkTreeModel,
        path: *mut GtkTreePath,
        iter: *mut GtkTreeIter,
    );
    pub fn gtk_tree_model_rows_reordered(
        tree_model: *mut GtkTreeModel,
        path: *mut GtkTreePath,
        iter: *mut GtkTreeIter,
        new_order: *mut c_int,
    );
    pub fn gtk_tree_model_rows_reordered_with_length(
        tree_model: *mut GtkTreeModel,
        path: *mut GtkTreePath,
        iter: *mut GtkTreeIter,
        new_order: *mut c_int,
        length: c_int,
    );
    pub fn gtk_tree_model_unref_node(tree_model: *mut GtkTreeModel, iter: *mut GtkTreeIter);

    //=========================================================================
    // GtkTreeSortable
    //=========================================================================
    pub fn gtk_tree_sortable_get_type() -> GType;
    pub fn gtk_tree_sortable_get_sort_column_id(
        sortable: *mut GtkTreeSortable,
        sort_column_id: *mut c_int,
        order: *mut GtkSortType,
    ) -> gboolean;
    pub fn gtk_tree_sortable_has_default_sort_func(sortable: *mut GtkTreeSortable) -> gboolean;
    pub fn gtk_tree_sortable_set_default_sort_func(
        sortable: *mut GtkTreeSortable,
        sort_func: GtkTreeIterCompareFunc,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_tree_sortable_set_sort_column_id(
        sortable: *mut GtkTreeSortable,
        sort_column_id: c_int,
        order: GtkSortType,
    );
    pub fn gtk_tree_sortable_set_sort_func(
        sortable: *mut GtkTreeSortable,
        sort_column_id: c_int,
        sort_func: GtkTreeIterCompareFunc,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );
    pub fn gtk_tree_sortable_sort_column_changed(sortable: *mut GtkTreeSortable);

    //=========================================================================
    // Other functions
    //=========================================================================
    pub fn gtk_accel_groups_activate(
        object: *mut gobject::GObject,
        accel_key: c_uint,
        accel_mods: gdk::GdkModifierType,
    ) -> gboolean;
    pub fn gtk_accel_groups_from_object(object: *mut gobject::GObject) -> *mut glib::GSList;
    pub fn gtk_accelerator_get_default_mod_mask() -> gdk::GdkModifierType;
    pub fn gtk_accelerator_get_label(
        accelerator_key: c_uint,
        accelerator_mods: gdk::GdkModifierType,
    ) -> *mut c_char;
    pub fn gtk_accelerator_get_label_with_keycode(
        display: *mut gdk::GdkDisplay,
        accelerator_key: c_uint,
        keycode: c_uint,
        accelerator_mods: gdk::GdkModifierType,
    ) -> *mut c_char;
    pub fn gtk_accelerator_name(
        accelerator_key: c_uint,
        accelerator_mods: gdk::GdkModifierType,
    ) -> *mut c_char;
    pub fn gtk_accelerator_name_with_keycode(
        display: *mut gdk::GdkDisplay,
        accelerator_key: c_uint,
        keycode: c_uint,
        accelerator_mods: gdk::GdkModifierType,
    ) -> *mut c_char;
    pub fn gtk_accelerator_parse(
        accelerator: *const c_char,
        accelerator_key: *mut c_uint,
        accelerator_mods: *mut gdk::GdkModifierType,
    );
    pub fn gtk_accelerator_parse_with_keycode(
        accelerator: *const c_char,
        accelerator_key: *mut c_uint,
        accelerator_codes: *mut *mut c_uint,
        accelerator_mods: *mut gdk::GdkModifierType,
    );
    pub fn gtk_accelerator_set_default_mod_mask(default_mod_mask: gdk::GdkModifierType);
    pub fn gtk_accelerator_valid(keyval: c_uint, modifiers: gdk::GdkModifierType) -> gboolean;
    pub fn gtk_alternative_dialog_button_order(screen: *mut gdk::GdkScreen) -> gboolean;
    pub fn gtk_bindings_activate(
        object: *mut gobject::GObject,
        keyval: c_uint,
        modifiers: gdk::GdkModifierType,
    ) -> gboolean;
    pub fn gtk_bindings_activate_event(
        object: *mut gobject::GObject,
        event: *mut gdk::GdkEventKey,
    ) -> gboolean;
    pub fn gtk_cairo_should_draw_window(
        cr: *mut cairo::cairo_t,
        window: *mut gdk::GdkWindow,
    ) -> gboolean;
    pub fn gtk_cairo_transform_to_window(
        cr: *mut cairo::cairo_t,
        widget: *mut GtkWidget,
        window: *mut gdk::GdkWindow,
    );
    pub fn gtk_check_version(
        required_major: c_uint,
        required_minor: c_uint,
        required_micro: c_uint,
    ) -> *const c_char;
    pub fn gtk_device_grab_add(
        widget: *mut GtkWidget,
        device: *mut gdk::GdkDevice,
        block_others: gboolean,
    );
    pub fn gtk_device_grab_remove(widget: *mut GtkWidget, device: *mut gdk::GdkDevice);
    pub fn gtk_disable_setlocale();
    pub fn gtk_distribute_natural_allocation(
        extra_space: c_int,
        n_requested_sizes: c_uint,
        sizes: *mut GtkRequestedSize,
    ) -> c_int;
    pub fn gtk_drag_cancel(context: *mut gdk::GdkDragContext);
    pub fn gtk_drag_finish(
        context: *mut gdk::GdkDragContext,
        success: gboolean,
        del: gboolean,
        time_: u32,
    );
    pub fn gtk_drag_get_source_widget(context: *mut gdk::GdkDragContext) -> *mut GtkWidget;
    pub fn gtk_drag_set_icon_default(context: *mut gdk::GdkDragContext);
    pub fn gtk_drag_set_icon_gicon(
        context: *mut gdk::GdkDragContext,
        icon: *mut gio::GIcon,
        hot_x: c_int,
        hot_y: c_int,
    );
    pub fn gtk_drag_set_icon_name(
        context: *mut gdk::GdkDragContext,
        icon_name: *const c_char,
        hot_x: c_int,
        hot_y: c_int,
    );
    pub fn gtk_drag_set_icon_pixbuf(
        context: *mut gdk::GdkDragContext,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
        hot_x: c_int,
        hot_y: c_int,
    );
    pub fn gtk_drag_set_icon_stock(
        context: *mut gdk::GdkDragContext,
        stock_id: *const c_char,
        hot_x: c_int,
        hot_y: c_int,
    );
    pub fn gtk_drag_set_icon_surface(
        context: *mut gdk::GdkDragContext,
        surface: *mut cairo::cairo_surface_t,
    );
    pub fn gtk_drag_set_icon_widget(
        context: *mut gdk::GdkDragContext,
        widget: *mut GtkWidget,
        hot_x: c_int,
        hot_y: c_int,
    );
    pub fn gtk_draw_insertion_cursor(
        widget: *mut GtkWidget,
        cr: *mut cairo::cairo_t,
        location: *const gdk::GdkRectangle,
        is_primary: gboolean,
        direction: GtkTextDirection,
        draw_arrow: gboolean,
    );
    pub fn gtk_events_pending() -> gboolean;
    pub fn gtk_false() -> gboolean;
    pub fn gtk_get_binary_age() -> c_uint;
    pub fn gtk_get_current_event() -> *mut gdk::GdkEvent;
    pub fn gtk_get_current_event_device() -> *mut gdk::GdkDevice;
    pub fn gtk_get_current_event_state(state: *mut gdk::GdkModifierType) -> gboolean;
    pub fn gtk_get_current_event_time() -> u32;
    pub fn gtk_get_debug_flags() -> c_uint;
    pub fn gtk_get_default_language() -> *mut pango::PangoLanguage;
    pub fn gtk_get_event_widget(event: *mut gdk::GdkEvent) -> *mut GtkWidget;
    pub fn gtk_get_interface_age() -> c_uint;
    pub fn gtk_get_locale_direction() -> GtkTextDirection;
    pub fn gtk_get_major_version() -> c_uint;
    pub fn gtk_get_micro_version() -> c_uint;
    pub fn gtk_get_minor_version() -> c_uint;
    pub fn gtk_get_option_group(open_default_display: gboolean) -> *mut glib::GOptionGroup;
    pub fn gtk_grab_get_current() -> *mut GtkWidget;
    pub fn gtk_init(argc: *mut c_int, argv: *mut *mut *mut c_char);
    pub fn gtk_init_check(argc: *mut c_int, argv: *mut *mut *mut c_char) -> gboolean;
    pub fn gtk_init_with_args(
        argc: *mut c_int,
        argv: *mut *mut *mut c_char,
        parameter_string: *const c_char,
        entries: *const glib::GOptionEntry,
        translation_domain: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_key_snooper_install(snooper: GtkKeySnoopFunc, func_data: gpointer) -> c_uint;
    pub fn gtk_key_snooper_remove(snooper_handler_id: c_uint);
    pub fn gtk_main();
    pub fn gtk_main_do_event(event: *mut gdk::GdkEvent);
    pub fn gtk_main_iteration() -> gboolean;
    pub fn gtk_main_iteration_do(blocking: gboolean) -> gboolean;
    pub fn gtk_main_level() -> c_uint;
    pub fn gtk_main_quit();
    pub fn gtk_paint_arrow(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        arrow_type: GtkArrowType,
        fill: gboolean,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_paint_box(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_paint_box_gap(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
        gap_side: GtkPositionType,
        gap_x: c_int,
        gap_width: c_int,
    );
    pub fn gtk_paint_check(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_paint_diamond(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_paint_expander(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        expander_style: GtkExpanderStyle,
    );
    pub fn gtk_paint_extension(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
        gap_side: GtkPositionType,
    );
    pub fn gtk_paint_flat_box(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_paint_focus(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_paint_handle(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
        orientation: GtkOrientation,
    );
    pub fn gtk_paint_hline(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x1: c_int,
        x2: c_int,
        y: c_int,
    );
    pub fn gtk_paint_layout(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        use_text: gboolean,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        layout: *mut pango::PangoLayout,
    );
    pub fn gtk_paint_option(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_paint_resize_grip(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        edge: gdk::GdkWindowEdge,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_paint_shadow(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_paint_shadow_gap(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
        gap_side: GtkPositionType,
        gap_x: c_int,
        gap_width: c_int,
    );
    pub fn gtk_paint_slider(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
        orientation: GtkOrientation,
    );
    pub fn gtk_paint_spinner(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        step: c_uint,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_paint_tab(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        shadow_type: GtkShadowType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_paint_vline(
        style: *mut GtkStyle,
        cr: *mut cairo::cairo_t,
        state_type: GtkStateType,
        widget: *mut GtkWidget,
        detail: *const c_char,
        y1_: c_int,
        y2_: c_int,
        x: c_int,
    );
    pub fn gtk_parse_args(argc: *mut c_int, argv: *mut *mut *mut c_char) -> gboolean;
    pub fn gtk_print_run_page_setup_dialog(
        parent: *mut GtkWindow,
        page_setup: *mut GtkPageSetup,
        settings: *mut GtkPrintSettings,
    ) -> *mut GtkPageSetup;
    pub fn gtk_print_run_page_setup_dialog_async(
        parent: *mut GtkWindow,
        page_setup: *mut GtkPageSetup,
        settings: *mut GtkPrintSettings,
        done_cb: GtkPageSetupDoneFunc,
        data: gpointer,
    );
    pub fn gtk_propagate_event(widget: *mut GtkWidget, event: *mut gdk::GdkEvent);
    pub fn gtk_rc_add_default_file(filename: *const c_char);
    pub fn gtk_rc_find_module_in_path(module_file: *const c_char) -> *mut c_char;
    pub fn gtk_rc_find_pixmap_in_path(
        settings: *mut GtkSettings,
        scanner: *mut glib::GScanner,
        pixmap_file: *const c_char,
    ) -> *mut c_char;
    pub fn gtk_rc_get_default_files() -> *mut *mut c_char;
    pub fn gtk_rc_get_im_module_file() -> *mut c_char;
    pub fn gtk_rc_get_im_module_path() -> *mut c_char;
    pub fn gtk_rc_get_module_dir() -> *mut c_char;
    pub fn gtk_rc_get_style(widget: *mut GtkWidget) -> *mut GtkStyle;
    pub fn gtk_rc_get_style_by_paths(
        settings: *mut GtkSettings,
        widget_path: *const c_char,
        class_path: *const c_char,
        type_: GType,
    ) -> *mut GtkStyle;
    pub fn gtk_rc_get_theme_dir() -> *mut c_char;
    pub fn gtk_rc_parse(filename: *const c_char);
    pub fn gtk_rc_parse_color(scanner: *mut glib::GScanner, color: *mut gdk::GdkColor) -> c_uint;
    pub fn gtk_rc_parse_color_full(
        scanner: *mut glib::GScanner,
        style: *mut GtkRcStyle,
        color: *mut gdk::GdkColor,
    ) -> c_uint;
    pub fn gtk_rc_parse_priority(
        scanner: *mut glib::GScanner,
        priority: *mut GtkPathPriorityType,
    ) -> c_uint;
    pub fn gtk_rc_parse_state(scanner: *mut glib::GScanner, state: *mut GtkStateType) -> c_uint;
    pub fn gtk_rc_parse_string(rc_string: *const c_char);
    pub fn gtk_rc_reparse_all() -> gboolean;
    pub fn gtk_rc_reparse_all_for_settings(
        settings: *mut GtkSettings,
        force_load: gboolean,
    ) -> gboolean;
    pub fn gtk_rc_reset_styles(settings: *mut GtkSettings);
    pub fn gtk_rc_scanner_new() -> *mut glib::GScanner;
    pub fn gtk_rc_set_default_files(filenames: *mut *mut c_char);
    pub fn gtk_render_activity(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
    );
    pub fn gtk_render_arrow(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        angle: c_double,
        x: c_double,
        y: c_double,
        size: c_double,
    );
    pub fn gtk_render_background(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
    );
    pub fn gtk_render_background_get_clip(
        context: *mut GtkStyleContext,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
        out_clip: *mut gdk::GdkRectangle,
    );
    pub fn gtk_render_check(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
    );
    pub fn gtk_render_expander(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
    );
    pub fn gtk_render_extension(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
        gap_side: GtkPositionType,
    );
    pub fn gtk_render_focus(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
    );
    pub fn gtk_render_frame(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
    );
    pub fn gtk_render_frame_gap(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
        gap_side: GtkPositionType,
        xy0_gap: c_double,
        xy1_gap: c_double,
    );
    pub fn gtk_render_handle(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
    );
    pub fn gtk_render_icon(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        pixbuf: *mut gdk_pixbuf::GdkPixbuf,
        x: c_double,
        y: c_double,
    );
    pub fn gtk_render_icon_pixbuf(
        context: *mut GtkStyleContext,
        source: *const GtkIconSource,
        size: GtkIconSize,
    ) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn gtk_render_icon_surface(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        surface: *mut cairo::cairo_surface_t,
        x: c_double,
        y: c_double,
    );
    pub fn gtk_render_insertion_cursor(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        layout: *mut pango::PangoLayout,
        index: c_int,
        direction: pango::PangoDirection,
    );
    pub fn gtk_render_layout(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        layout: *mut pango::PangoLayout,
    );
    pub fn gtk_render_line(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x0: c_double,
        y0: c_double,
        x1: c_double,
        y1: c_double,
    );
    pub fn gtk_render_option(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
    );
    pub fn gtk_render_slider(
        context: *mut GtkStyleContext,
        cr: *mut cairo::cairo_t,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
        orientation: GtkOrientation,
    );
    pub fn gtk_rgb_to_hsv(
        r: c_double,
        g: c_double,
        b: c_double,
        h: *mut c_double,
        s: *mut c_double,
        v: *mut c_double,
    );
    pub fn gtk_selection_add_target(
        widget: *mut GtkWidget,
        selection: gdk::GdkAtom,
        target: gdk::GdkAtom,
        info: c_uint,
    );
    pub fn gtk_selection_add_targets(
        widget: *mut GtkWidget,
        selection: gdk::GdkAtom,
        targets: *const GtkTargetEntry,
        ntargets: c_uint,
    );
    pub fn gtk_selection_clear_targets(widget: *mut GtkWidget, selection: gdk::GdkAtom);
    pub fn gtk_selection_convert(
        widget: *mut GtkWidget,
        selection: gdk::GdkAtom,
        target: gdk::GdkAtom,
        time_: u32,
    ) -> gboolean;
    pub fn gtk_selection_owner_set(
        widget: *mut GtkWidget,
        selection: gdk::GdkAtom,
        time_: u32,
    ) -> gboolean;
    pub fn gtk_selection_owner_set_for_display(
        display: *mut gdk::GdkDisplay,
        widget: *mut GtkWidget,
        selection: gdk::GdkAtom,
        time_: u32,
    ) -> gboolean;
    pub fn gtk_selection_remove_all(widget: *mut GtkWidget);
    pub fn gtk_set_debug_flags(flags: c_uint);
    pub fn gtk_show_about_dialog(parent: *mut GtkWindow, first_property_name: *const c_char, ...);
    pub fn gtk_show_uri(
        screen: *mut gdk::GdkScreen,
        uri: *const c_char,
        timestamp: u32,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_show_uri_on_window(
        parent: *mut GtkWindow,
        uri: *const c_char,
        timestamp: u32,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_stock_add(items: *const GtkStockItem, n_items: c_uint);
    pub fn gtk_stock_add_static(items: *const GtkStockItem, n_items: c_uint);
    pub fn gtk_stock_list_ids() -> *mut glib::GSList;
    pub fn gtk_stock_lookup(stock_id: *const c_char, item: *mut GtkStockItem) -> gboolean;
    pub fn gtk_stock_set_translate_func(
        domain: *const c_char,
        func: GtkTranslateFunc,
        data: gpointer,
        notify: glib::GDestroyNotify,
    );
    pub fn gtk_target_table_free(targets: *mut GtkTargetEntry, n_targets: c_int);
    pub fn gtk_target_table_new_from_list(
        list: *mut GtkTargetList,
        n_targets: *mut c_int,
    ) -> *mut GtkTargetEntry;
    pub fn gtk_targets_include_image(
        targets: *mut gdk::GdkAtom,
        n_targets: c_int,
        writable: gboolean,
    ) -> gboolean;
    pub fn gtk_targets_include_rich_text(
        targets: *mut gdk::GdkAtom,
        n_targets: c_int,
        buffer: *mut GtkTextBuffer,
    ) -> gboolean;
    pub fn gtk_targets_include_text(targets: *mut gdk::GdkAtom, n_targets: c_int) -> gboolean;
    pub fn gtk_targets_include_uri(targets: *mut gdk::GdkAtom, n_targets: c_int) -> gboolean;
    pub fn gtk_test_create_simple_window(
        window_title: *const c_char,
        dialog_text: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_test_create_widget(
        widget_type: GType,
        first_property_name: *const c_char,
        ...
    ) -> *mut GtkWidget;
    pub fn gtk_test_display_button_window(
        window_title: *const c_char,
        dialog_text: *const c_char,
        ...
    ) -> *mut GtkWidget;
    pub fn gtk_test_find_label(
        widget: *mut GtkWidget,
        label_pattern: *const c_char,
    ) -> *mut GtkWidget;
    pub fn gtk_test_find_sibling(base_widget: *mut GtkWidget, widget_type: GType)
        -> *mut GtkWidget;
    pub fn gtk_test_find_widget(
        widget: *mut GtkWidget,
        label_pattern: *const c_char,
        widget_type: GType,
    ) -> *mut GtkWidget;
    pub fn gtk_test_init(argcp: *mut c_int, argvp: *mut *mut *mut c_char, ...);
    pub fn gtk_test_list_all_types(n_types: *mut c_uint) -> *const GType;
    pub fn gtk_test_register_all_types();
    pub fn gtk_test_slider_get_value(widget: *mut GtkWidget) -> c_double;
    pub fn gtk_test_slider_set_perc(widget: *mut GtkWidget, percentage: c_double);
    pub fn gtk_test_spin_button_click(
        spinner: *mut GtkSpinButton,
        button: c_uint,
        upwards: gboolean,
    ) -> gboolean;
    pub fn gtk_test_text_get(widget: *mut GtkWidget) -> *mut c_char;
    pub fn gtk_test_text_set(widget: *mut GtkWidget, string: *const c_char);
    pub fn gtk_test_widget_click(
        widget: *mut GtkWidget,
        button: c_uint,
        modifiers: gdk::GdkModifierType,
    ) -> gboolean;
    pub fn gtk_test_widget_send_key(
        widget: *mut GtkWidget,
        keyval: c_uint,
        modifiers: gdk::GdkModifierType,
    ) -> gboolean;
    pub fn gtk_test_widget_wait_for_draw(widget: *mut GtkWidget);
    pub fn gtk_tree_get_row_drag_data(
        selection_data: *mut GtkSelectionData,
        tree_model: *mut *mut GtkTreeModel,
        path: *mut *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_tree_set_row_drag_data(
        selection_data: *mut GtkSelectionData,
        tree_model: *mut GtkTreeModel,
        path: *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_true() -> gboolean;

}
