// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files.git)
// 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(feature = "dox", feature(doc_cfg))]

use cairo_sys as cairo;
use gdk4_sys as gdk;
use gdk_pixbuf_sys as gdk_pixbuf;
use gio_sys as gio;
use glib_sys as glib;
use gobject_sys as gobject;
use graphene_sys as graphene;
use gsk4_sys as gsk;
use pango_sys as pango;

#[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, time_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;

// Enums
pub type GtkAccessibleAutocomplete = c_int;
pub const GTK_ACCESSIBLE_AUTOCOMPLETE_NONE: GtkAccessibleAutocomplete = 0;
pub const GTK_ACCESSIBLE_AUTOCOMPLETE_INLINE: GtkAccessibleAutocomplete = 1;
pub const GTK_ACCESSIBLE_AUTOCOMPLETE_LIST: GtkAccessibleAutocomplete = 2;
pub const GTK_ACCESSIBLE_AUTOCOMPLETE_BOTH: GtkAccessibleAutocomplete = 3;

pub type GtkAccessibleInvalidState = c_int;
pub const GTK_ACCESSIBLE_INVALID_FALSE: GtkAccessibleInvalidState = 0;
pub const GTK_ACCESSIBLE_INVALID_TRUE: GtkAccessibleInvalidState = 1;
pub const GTK_ACCESSIBLE_INVALID_GRAMMAR: GtkAccessibleInvalidState = 2;
pub const GTK_ACCESSIBLE_INVALID_SPELLING: GtkAccessibleInvalidState = 3;

pub type GtkAccessibleProperty = c_int;
pub const GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE: GtkAccessibleProperty = 0;
pub const GTK_ACCESSIBLE_PROPERTY_DESCRIPTION: GtkAccessibleProperty = 1;
pub const GTK_ACCESSIBLE_PROPERTY_HAS_POPUP: GtkAccessibleProperty = 2;
pub const GTK_ACCESSIBLE_PROPERTY_KEY_SHORTCUTS: GtkAccessibleProperty = 3;
pub const GTK_ACCESSIBLE_PROPERTY_LABEL: GtkAccessibleProperty = 4;
pub const GTK_ACCESSIBLE_PROPERTY_LEVEL: GtkAccessibleProperty = 5;
pub const GTK_ACCESSIBLE_PROPERTY_MODAL: GtkAccessibleProperty = 6;
pub const GTK_ACCESSIBLE_PROPERTY_MULTI_LINE: GtkAccessibleProperty = 7;
pub const GTK_ACCESSIBLE_PROPERTY_MULTI_SELECTABLE: GtkAccessibleProperty = 8;
pub const GTK_ACCESSIBLE_PROPERTY_ORIENTATION: GtkAccessibleProperty = 9;
pub const GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER: GtkAccessibleProperty = 10;
pub const GTK_ACCESSIBLE_PROPERTY_READ_ONLY: GtkAccessibleProperty = 11;
pub const GTK_ACCESSIBLE_PROPERTY_REQUIRED: GtkAccessibleProperty = 12;
pub const GTK_ACCESSIBLE_PROPERTY_ROLE_DESCRIPTION: GtkAccessibleProperty = 13;
pub const GTK_ACCESSIBLE_PROPERTY_SORT: GtkAccessibleProperty = 14;
pub const GTK_ACCESSIBLE_PROPERTY_VALUE_MAX: GtkAccessibleProperty = 15;
pub const GTK_ACCESSIBLE_PROPERTY_VALUE_MIN: GtkAccessibleProperty = 16;
pub const GTK_ACCESSIBLE_PROPERTY_VALUE_NOW: GtkAccessibleProperty = 17;
pub const GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT: GtkAccessibleProperty = 18;

pub type GtkAccessibleRelation = c_int;
pub const GTK_ACCESSIBLE_RELATION_ACTIVE_DESCENDANT: GtkAccessibleRelation = 0;
pub const GTK_ACCESSIBLE_RELATION_COL_COUNT: GtkAccessibleRelation = 1;
pub const GTK_ACCESSIBLE_RELATION_COL_INDEX: GtkAccessibleRelation = 2;
pub const GTK_ACCESSIBLE_RELATION_COL_INDEX_TEXT: GtkAccessibleRelation = 3;
pub const GTK_ACCESSIBLE_RELATION_COL_SPAN: GtkAccessibleRelation = 4;
pub const GTK_ACCESSIBLE_RELATION_CONTROLS: GtkAccessibleRelation = 5;
pub const GTK_ACCESSIBLE_RELATION_DESCRIBED_BY: GtkAccessibleRelation = 6;
pub const GTK_ACCESSIBLE_RELATION_DETAILS: GtkAccessibleRelation = 7;
pub const GTK_ACCESSIBLE_RELATION_ERROR_MESSAGE: GtkAccessibleRelation = 8;
pub const GTK_ACCESSIBLE_RELATION_FLOW_TO: GtkAccessibleRelation = 9;
pub const GTK_ACCESSIBLE_RELATION_LABELLED_BY: GtkAccessibleRelation = 10;
pub const GTK_ACCESSIBLE_RELATION_OWNS: GtkAccessibleRelation = 11;
pub const GTK_ACCESSIBLE_RELATION_POS_IN_SET: GtkAccessibleRelation = 12;
pub const GTK_ACCESSIBLE_RELATION_ROW_COUNT: GtkAccessibleRelation = 13;
pub const GTK_ACCESSIBLE_RELATION_ROW_INDEX: GtkAccessibleRelation = 14;
pub const GTK_ACCESSIBLE_RELATION_ROW_INDEX_TEXT: GtkAccessibleRelation = 15;
pub const GTK_ACCESSIBLE_RELATION_ROW_SPAN: GtkAccessibleRelation = 16;
pub const GTK_ACCESSIBLE_RELATION_SET_SIZE: GtkAccessibleRelation = 17;

pub type GtkAccessibleRole = c_int;
pub const GTK_ACCESSIBLE_ROLE_ALERT: GtkAccessibleRole = 0;
pub const GTK_ACCESSIBLE_ROLE_ALERT_DIALOG: GtkAccessibleRole = 1;
pub const GTK_ACCESSIBLE_ROLE_BANNER: GtkAccessibleRole = 2;
pub const GTK_ACCESSIBLE_ROLE_BUTTON: GtkAccessibleRole = 3;
pub const GTK_ACCESSIBLE_ROLE_CAPTION: GtkAccessibleRole = 4;
pub const GTK_ACCESSIBLE_ROLE_CELL: GtkAccessibleRole = 5;
pub const GTK_ACCESSIBLE_ROLE_CHECKBOX: GtkAccessibleRole = 6;
pub const GTK_ACCESSIBLE_ROLE_COLUMN_HEADER: GtkAccessibleRole = 7;
pub const GTK_ACCESSIBLE_ROLE_COMBO_BOX: GtkAccessibleRole = 8;
pub const GTK_ACCESSIBLE_ROLE_COMMAND: GtkAccessibleRole = 9;
pub const GTK_ACCESSIBLE_ROLE_COMPOSITE: GtkAccessibleRole = 10;
pub const GTK_ACCESSIBLE_ROLE_DIALOG: GtkAccessibleRole = 11;
pub const GTK_ACCESSIBLE_ROLE_DOCUMENT: GtkAccessibleRole = 12;
pub const GTK_ACCESSIBLE_ROLE_FEED: GtkAccessibleRole = 13;
pub const GTK_ACCESSIBLE_ROLE_FORM: GtkAccessibleRole = 14;
pub const GTK_ACCESSIBLE_ROLE_GENERIC: GtkAccessibleRole = 15;
pub const GTK_ACCESSIBLE_ROLE_GRID: GtkAccessibleRole = 16;
pub const GTK_ACCESSIBLE_ROLE_GRID_CELL: GtkAccessibleRole = 17;
pub const GTK_ACCESSIBLE_ROLE_GROUP: GtkAccessibleRole = 18;
pub const GTK_ACCESSIBLE_ROLE_HEADING: GtkAccessibleRole = 19;
pub const GTK_ACCESSIBLE_ROLE_IMG: GtkAccessibleRole = 20;
pub const GTK_ACCESSIBLE_ROLE_INPUT: GtkAccessibleRole = 21;
pub const GTK_ACCESSIBLE_ROLE_LABEL: GtkAccessibleRole = 22;
pub const GTK_ACCESSIBLE_ROLE_LANDMARK: GtkAccessibleRole = 23;
pub const GTK_ACCESSIBLE_ROLE_LEGEND: GtkAccessibleRole = 24;
pub const GTK_ACCESSIBLE_ROLE_LINK: GtkAccessibleRole = 25;
pub const GTK_ACCESSIBLE_ROLE_LIST: GtkAccessibleRole = 26;
pub const GTK_ACCESSIBLE_ROLE_LIST_BOX: GtkAccessibleRole = 27;
pub const GTK_ACCESSIBLE_ROLE_LIST_ITEM: GtkAccessibleRole = 28;
pub const GTK_ACCESSIBLE_ROLE_LOG: GtkAccessibleRole = 29;
pub const GTK_ACCESSIBLE_ROLE_MAIN: GtkAccessibleRole = 30;
pub const GTK_ACCESSIBLE_ROLE_MARQUEE: GtkAccessibleRole = 31;
pub const GTK_ACCESSIBLE_ROLE_MATH: GtkAccessibleRole = 32;
pub const GTK_ACCESSIBLE_ROLE_METER: GtkAccessibleRole = 33;
pub const GTK_ACCESSIBLE_ROLE_MENU: GtkAccessibleRole = 34;
pub const GTK_ACCESSIBLE_ROLE_MENU_BAR: GtkAccessibleRole = 35;
pub const GTK_ACCESSIBLE_ROLE_MENU_ITEM: GtkAccessibleRole = 36;
pub const GTK_ACCESSIBLE_ROLE_MENU_ITEM_CHECKBOX: GtkAccessibleRole = 37;
pub const GTK_ACCESSIBLE_ROLE_MENU_ITEM_RADIO: GtkAccessibleRole = 38;
pub const GTK_ACCESSIBLE_ROLE_NAVIGATION: GtkAccessibleRole = 39;
pub const GTK_ACCESSIBLE_ROLE_NONE: GtkAccessibleRole = 40;
pub const GTK_ACCESSIBLE_ROLE_NOTE: GtkAccessibleRole = 41;
pub const GTK_ACCESSIBLE_ROLE_OPTION: GtkAccessibleRole = 42;
pub const GTK_ACCESSIBLE_ROLE_PRESENTATION: GtkAccessibleRole = 43;
pub const GTK_ACCESSIBLE_ROLE_PROGRESS_BAR: GtkAccessibleRole = 44;
pub const GTK_ACCESSIBLE_ROLE_RADIO: GtkAccessibleRole = 45;
pub const GTK_ACCESSIBLE_ROLE_RADIO_GROUP: GtkAccessibleRole = 46;
pub const GTK_ACCESSIBLE_ROLE_RANGE: GtkAccessibleRole = 47;
pub const GTK_ACCESSIBLE_ROLE_REGION: GtkAccessibleRole = 48;
pub const GTK_ACCESSIBLE_ROLE_ROW: GtkAccessibleRole = 49;
pub const GTK_ACCESSIBLE_ROLE_ROW_GROUP: GtkAccessibleRole = 50;
pub const GTK_ACCESSIBLE_ROLE_ROW_HEADER: GtkAccessibleRole = 51;
pub const GTK_ACCESSIBLE_ROLE_SCROLLBAR: GtkAccessibleRole = 52;
pub const GTK_ACCESSIBLE_ROLE_SEARCH: GtkAccessibleRole = 53;
pub const GTK_ACCESSIBLE_ROLE_SEARCH_BOX: GtkAccessibleRole = 54;
pub const GTK_ACCESSIBLE_ROLE_SECTION: GtkAccessibleRole = 55;
pub const GTK_ACCESSIBLE_ROLE_SECTION_HEAD: GtkAccessibleRole = 56;
pub const GTK_ACCESSIBLE_ROLE_SELECT: GtkAccessibleRole = 57;
pub const GTK_ACCESSIBLE_ROLE_SEPARATOR: GtkAccessibleRole = 58;
pub const GTK_ACCESSIBLE_ROLE_SLIDER: GtkAccessibleRole = 59;
pub const GTK_ACCESSIBLE_ROLE_SPIN_BUTTON: GtkAccessibleRole = 60;
pub const GTK_ACCESSIBLE_ROLE_STATUS: GtkAccessibleRole = 61;
pub const GTK_ACCESSIBLE_ROLE_STRUCTURE: GtkAccessibleRole = 62;
pub const GTK_ACCESSIBLE_ROLE_SWITCH: GtkAccessibleRole = 63;
pub const GTK_ACCESSIBLE_ROLE_TAB: GtkAccessibleRole = 64;
pub const GTK_ACCESSIBLE_ROLE_TABLE: GtkAccessibleRole = 65;
pub const GTK_ACCESSIBLE_ROLE_TAB_LIST: GtkAccessibleRole = 66;
pub const GTK_ACCESSIBLE_ROLE_TAB_PANEL: GtkAccessibleRole = 67;
pub const GTK_ACCESSIBLE_ROLE_TEXT_BOX: GtkAccessibleRole = 68;
pub const GTK_ACCESSIBLE_ROLE_TIME: GtkAccessibleRole = 69;
pub const GTK_ACCESSIBLE_ROLE_TIMER: GtkAccessibleRole = 70;
pub const GTK_ACCESSIBLE_ROLE_TOOLBAR: GtkAccessibleRole = 71;
pub const GTK_ACCESSIBLE_ROLE_TOOLTIP: GtkAccessibleRole = 72;
pub const GTK_ACCESSIBLE_ROLE_TREE: GtkAccessibleRole = 73;
pub const GTK_ACCESSIBLE_ROLE_TREE_GRID: GtkAccessibleRole = 74;
pub const GTK_ACCESSIBLE_ROLE_TREE_ITEM: GtkAccessibleRole = 75;
pub const GTK_ACCESSIBLE_ROLE_WIDGET: GtkAccessibleRole = 76;
pub const GTK_ACCESSIBLE_ROLE_WINDOW: GtkAccessibleRole = 77;

pub type GtkAccessibleSort = c_int;
pub const GTK_ACCESSIBLE_SORT_NONE: GtkAccessibleSort = 0;
pub const GTK_ACCESSIBLE_SORT_ASCENDING: GtkAccessibleSort = 1;
pub const GTK_ACCESSIBLE_SORT_DESCENDING: GtkAccessibleSort = 2;
pub const GTK_ACCESSIBLE_SORT_OTHER: GtkAccessibleSort = 3;

pub type GtkAccessibleState = c_int;
pub const GTK_ACCESSIBLE_STATE_BUSY: GtkAccessibleState = 0;
pub const GTK_ACCESSIBLE_STATE_CHECKED: GtkAccessibleState = 1;
pub const GTK_ACCESSIBLE_STATE_DISABLED: GtkAccessibleState = 2;
pub const GTK_ACCESSIBLE_STATE_EXPANDED: GtkAccessibleState = 3;
pub const GTK_ACCESSIBLE_STATE_HIDDEN: GtkAccessibleState = 4;
pub const GTK_ACCESSIBLE_STATE_INVALID: GtkAccessibleState = 5;
pub const GTK_ACCESSIBLE_STATE_PRESSED: GtkAccessibleState = 6;
pub const GTK_ACCESSIBLE_STATE_SELECTED: GtkAccessibleState = 7;

pub type GtkAccessibleTristate = c_int;
pub const GTK_ACCESSIBLE_TRISTATE_FALSE: GtkAccessibleTristate = 0;
pub const GTK_ACCESSIBLE_TRISTATE_TRUE: GtkAccessibleTristate = 1;
pub const GTK_ACCESSIBLE_TRISTATE_MIXED: GtkAccessibleTristate = 2;

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 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_HIDDEN: GtkBorderStyle = 1;
pub const GTK_BORDER_STYLE_SOLID: GtkBorderStyle = 2;
pub const GTK_BORDER_STYLE_INSET: GtkBorderStyle = 3;
pub const GTK_BORDER_STYLE_OUTSET: 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 const GTK_BUILDER_ERROR_INVALID_FUNCTION: GtkBuilderError = 14;

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 GtkConstraintAttribute = c_int;
pub const GTK_CONSTRAINT_ATTRIBUTE_NONE: GtkConstraintAttribute = 0;
pub const GTK_CONSTRAINT_ATTRIBUTE_LEFT: GtkConstraintAttribute = 1;
pub const GTK_CONSTRAINT_ATTRIBUTE_RIGHT: GtkConstraintAttribute = 2;
pub const GTK_CONSTRAINT_ATTRIBUTE_TOP: GtkConstraintAttribute = 3;
pub const GTK_CONSTRAINT_ATTRIBUTE_BOTTOM: GtkConstraintAttribute = 4;
pub const GTK_CONSTRAINT_ATTRIBUTE_START: GtkConstraintAttribute = 5;
pub const GTK_CONSTRAINT_ATTRIBUTE_END: GtkConstraintAttribute = 6;
pub const GTK_CONSTRAINT_ATTRIBUTE_WIDTH: GtkConstraintAttribute = 7;
pub const GTK_CONSTRAINT_ATTRIBUTE_HEIGHT: GtkConstraintAttribute = 8;
pub const GTK_CONSTRAINT_ATTRIBUTE_CENTER_X: GtkConstraintAttribute = 9;
pub const GTK_CONSTRAINT_ATTRIBUTE_CENTER_Y: GtkConstraintAttribute = 10;
pub const GTK_CONSTRAINT_ATTRIBUTE_BASELINE: GtkConstraintAttribute = 11;

pub type GtkConstraintRelation = c_int;
pub const GTK_CONSTRAINT_RELATION_LE: GtkConstraintRelation = -1;
pub const GTK_CONSTRAINT_RELATION_EQ: GtkConstraintRelation = 0;
pub const GTK_CONSTRAINT_RELATION_GE: GtkConstraintRelation = 1;

pub type GtkConstraintStrength = c_int;
pub const GTK_CONSTRAINT_STRENGTH_REQUIRED: GtkConstraintStrength = 1001001000;
pub const GTK_CONSTRAINT_STRENGTH_STRONG: GtkConstraintStrength = 1000000000;
pub const GTK_CONSTRAINT_STRENGTH_MEDIUM: GtkConstraintStrength = 1000;
pub const GTK_CONSTRAINT_STRENGTH_WEAK: GtkConstraintStrength = 1;

pub type GtkConstraintVflParserError = c_int;
pub const GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_SYMBOL: GtkConstraintVflParserError = 0;
pub const GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_ATTRIBUTE: GtkConstraintVflParserError = 1;
pub const GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_VIEW: GtkConstraintVflParserError = 2;
pub const GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_METRIC: GtkConstraintVflParserError = 3;
pub const GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_PRIORITY: GtkConstraintVflParserError = 4;
pub const GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_RELATION: GtkConstraintVflParserError = 5;

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 GtkCssParserError = c_int;
pub const GTK_CSS_PARSER_ERROR_FAILED: GtkCssParserError = 0;
pub const GTK_CSS_PARSER_ERROR_SYNTAX: GtkCssParserError = 1;
pub const GTK_CSS_PARSER_ERROR_IMPORT: GtkCssParserError = 2;
pub const GTK_CSS_PARSER_ERROR_NAME: GtkCssParserError = 3;
pub const GTK_CSS_PARSER_ERROR_UNKNOWN_VALUE: GtkCssParserError = 4;

pub type GtkCssParserWarning = c_int;
pub const GTK_CSS_PARSER_WARNING_DEPRECATED: GtkCssParserWarning = 0;
pub const GTK_CSS_PARSER_WARNING_SYNTAX: GtkCssParserWarning = 1;
pub const GTK_CSS_PARSER_WARNING_UNIMPLEMENTED: GtkCssParserWarning = 2;

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 GtkEditableProperties = c_int;
pub const GTK_EDITABLE_PROP_TEXT: GtkEditableProperties = 0;
pub const GTK_EDITABLE_PROP_CURSOR_POSITION: GtkEditableProperties = 1;
pub const GTK_EDITABLE_PROP_SELECTION_BOUND: GtkEditableProperties = 2;
pub const GTK_EDITABLE_PROP_EDITABLE: GtkEditableProperties = 3;
pub const GTK_EDITABLE_PROP_WIDTH_CHARS: GtkEditableProperties = 4;
pub const GTK_EDITABLE_PROP_MAX_WIDTH_CHARS: GtkEditableProperties = 5;
pub const GTK_EDITABLE_PROP_XALIGN: GtkEditableProperties = 6;
pub const GTK_EDITABLE_PROP_ENABLE_UNDO: GtkEditableProperties = 7;
pub const GTK_EDITABLE_NUM_PROPERTIES: GtkEditableProperties = 8;

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 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 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 GtkFilterChange = c_int;
pub const GTK_FILTER_CHANGE_DIFFERENT: GtkFilterChange = 0;
pub const GTK_FILTER_CHANGE_LESS_STRICT: GtkFilterChange = 1;
pub const GTK_FILTER_CHANGE_MORE_STRICT: GtkFilterChange = 2;

pub type GtkFilterMatch = c_int;
pub const GTK_FILTER_MATCH_SOME: GtkFilterMatch = 0;
pub const GTK_FILTER_MATCH_NONE: GtkFilterMatch = 1;
pub const GTK_FILTER_MATCH_ALL: GtkFilterMatch = 2;

pub type GtkIconSize = c_int;
pub const GTK_ICON_SIZE_INHERIT: GtkIconSize = 0;
pub const GTK_ICON_SIZE_NORMAL: GtkIconSize = 1;
pub const GTK_ICON_SIZE_LARGE: GtkIconSize = 2;

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_ICON_NAME: GtkImageType = 1;
pub const GTK_IMAGE_GICON: GtkImageType = 2;
pub const GTK_IMAGE_PAINTABLE: GtkImageType = 3;

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 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 GtkOrdering = c_int;
pub const GTK_ORDERING_SMALLER: GtkOrdering = -1;
pub const GTK_ORDERING_EQUAL: GtkOrdering = 0;
pub const GTK_ORDERING_LARGER: GtkOrdering = 1;

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

pub type GtkOverflow = c_int;
pub const GTK_OVERFLOW_VISIBLE: GtkOverflow = 0;
pub const GTK_OVERFLOW_HIDDEN: GtkOverflow = 1;

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 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 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 GtkPropagationLimit = c_int;
pub const GTK_LIMIT_NONE: GtkPropagationLimit = 0;
pub const GTK_LIMIT_SAME_NATIVE: GtkPropagationLimit = 1;

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 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 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 const GTK_REVEALER_TRANSITION_TYPE_SWING_RIGHT: GtkRevealerTransitionType = 6;
pub const GTK_REVEALER_TRANSITION_TYPE_SWING_LEFT: GtkRevealerTransitionType = 7;
pub const GTK_REVEALER_TRANSITION_TYPE_SWING_UP: GtkRevealerTransitionType = 8;
pub const GTK_REVEALER_TRANSITION_TYPE_SWING_DOWN: GtkRevealerTransitionType = 9;

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 GtkShortcutScope = c_int;
pub const GTK_SHORTCUT_SCOPE_LOCAL: GtkShortcutScope = 0;
pub const GTK_SHORTCUT_SCOPE_MANAGED: GtkShortcutScope = 1;
pub const GTK_SHORTCUT_SCOPE_GLOBAL: GtkShortcutScope = 2;

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 const GTK_SHORTCUT_GESTURE_SWIPE_LEFT: GtkShortcutType = 8;
pub const GTK_SHORTCUT_GESTURE_SWIPE_RIGHT: GtkShortcutType = 9;

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 GtkSorterChange = c_int;
pub const GTK_SORTER_CHANGE_DIFFERENT: GtkSorterChange = 0;
pub const GTK_SORTER_CHANGE_INVERTED: GtkSorterChange = 1;
pub const GTK_SORTER_CHANGE_LESS_STRICT: GtkSorterChange = 2;
pub const GTK_SORTER_CHANGE_MORE_STRICT: GtkSorterChange = 3;

pub type GtkSorterOrder = c_int;
pub const GTK_SORTER_ORDER_PARTIAL: GtkSorterOrder = 0;
pub const GTK_SORTER_ORDER_NONE: GtkSorterOrder = 1;
pub const GTK_SORTER_ORDER_TOTAL: GtkSorterOrder = 2;

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 const GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT: GtkStackTransitionType = 20;
pub const GTK_STACK_TRANSITION_TYPE_ROTATE_RIGHT: GtkStackTransitionType = 21;
pub const GTK_STACK_TRANSITION_TYPE_ROTATE_LEFT_RIGHT: GtkStackTransitionType = 22;

pub type GtkStringFilterMatchMode = c_int;
pub const GTK_STRING_FILTER_MATCH_MODE_EXACT: GtkStringFilterMatchMode = 0;
pub const GTK_STRING_FILTER_MATCH_MODE_SUBSTRING: GtkStringFilterMatchMode = 1;
pub const GTK_STRING_FILTER_MATCH_MODE_PREFIX: GtkStringFilterMatchMode = 2;

pub type GtkSystemSetting = c_int;
pub const GTK_SYSTEM_SETTING_DPI: GtkSystemSetting = 0;
pub const GTK_SYSTEM_SETTING_FONT_NAME: GtkSystemSetting = 1;
pub const GTK_SYSTEM_SETTING_FONT_CONFIG: GtkSystemSetting = 2;
pub const GTK_SYSTEM_SETTING_DISPLAY: GtkSystemSetting = 3;
pub const GTK_SYSTEM_SETTING_ICON_THEME: GtkSystemSetting = 4;

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_TEXT: GtkTextViewLayer = 0;
pub const GTK_TEXT_VIEW_LAYER_ABOVE_TEXT: GtkTextViewLayer = 1;

pub type GtkTextWindowType = c_int;
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 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 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_ACCESSIBLE_VALUE_UNDEFINED: c_int = -1;
pub const GTK_IM_MODULE_EXTENSION_POINT_NAME: *const c_char =
    b"gtk-im-module\0" as *const u8 as *const c_char;
pub const GTK_INPUT_ERROR: c_int = -1;
pub const GTK_LEVEL_BAR_OFFSET_FULL: *const c_char = b"full\0" as *const u8 as *const c_char;
pub const GTK_LEVEL_BAR_OFFSET_HIGH: *const c_char = b"high\0" as *const u8 as *const c_char;
pub const GTK_LEVEL_BAR_OFFSET_LOW: *const c_char = b"low\0" as *const u8 as *const c_char;
pub const GTK_MAX_COMPOSE_LEN: c_int = 7;
pub const GTK_MEDIA_FILE_EXTENSION_POINT_NAME: *const c_char =
    b"gtk-media-file\0" as *const u8 as *const c_char;
pub const GTK_PAPER_NAME_A3: *const c_char = b"iso_a3\0" as *const u8 as *const c_char;
pub const GTK_PAPER_NAME_A4: *const c_char = b"iso_a4\0" as *const u8 as *const c_char;
pub const GTK_PAPER_NAME_A5: *const c_char = b"iso_a5\0" as *const u8 as *const c_char;
pub const GTK_PAPER_NAME_B5: *const c_char = b"iso_b5\0" as *const u8 as *const c_char;
pub const GTK_PAPER_NAME_EXECUTIVE: *const c_char = b"na_executive\0" as *const u8 as *const c_char;
pub const GTK_PAPER_NAME_LEGAL: *const c_char = b"na_legal\0" as *const u8 as *const c_char;
pub const GTK_PAPER_NAME_LETTER: *const c_char = b"na_letter\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_COLLATE: *const c_char = b"collate\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_DEFAULT_SOURCE: *const c_char =
    b"default-source\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_DITHER: *const c_char = b"dither\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_DUPLEX: *const c_char = b"duplex\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_FINISHINGS: *const c_char =
    b"finishings\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_MEDIA_TYPE: *const c_char =
    b"media-type\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_NUMBER_UP: *const c_char =
    b"number-up\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_NUMBER_UP_LAYOUT: *const c_char =
    b"number-up-layout\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_N_COPIES: *const c_char = b"n-copies\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_ORIENTATION: *const c_char =
    b"orientation\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_OUTPUT_BASENAME: *const c_char =
    b"output-basename\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_OUTPUT_BIN: *const c_char =
    b"output-bin\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_OUTPUT_DIR: *const c_char =
    b"output-dir\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_OUTPUT_FILE_FORMAT: *const c_char =
    b"output-file-format\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_OUTPUT_URI: *const c_char =
    b"output-uri\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_PAGE_RANGES: *const c_char =
    b"page-ranges\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_PAGE_SET: *const c_char = b"page-set\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_PAPER_FORMAT: *const c_char =
    b"paper-format\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_PAPER_HEIGHT: *const c_char =
    b"paper-height\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_PAPER_WIDTH: *const c_char =
    b"paper-width\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_PRINTER: *const c_char = b"printer\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_PRINTER_LPI: *const c_char =
    b"printer-lpi\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_PRINT_PAGES: *const c_char =
    b"print-pages\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_QUALITY: *const c_char = b"quality\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_RESOLUTION: *const c_char =
    b"resolution\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_RESOLUTION_X: *const c_char =
    b"resolution-x\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_RESOLUTION_Y: *const c_char =
    b"resolution-y\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_REVERSE: *const c_char = b"reverse\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_SCALE: *const c_char = b"scale\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_USE_COLOR: *const c_char =
    b"use-color\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_WIN32_DRIVER_EXTRA: *const c_char =
    b"win32-driver-extra\0" as *const u8 as *const c_char;
pub const GTK_PRINT_SETTINGS_WIN32_DRIVER_VERSION: *const c_char =
    b"win32-driver-version\0" as *const u8 as *const c_char;
pub const GTK_PRIORITY_RESIZE: c_int = 110;
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_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 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 GtkBuilderClosureFlags = c_uint;
pub const GTK_BUILDER_CLOSURE_SWAPPED: GtkBuilderClosureFlags = 1;

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 GtkDebugFlags = c_uint;
pub const GTK_DEBUG_TEXT: GtkDebugFlags = 1;
pub const GTK_DEBUG_TREE: GtkDebugFlags = 2;
pub const GTK_DEBUG_KEYBINDINGS: GtkDebugFlags = 4;
pub const GTK_DEBUG_MODULES: GtkDebugFlags = 8;
pub const GTK_DEBUG_GEOMETRY: GtkDebugFlags = 16;
pub const GTK_DEBUG_ICONTHEME: GtkDebugFlags = 32;
pub const GTK_DEBUG_PRINTING: GtkDebugFlags = 64;
pub const GTK_DEBUG_BUILDER: GtkDebugFlags = 128;
pub const GTK_DEBUG_SIZE_REQUEST: GtkDebugFlags = 256;
pub const GTK_DEBUG_NO_CSS_CACHE: GtkDebugFlags = 512;
pub const GTK_DEBUG_INTERACTIVE: GtkDebugFlags = 1024;
pub const GTK_DEBUG_TOUCHSCREEN: GtkDebugFlags = 2048;
pub const GTK_DEBUG_ACTIONS: GtkDebugFlags = 4096;
pub const GTK_DEBUG_LAYOUT: GtkDebugFlags = 8192;
pub const GTK_DEBUG_SNAPSHOT: GtkDebugFlags = 16384;
pub const GTK_DEBUG_CONSTRAINTS: GtkDebugFlags = 32768;
pub const GTK_DEBUG_BUILDER_OBJECTS: GtkDebugFlags = 65536;
pub const GTK_DEBUG_A11Y: GtkDebugFlags = 131072;

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 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_FORCE_REGULAR: GtkIconLookupFlags = 1;
pub const GTK_ICON_LOOKUP_FORCE_SYMBOLIC: GtkIconLookupFlags = 2;
pub const GTK_ICON_LOOKUP_PRELOAD: GtkIconLookupFlags = 4;

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 const GTK_INPUT_HINT_PRIVATE: GtkInputHints = 2048;

pub type GtkPickFlags = c_uint;
pub const GTK_PICK_DEFAULT: GtkPickFlags = 0;
pub const GTK_PICK_INSENSITIVE: GtkPickFlags = 1;
pub const GTK_PICK_NON_TARGETABLE: GtkPickFlags = 2;

pub type GtkPopoverMenuFlags = c_uint;
pub const GTK_POPOVER_MENU_NESTED: GtkPopoverMenuFlags = 1;

pub type GtkPrintCapabilities = c_uint;
pub const GTK_PRINT_CAPABILITY_PAGE_SET: GtkPrintCapabilities = 1;
pub const GTK_PRINT_CAPABILITY_COPIES: GtkPrintCapabilities = 2;
pub const GTK_PRINT_CAPABILITY_COLLATE: GtkPrintCapabilities = 4;
pub const GTK_PRINT_CAPABILITY_REVERSE: GtkPrintCapabilities = 8;
pub const GTK_PRINT_CAPABILITY_SCALE: GtkPrintCapabilities = 16;
pub const GTK_PRINT_CAPABILITY_GENERATE_PDF: GtkPrintCapabilities = 32;
pub const GTK_PRINT_CAPABILITY_GENERATE_PS: GtkPrintCapabilities = 64;
pub const GTK_PRINT_CAPABILITY_PREVIEW: GtkPrintCapabilities = 128;
pub const GTK_PRINT_CAPABILITY_NUMBER_UP: GtkPrintCapabilities = 256;
pub const GTK_PRINT_CAPABILITY_NUMBER_UP_LAYOUT: GtkPrintCapabilities = 512;

pub type GtkShortcutActionFlags = c_uint;
pub const GTK_SHORTCUT_ACTION_EXCLUSIVE: GtkShortcutActionFlags = 1;

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 const GTK_STATE_FLAG_FOCUS_VISIBLE: GtkStateFlags = 8192;
pub const GTK_STATE_FLAG_FOCUS_WITHIN: GtkStateFlags = 16384;

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 const GTK_STYLE_CONTEXT_PRINT_SHOW_CHANGE: GtkStyleContextPrintFlags = 4;

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 GtkTreeModelFlags = c_uint;
pub const GTK_TREE_MODEL_ITERS_PERSIST: GtkTreeModelFlags = 1;
pub const GTK_TREE_MODEL_LIST_ONLY: GtkTreeModelFlags = 2;

// Callbacks
pub type GtkAssistantPageFunc = Option<unsafe extern "C" fn(c_int, gpointer) -> c_int>;
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 GtkCustomAllocateFunc = Option<unsafe extern "C" fn(*mut GtkWidget, c_int, c_int, c_int)>;
pub type GtkCustomFilterFunc =
    Option<unsafe extern "C" fn(*mut gobject::GObject, gpointer) -> gboolean>;
pub type GtkCustomMeasureFunc = Option<
    unsafe extern "C" fn(
        *mut GtkWidget,
        GtkOrientation,
        c_int,
        *mut c_int,
        *mut c_int,
        *mut c_int,
        *mut c_int,
    ),
>;
pub type GtkCustomRequestModeFunc =
    Option<unsafe extern "C" fn(*mut GtkWidget) -> GtkSizeRequestMode>;
pub type GtkDrawingAreaDrawFunc =
    Option<unsafe extern "C" fn(*mut GtkDrawingArea, *mut cairo::cairo_t, c_int, c_int, gpointer)>;
pub type GtkEntryCompletionMatchFunc = Option<
    unsafe extern "C" fn(
        *mut GtkEntryCompletion,
        *const c_char,
        *mut GtkTreeIter,
        gpointer,
    ) -> gboolean,
>;
pub type GtkExpressionNotify = Option<unsafe extern "C" fn(gpointer)>;
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 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 GtkMapListModelMapFunc =
    Option<unsafe extern "C" fn(*mut gobject::GObject, gpointer) -> *mut gobject::GObject>;
pub type GtkMenuButtonCreatePopupFunc = Option<unsafe extern "C" fn(*mut GtkMenuButton, gpointer)>;
pub type GtkPageSetupDoneFunc = Option<unsafe extern "C" fn(*mut GtkPageSetup, gpointer)>;
pub type GtkPrintJobCompleteFunc =
    Option<unsafe extern "C" fn(*mut GtkPrintJob, gpointer, *const glib::GError)>;
pub type GtkPrintSettingsFunc =
    Option<unsafe extern "C" fn(*const c_char, *const c_char, gpointer)>;
pub type GtkPrinterFunc = Option<unsafe extern "C" fn(*mut GtkPrinter, gpointer) -> gboolean>;
pub type GtkScaleFormatValueFunc =
    Option<unsafe extern "C" fn(*mut GtkScale, c_double, gpointer) -> *mut c_char>;
pub type GtkShortcutFunc =
    Option<unsafe extern "C" fn(*mut GtkWidget, *mut glib::GVariant, gpointer) -> gboolean>;
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 GtkTreeCellDataFunc = Option<
    unsafe extern "C" fn(
        *mut GtkTreeViewColumn,
        *mut GtkCellRenderer,
        *mut GtkTreeModel,
        *mut GtkTreeIter,
        gpointer,
    ),
>;
pub type GtkTreeIterCompareFunc = Option<
    unsafe extern "C" fn(*mut GtkTreeModel, *mut GtkTreeIter, *mut GtkTreeIter, gpointer) -> c_int,
>;
pub type GtkTreeListModelCreateModelFunc =
    Option<unsafe extern "C" fn(*mut gobject::GObject, gpointer) -> *mut gio::GListModel>;
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 GtkWidgetActionActivateFunc =
    Option<unsafe extern "C" fn(*mut GtkWidget, *const c_char, *mut glib::GVariant)>;

// Records
#[repr(C)]
pub struct _GtkATContextClass(c_void);

pub type GtkATContextClass = *mut _GtkATContextClass;

#[repr(C)]
pub struct _GtkAccessibleInterface(c_void);

pub type GtkAccessibleInterface = *mut _GtkAccessibleInterface;

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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()
    }
}

#[repr(C)]
pub struct _GtkActivateActionClass(c_void);

pub type GtkActivateActionClass = *mut _GtkActivateActionClass;

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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 _GtkAlternativeTriggerClass(c_void);

pub type GtkAlternativeTriggerClass = *mut _GtkAlternativeTriggerClass;

#[repr(C)]
pub struct _GtkAnyFilterClass(c_void);

pub type GtkAnyFilterClass = *mut _GtkAnyFilterClass;

#[repr(C)]
#[derive(Copy, Clone)]
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; 8],
}

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

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

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

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

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

#[repr(C)]
pub struct GtkBitset(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkBitsetIter {
    pub private_data: [gpointer; 10],
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkBookmarkListClass {
    pub parent_class: gobject::GObjectClass,
}

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

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

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("left", &self.left)
            .field("right", &self.right)
            .field("top", &self.top)
            .field("bottom", &self.bottom)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkBoxClass {
    pub parent_class: GtkWidgetClass,
    pub padding: [gpointer; 8],
}

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

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

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkBuildableIface {
    pub g_iface: gobject::GTypeInterface,
    pub set_id: Option<unsafe extern "C" fn(*mut GtkBuildable, *const c_char)>,
    pub get_id: 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 GtkBuildableParser,
            *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 @ {:p}", self))
            .field("g_iface", &self.g_iface)
            .field("set_id", &self.set_id)
            .field("get_id", &self.get_id)
            .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()
    }
}

#[repr(C)]
pub struct _GtkBuildableParseContext(c_void);

pub type GtkBuildableParseContext = *mut _GtkBuildableParseContext;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkBuildableParser {
    pub start_element: Option<
        unsafe extern "C" fn(
            *mut GtkBuildableParseContext,
            *const c_char,
            *mut *const c_char,
            *mut *const c_char,
            gpointer,
            *mut *mut glib::GError,
        ),
    >,
    pub end_element: Option<
        unsafe extern "C" fn(
            *mut GtkBuildableParseContext,
            *const c_char,
            gpointer,
            *mut *mut glib::GError,
        ),
    >,
    pub text: Option<
        unsafe extern "C" fn(
            *mut GtkBuildableParseContext,
            *const c_char,
            size_t,
            gpointer,
            *mut *mut glib::GError,
        ),
    >,
    pub error:
        Option<unsafe extern "C" fn(*mut GtkBuildableParseContext, *mut glib::GError, gpointer)>,
    pub padding: [gpointer; 4],
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkBuilderCScopeClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
pub struct _GtkBuilderClass(c_void);

pub type GtkBuilderClass = *mut _GtkBuilderClass;

#[repr(C)]
pub struct _GtkBuilderListItemFactoryClass(c_void);

pub type GtkBuilderListItemFactoryClass = *mut _GtkBuilderListItemFactoryClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkBuilderScopeInterface {
    pub g_iface: gobject::GTypeInterface,
    pub get_type_from_name:
        Option<unsafe extern "C" fn(*mut GtkBuilderScope, *mut GtkBuilder, *const c_char) -> GType>,
    pub get_type_from_function:
        Option<unsafe extern "C" fn(*mut GtkBuilderScope, *mut GtkBuilder, *const c_char) -> GType>,
    pub create_closure: Option<
        unsafe extern "C" fn(
            *mut GtkBuilderScope,
            *mut GtkBuilder,
            *const c_char,
            GtkBuilderClosureFlags,
            *mut gobject::GObject,
            *mut *mut glib::GError,
        ) -> *mut gobject::GClosure,
    >,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkButtonClass {
    pub parent_class: GtkWidgetClass,
    pub clicked: Option<unsafe extern "C" fn(*mut GtkButton)>,
    pub activate: Option<unsafe extern "C" fn(*mut GtkButton)>,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
pub struct _GtkButtonPrivate(c_void);

pub type GtkButtonPrivate = *mut _GtkButtonPrivate;

#[repr(C)]
pub struct _GtkCallbackActionClass(c_void);

pub type GtkCallbackActionClass = *mut _GtkCallbackActionClass;

#[repr(C)]
#[derive(Copy, Clone)]
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 snapshot: Option<
        unsafe extern "C" fn(
            *mut GtkCellArea,
            *mut GtkCellAreaContext,
            *mut GtkWidget,
            *mut GtkSnapshot,
            *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 padding: [gpointer; 8],
}

impl ::std::fmt::Debug for GtkCellAreaClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellAreaClass @ {:p}", self))
            .field("add", &self.add)
            .field("remove", &self.remove)
            .field("foreach", &self.foreach)
            .field("foreach_alloc", &self.foreach_alloc)
            .field("event", &self.event)
            .field("snapshot", &self.snapshot)
            .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)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 padding: [gpointer; 8],
}

impl ::std::fmt::Debug for GtkCellAreaContextClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellAreaContextClass @ {:p}", self))
            .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,
            )
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellAreaContextPrivate(c_void);

pub type GtkCellAreaContextPrivate = *mut _GtkCellAreaContextPrivate;

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("editing_done", &self.editing_done)
            .field("remove_widget", &self.remove_widget)
            .field("start_editing", &self.start_editing)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 snapshot: Option<
        unsafe extern "C" fn(
            *mut GtkCellRenderer,
            *mut GtkSnapshot,
            *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 padding: [gpointer; 8],
}

impl ::std::fmt::Debug for GtkCellRendererClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCellRendererClass @ {:p}", self))
            .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("snapshot", &self.snapshot)
            .field("activate", &self.activate)
            .field("start_editing", &self.start_editing)
            .field("editing_canceled", &self.editing_canceled)
            .field("editing_started", &self.editing_started)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCellRendererClassPrivate(c_void);

pub type GtkCellRendererClassPrivate = *mut _GtkCellRendererClassPrivate;

#[repr(C)]
pub struct _GtkCellRendererPrivate(c_void);

pub type GtkCellRendererPrivate = *mut _GtkCellRendererPrivate;

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

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

#[repr(C)]
pub struct _GtkCenterBoxClass(c_void);

pub type GtkCenterBoxClass = *mut _GtkCenterBoxClass;

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

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkCheckButtonClass {
    pub parent_class: GtkWidgetClass,
    pub toggled: Option<unsafe extern "C" fn(*mut GtkCheckButton)>,
    pub activate: Option<unsafe extern "C" fn(*mut GtkCheckButton)>,
    pub padding: [gpointer; 7],
}

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkColumnViewClass(c_void);

pub type GtkColumnViewClass = *mut _GtkColumnViewClass;

#[repr(C)]
pub struct _GtkColumnViewColumnClass(c_void);

pub type GtkColumnViewColumnClass = *mut _GtkColumnViewColumnClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkComboBoxClass {
    pub parent_class: GtkWidgetClass,
    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 padding: [gpointer; 8],
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkConstraintClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkConstraintGuideClass {
    pub parent_class: gobject::GObjectClass,
}

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

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

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

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

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

#[repr(C)]
pub struct _GtkConstraintTargetInterface(c_void);

pub type GtkConstraintTargetInterface = *mut _GtkConstraintTargetInterface;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkCssLocation {
    pub bytes: size_t,
    pub chars: size_t,
    pub lines: size_t,
    pub line_bytes: size_t,
    pub line_chars: size_t,
}

impl ::std::fmt::Debug for GtkCssLocation {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkCssLocation @ {:p}", self))
            .field("bytes", &self.bytes)
            .field("chars", &self.chars)
            .field("lines", &self.lines)
            .field("line_bytes", &self.line_bytes)
            .field("line_chars", &self.line_chars)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkCssProviderClass(c_void);

pub type GtkCssProviderClass = *mut _GtkCssProviderClass;

#[repr(C)]
pub struct _GtkCssProviderPrivate(c_void);

pub type GtkCssProviderPrivate = *mut _GtkCssProviderPrivate;

#[repr(C)]
pub struct GtkCssSection(c_void);

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

#[repr(C)]
pub struct _GtkCssStyleChange(c_void);

pub type GtkCssStyleChange = *mut _GtkCssStyleChange;

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

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

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

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

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

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

#[repr(C)]
#[derive(Copy, Clone)]
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 padding: [gpointer; 8],
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkDirectoryListClass {
    pub parent_class: gobject::GObjectClass,
}

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

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

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

#[repr(C)]
pub struct _GtkDragSourceClass(c_void);

pub type GtkDragSourceClass = *mut _GtkDragSourceClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkDrawingAreaClass {
    pub parent_class: GtkWidgetClass,
    pub resize: Option<unsafe extern "C" fn(*mut GtkDrawingArea, c_int, c_int)>,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
pub struct _GtkDropControllerMotionClass(c_void);

pub type GtkDropControllerMotionClass = *mut _GtkDropControllerMotionClass;

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

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

#[repr(C)]
pub struct _GtkDropTargetAsyncClass(c_void);

pub type GtkDropTargetAsyncClass = *mut _GtkDropTargetAsyncClass;

#[repr(C)]
pub struct _GtkDropTargetClass(c_void);

pub type GtkDropTargetClass = *mut _GtkDropTargetClass;

#[repr(C)]
#[derive(Copy, Clone)]
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 get_text: Option<unsafe extern "C" fn(*mut GtkEditable) -> *const c_char>,
    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_selection_bounds:
        Option<unsafe extern "C" fn(*mut GtkEditable, *mut c_int, *mut c_int) -> gboolean>,
    pub set_selection_bounds: Option<unsafe extern "C" fn(*mut GtkEditable, c_int, c_int)>,
    pub get_delegate: Option<unsafe extern "C" fn(*mut GtkEditable) -> *mut GtkEditable>,
}

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

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

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

#[repr(C)]
pub struct _GtkEmojiChooserClass(c_void);

pub type GtkEmojiChooserClass = *mut _GtkEmojiChooserClass;

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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)]
#[derive(Copy, Clone)]
pub struct GtkEntryClass {
    pub parent_class: GtkWidgetClass,
    pub activate: Option<unsafe extern "C" fn(*mut GtkEntry)>,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
pub struct _GtkEventControllerClass(c_void);

pub type GtkEventControllerClass = *mut _GtkEventControllerClass;

#[repr(C)]
pub struct _GtkEventControllerFocusClass(c_void);

pub type GtkEventControllerFocusClass = *mut _GtkEventControllerFocusClass;

#[repr(C)]
pub struct _GtkEventControllerKeyClass(c_void);

pub type GtkEventControllerKeyClass = *mut _GtkEventControllerKeyClass;

#[repr(C)]
pub struct _GtkEventControllerLegacyClass(c_void);

pub type GtkEventControllerLegacyClass = *mut _GtkEventControllerLegacyClass;

#[repr(C)]
pub struct _GtkEventControllerMotionClass(c_void);

pub type GtkEventControllerMotionClass = *mut _GtkEventControllerMotionClass;

#[repr(C)]
pub struct _GtkEventControllerScrollClass(c_void);

pub type GtkEventControllerScrollClass = *mut _GtkEventControllerScrollClass;

#[repr(C)]
pub struct _GtkEveryFilterClass(c_void);

pub type GtkEveryFilterClass = *mut _GtkEveryFilterClass;

#[repr(C)]
pub struct GtkExpressionWatch(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkFilterClass {
    pub parent_class: gobject::GObjectClass,
    pub match_: Option<unsafe extern "C" fn(*mut GtkFilter, *mut gobject::GObject) -> gboolean>,
    pub get_strictness: Option<unsafe extern "C" fn(*mut GtkFilter) -> GtkFilterMatch>,
    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 GtkFilterClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkFilterClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .field("match_", &self.match_)
            .field("get_strictness", &self.get_strictness)
            .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)]
#[derive(Copy, Clone)]
pub struct GtkFilterListModelClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkFixedClass {
    pub parent_class: GtkWidgetClass,
    pub padding: [gpointer; 8],
}

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

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

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

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

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkFlattenListModelClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkFlowBoxChildClass {
    pub parent_class: GtkWidgetClass,
    pub activate: Option<unsafe extern "C" fn(*mut GtkFlowBoxChild)>,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkFrameClass {
    pub parent_class: GtkWidgetClass,
    pub compute_child_allocation: Option<unsafe extern "C" fn(*mut GtkFrame, *mut GtkAllocation)>,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
#[derive(Copy, Clone)]
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; 8],
}

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

#[repr(C)]
pub struct _GtkGestureClass(c_void);

pub type GtkGestureClass = *mut _GtkGestureClass;

#[repr(C)]
pub struct _GtkGestureClickClass(c_void);

pub type GtkGestureClickClass = *mut _GtkGestureClickClass;

#[repr(C)]
pub struct _GtkGestureDragClass(c_void);

pub type GtkGestureDragClass = *mut _GtkGestureDragClass;

#[repr(C)]
pub struct _GtkGestureLongPressClass(c_void);

pub type GtkGestureLongPressClass = *mut _GtkGestureLongPressClass;

#[repr(C)]
pub struct _GtkGesturePanClass(c_void);

pub type GtkGesturePanClass = *mut _GtkGesturePanClass;

#[repr(C)]
pub struct _GtkGestureRotateClass(c_void);

pub type GtkGestureRotateClass = *mut _GtkGestureRotateClass;

#[repr(C)]
pub struct _GtkGestureSingleClass(c_void);

pub type GtkGestureSingleClass = *mut _GtkGestureSingleClass;

#[repr(C)]
pub struct _GtkGestureStylusClass(c_void);

pub type GtkGestureStylusClass = *mut _GtkGestureStylusClass;

#[repr(C)]
pub struct _GtkGestureSwipeClass(c_void);

pub type GtkGestureSwipeClass = *mut _GtkGestureSwipeClass;

#[repr(C)]
pub struct _GtkGestureZoomClass(c_void);

pub type GtkGestureZoomClass = *mut _GtkGestureZoomClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkGridClass {
    pub parent_class: GtkWidgetClass,
    pub padding: [gpointer; 8],
}

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

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

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

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

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

#[repr(C)]
pub struct _GtkGridViewClass(c_void);

pub type GtkGridViewClass = *mut _GtkGridViewClass;

#[repr(C)]
#[derive(Copy, Clone)]
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_widget: Option<unsafe extern "C" fn(*mut GtkIMContext, *mut GtkWidget)>,
    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::GdkEvent) -> 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 set_surrounding_with_selection:
        Option<unsafe extern "C" fn(*mut GtkIMContext, *const c_char, c_int, c_int, c_int)>,
    pub get_surrounding_with_selection: Option<
        unsafe extern "C" fn(
            *mut GtkIMContext,
            *mut *mut c_char,
            *mut c_int,
            *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()>,
}

impl ::std::fmt::Debug for GtkIMContextClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkIMContextClass @ {:p}", self))
            .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_widget", &self.set_client_widget)
            .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(
                "set_surrounding_with_selection",
                &self.set_surrounding_with_selection,
            )
            .field(
                "get_surrounding_with_selection",
                &self.get_surrounding_with_selection,
            )
            .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)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkIMContextSimplePrivate(c_void);

pub type GtkIMContextSimplePrivate = *mut _GtkIMContextSimplePrivate;

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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(c_void);

pub type GtkIMMulticontextPrivate = *mut _GtkIMMulticontextPrivate;

#[repr(C)]
pub struct _GtkKeyvalTriggerClass(c_void);

pub type GtkKeyvalTriggerClass = *mut _GtkKeyvalTriggerClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkLayoutChildClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkLayoutManagerClass {
    pub parent_class: gobject::GObjectClass,
    pub get_request_mode:
        Option<unsafe extern "C" fn(*mut GtkLayoutManager, *mut GtkWidget) -> GtkSizeRequestMode>,
    pub measure: Option<
        unsafe extern "C" fn(
            *mut GtkLayoutManager,
            *mut GtkWidget,
            GtkOrientation,
            c_int,
            *mut c_int,
            *mut c_int,
            *mut c_int,
            *mut c_int,
        ),
    >,
    pub allocate:
        Option<unsafe extern "C" fn(*mut GtkLayoutManager, *mut GtkWidget, c_int, c_int, c_int)>,
    pub layout_child_type: GType,
    pub create_layout_child: Option<
        unsafe extern "C" fn(
            *mut GtkLayoutManager,
            *mut GtkWidget,
            *mut GtkWidget,
        ) -> *mut GtkLayoutChild,
    >,
    pub root: Option<unsafe extern "C" fn(*mut GtkLayoutManager)>,
    pub unroot: Option<unsafe extern "C" fn(*mut GtkLayoutManager)>,
    pub _padding: [gpointer; 16],
}

impl ::std::fmt::Debug for GtkLayoutManagerClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkLayoutManagerClass @ {:p}", self))
            .field("get_request_mode", &self.get_request_mode)
            .field("measure", &self.measure)
            .field("allocate", &self.allocate)
            .field("layout_child_type", &self.layout_child_type)
            .field("create_layout_child", &self.create_layout_child)
            .field("root", &self.root)
            .field("unroot", &self.unroot)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkListBaseClass(c_void);

pub type GtkListBaseClass = *mut _GtkListBaseClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkListBoxRowClass {
    pub parent_class: GtkWidgetClass,
    pub activate: Option<unsafe extern "C" fn(*mut GtkListBoxRow)>,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
pub struct _GtkListItemClass(c_void);

pub type GtkListItemClass = *mut _GtkListItemClass;

#[repr(C)]
pub struct _GtkListItemFactoryClass(c_void);

pub type GtkListItemFactoryClass = *mut _GtkListItemFactoryClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkListStoreClass {
    pub parent_class: gobject::GObjectClass,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
pub struct _GtkListStorePrivate(c_void);

pub type GtkListStorePrivate = *mut _GtkListStorePrivate;

#[repr(C)]
pub struct _GtkListViewClass(c_void);

pub type GtkListViewClass = *mut _GtkListViewClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkMapListModelClass {
    pub parent_class: gobject::GObjectClass,
}

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

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

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkMediaFileClass {
    pub parent_class: GtkMediaStreamClass,
    pub open: Option<unsafe extern "C" fn(*mut GtkMediaFile)>,
    pub close: Option<unsafe extern "C" fn(*mut GtkMediaFile)>,
    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 GtkMediaFileClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMediaFileClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .field("open", &self.open)
            .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)]
#[derive(Copy, Clone)]
pub struct GtkMediaStreamClass {
    pub parent_class: gobject::GObjectClass,
    pub play: Option<unsafe extern "C" fn(*mut GtkMediaStream) -> gboolean>,
    pub pause: Option<unsafe extern "C" fn(*mut GtkMediaStream)>,
    pub seek: Option<unsafe extern "C" fn(*mut GtkMediaStream, i64)>,
    pub update_audio: Option<unsafe extern "C" fn(*mut GtkMediaStream, gboolean, c_double)>,
    pub realize: Option<unsafe extern "C" fn(*mut GtkMediaStream, *mut gdk::GdkSurface)>,
    pub unrealize: Option<unsafe extern "C" fn(*mut GtkMediaStream, *mut gdk::GdkSurface)>,
    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 GtkMediaStreamClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkMediaStreamClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .field("play", &self.play)
            .field("pause", &self.pause)
            .field("seek", &self.seek)
            .field("update_audio", &self.update_audio)
            .field("realize", &self.realize)
            .field("unrealize", &self.unrealize)
            .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 _GtkMessageDialogClass(c_void);

pub type GtkMessageDialogClass = *mut _GtkMessageDialogClass;

#[repr(C)]
pub struct _GtkMnemonicActionClass(c_void);

pub type GtkMnemonicActionClass = *mut _GtkMnemonicActionClass;

#[repr(C)]
pub struct _GtkMnemonicTriggerClass(c_void);

pub type GtkMnemonicTriggerClass = *mut _GtkMnemonicTriggerClass;

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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(c_void);

pub type GtkMountOperationPrivate = *mut _GtkMountOperationPrivate;

#[repr(C)]
pub struct _GtkMultiFilterClass(c_void);

pub type GtkMultiFilterClass = *mut _GtkMultiFilterClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkMultiSelectionClass {
    pub parent_class: gobject::GObjectClass,
}

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

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

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

#[repr(C)]
pub struct _GtkNamedActionClass(c_void);

pub type GtkNamedActionClass = *mut _GtkNamedActionClass;

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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()
    }
}

#[repr(C)]
pub struct _GtkNativeInterface(c_void);

pub type GtkNativeInterface = *mut _GtkNativeInterface;

#[repr(C)]
pub struct _GtkNeverTriggerClass(c_void);

pub type GtkNeverTriggerClass = *mut _GtkNeverTriggerClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkNoSelectionClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
pub struct _GtkNothingActionClass(c_void);

pub type GtkNothingActionClass = *mut _GtkNothingActionClass;

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

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("base_iface", &self.base_iface)
            .finish()
    }
}

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

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

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

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

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

impl ::std::fmt::Debug for GtkPadActionEntry {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPadActionEntry @ {:p}", self))
            .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(c_void);

pub type GtkPadControllerClass = *mut _GtkPadControllerClass;

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("start", &self.start)
            .field("end", &self.end)
            .finish()
    }
}

#[repr(C)]
pub struct GtkPaperSize(c_void);

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

#[repr(C)]
pub struct _GtkPasswordEntryClass(c_void);

pub type GtkPasswordEntryClass = *mut _GtkPasswordEntryClass;

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

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

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

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

#[repr(C)]
pub struct _GtkPrintBackend(c_void);

pub type GtkPrintBackend = *mut _GtkPrintBackend;

#[repr(C)]
#[derive(Copy, Clone)]
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 padding: [gpointer; 8],
}

impl ::std::fmt::Debug for GtkPrintOperationClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkPrintOperationClass @ {:p}", self))
            .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)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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(c_void);

pub type GtkPrintOperationPrivate = *mut _GtkPrintOperationPrivate;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkRangeClass {
    pub parent_class: GtkWidgetClass,
    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 padding: [gpointer; 8],
}

impl ::std::fmt::Debug for GtkRangeClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkRangeClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .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)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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()
    }
}

#[repr(C)]
pub struct GtkRecentInfo(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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(c_void);

pub type GtkRecentManagerPrivate = *mut _GtkRecentManagerPrivate;

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("data", &self.data)
            .field("minimum_size", &self.minimum_size)
            .field("natural_size", &self.natural_size)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("width", &self.width)
            .field("height", &self.height)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkRootInterface(c_void);

pub type GtkRootInterface = *mut _GtkRootInterface;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkScaleButtonClass {
    pub parent_class: GtkWidgetClass,
    pub value_changed: Option<unsafe extern "C" fn(*mut GtkScaleButton, c_double)>,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkScaleClass {
    pub parent_class: GtkRangeClass,
    pub get_layout_offsets: Option<unsafe extern "C" fn(*mut GtkScale, *mut c_int, *mut c_int)>,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("base_iface", &self.base_iface)
            .field("get_border", &self.get_border)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkSelectionFilterModelClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkSelectionModelInterface {
    pub g_iface: gobject::GTypeInterface,
    pub is_selected: Option<unsafe extern "C" fn(*mut GtkSelectionModel, c_uint) -> gboolean>,
    pub get_selection_in_range:
        Option<unsafe extern "C" fn(*mut GtkSelectionModel, c_uint, c_uint) -> *mut GtkBitset>,
    pub select_item:
        Option<unsafe extern "C" fn(*mut GtkSelectionModel, c_uint, gboolean) -> gboolean>,
    pub unselect_item: Option<unsafe extern "C" fn(*mut GtkSelectionModel, c_uint) -> gboolean>,
    pub select_range:
        Option<unsafe extern "C" fn(*mut GtkSelectionModel, c_uint, c_uint, gboolean) -> gboolean>,
    pub unselect_range:
        Option<unsafe extern "C" fn(*mut GtkSelectionModel, c_uint, c_uint) -> gboolean>,
    pub select_all: Option<unsafe extern "C" fn(*mut GtkSelectionModel) -> gboolean>,
    pub unselect_all: Option<unsafe extern "C" fn(*mut GtkSelectionModel) -> gboolean>,
    pub set_selection: Option<
        unsafe extern "C" fn(*mut GtkSelectionModel, *mut GtkBitset, *mut GtkBitset) -> gboolean,
    >,
}

impl ::std::fmt::Debug for GtkSelectionModelInterface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSelectionModelInterface @ {:p}", self))
            .field("is_selected", &self.is_selected)
            .field("get_selection_in_range", &self.get_selection_in_range)
            .field("select_item", &self.select_item)
            .field("unselect_item", &self.unselect_item)
            .field("select_range", &self.select_range)
            .field("unselect_range", &self.unselect_range)
            .field("select_all", &self.select_all)
            .field("unselect_all", &self.unselect_all)
            .field("set_selection", &self.set_selection)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkShortcutActionClass(c_void);

pub type GtkShortcutActionClass = *mut _GtkShortcutActionClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkShortcutClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
pub struct _GtkShortcutControllerClass(c_void);

pub type GtkShortcutControllerClass = *mut _GtkShortcutControllerClass;

#[repr(C)]
pub struct _GtkShortcutLabelClass(c_void);

pub type GtkShortcutLabelClass = *mut _GtkShortcutLabelClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkShortcutManagerInterface {
    pub g_iface: gobject::GTypeInterface,
    pub add_controller:
        Option<unsafe extern "C" fn(*mut GtkShortcutManager, *mut GtkShortcutController)>,
    pub remove_controller:
        Option<unsafe extern "C" fn(*mut GtkShortcutManager, *mut GtkShortcutController)>,
}

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

#[repr(C)]
pub struct _GtkShortcutTriggerClass(c_void);

pub type GtkShortcutTriggerClass = *mut _GtkShortcutTriggerClass;

#[repr(C)]
pub struct _GtkShortcutsGroupClass(c_void);

pub type GtkShortcutsGroupClass = *mut _GtkShortcutsGroupClass;

#[repr(C)]
pub struct _GtkShortcutsSectionClass(c_void);

pub type GtkShortcutsSectionClass = *mut _GtkShortcutsSectionClass;

#[repr(C)]
pub struct _GtkShortcutsShortcutClass(c_void);

pub type GtkShortcutsShortcutClass = *mut _GtkShortcutsShortcutClass;

#[repr(C)]
pub struct _GtkSignalActionClass(c_void);

pub type GtkSignalActionClass = *mut _GtkSignalActionClass;

#[repr(C)]
pub struct _GtkSignalListItemFactoryClass(c_void);

pub type GtkSignalListItemFactoryClass = *mut _GtkSignalListItemFactoryClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkSingleSelectionClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkSliceListModelClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
pub struct _GtkSnapshotClass(c_void);

pub type GtkSnapshotClass = *mut _GtkSnapshotClass;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkSortListModelClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkSorterClass {
    pub parent_class: gobject::GObjectClass,
    pub compare: Option<
        unsafe extern "C" fn(
            *mut GtkSorter,
            *mut gobject::GObject,
            *mut gobject::GObject,
        ) -> GtkOrdering,
    >,
    pub get_order: Option<unsafe extern "C" fn(*mut GtkSorter) -> GtkSorterOrder>,
    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 GtkSorterClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkSorterClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .field("compare", &self.compare)
            .field("get_order", &self.get_order)
            .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)]
#[derive(Copy, Clone)]
pub struct GtkStringFilterClass {
    pub parent_class: GtkFilterClass,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkStringListClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkStringObjectClass {
    pub parent_class: gobject::GObjectClass,
}

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

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

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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)]
#[derive(Copy, Clone)]
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_paintable:
        Option<unsafe extern "C" fn(*mut GtkTextBuffer, *mut GtkTextIter, *mut gdk::GdkPaintable)>,
    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 gdk::GdkClipboard)>,
    pub undo: Option<unsafe extern "C" fn(*mut GtkTextBuffer)>,
    pub redo: Option<unsafe extern "C" fn(*mut GtkTextBuffer)>,
    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 @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .field("insert_text", &self.insert_text)
            .field("insert_paintable", &self.insert_paintable)
            .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("undo", &self.undo)
            .field("redo", &self.redo)
            .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(c_void);

pub type GtkTextBufferPrivate = *mut _GtkTextBufferPrivate;

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkTextMarkClass {
    pub parent_class: gobject::GObjectClass,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkTextTagClass {
    pub parent_class: gobject::GObjectClass,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
pub struct _GtkTextTagPrivate(c_void);

pub type GtkTextTagPrivate = *mut _GtkTextTagPrivate;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkTextViewClass {
    pub parent_class: GtkWidgetClass,
    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 snapshot_layer:
        Option<unsafe extern "C" fn(*mut GtkTextView, GtkTextViewLayer, *mut GtkSnapshot)>,
    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 padding: [gpointer; 8],
}

impl ::std::fmt::Debug for GtkTextViewClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTextViewClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .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("snapshot_layer", &self.snapshot_layer)
            .field("extend_selection", &self.extend_selection)
            .field("insert_emoji", &self.insert_emoji)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkTextViewPrivate(c_void);

pub type GtkTextViewPrivate = *mut _GtkTextViewPrivate;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkToggleButtonClass {
    pub parent_class: GtkButtonClass,
    pub toggled: Option<unsafe extern "C" fn(*mut GtkToggleButton)>,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkTreeDragDestIface {
    pub g_iface: gobject::GTypeInterface,
    pub drag_data_received: Option<
        unsafe extern "C" fn(
            *mut GtkTreeDragDest,
            *mut GtkTreePath,
            *const gobject::GValue,
        ) -> gboolean,
    >,
    pub row_drop_possible: Option<
        unsafe extern "C" fn(
            *mut GtkTreeDragDest,
            *mut GtkTreePath,
            *const gobject::GValue,
        ) -> gboolean,
    >,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
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 gdk::GdkContentProvider,
    >,
    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 @ {:p}", self))
            .field("row_draggable", &self.row_draggable)
            .field("drag_data_get", &self.drag_data_get)
            .field("drag_data_delete", &self.drag_data_delete)
            .finish()
    }
}

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

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("stamp", &self.stamp)
            .field("user_data", &self.user_data)
            .field("user_data2", &self.user_data2)
            .field("user_data3", &self.user_data3)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkTreeListModelClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkTreeListRowClass {
    pub parent_class: gobject::GObjectClass,
}

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

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

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

#[repr(C)]
#[derive(Copy, Clone)]
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 padding: [gpointer; 8],
}

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

#[repr(C)]
pub struct _GtkTreeModelFilterPrivate(c_void);

pub type GtkTreeModelFilterPrivate = *mut _GtkTreeModelFilterPrivate;

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkTreeModelSortClass {
    pub parent_class: gobject::GObjectClass,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
pub struct _GtkTreeModelSortPrivate(c_void);

pub type GtkTreeModelSortPrivate = *mut _GtkTreeModelSortPrivate;

#[repr(C)]
pub struct GtkTreePath(c_void);

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

#[repr(C)]
pub struct GtkTreeRowReference(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkTreeStoreClass {
    pub parent_class: gobject::GObjectClass,
    pub padding: [gpointer; 8],
}

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

#[repr(C)]
pub struct _GtkTreeStorePrivate(c_void);

pub type GtkTreeStorePrivate = *mut _GtkTreeStorePrivate;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkTreeViewClass {
    pub parent_class: GtkWidgetClass,
    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,
            gboolean,
        ) -> 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 _reserved: [gpointer; 16],
}

impl ::std::fmt::Debug for GtkTreeViewClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkTreeViewClass @ {:p}", self))
            .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)
            .finish()
    }
}

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

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkWidgetClass {
    pub parent_class: gobject::GInitiallyUnownedClass,
    pub show: 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 root: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub unroot: Option<unsafe extern "C" fn(*mut GtkWidget)>,
    pub size_allocate: Option<unsafe extern "C" fn(*mut GtkWidget, c_int, c_int, c_int)>,
    pub state_flags_changed: Option<unsafe extern "C" fn(*mut GtkWidget, GtkStateFlags)>,
    pub direction_changed: Option<unsafe extern "C" fn(*mut GtkWidget, GtkTextDirection)>,
    pub get_request_mode: Option<unsafe extern "C" fn(*mut GtkWidget) -> GtkSizeRequestMode>,
    pub measure: Option<
        unsafe extern "C" fn(
            *mut GtkWidget,
            GtkOrientation,
            c_int,
            *mut c_int,
            *mut 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) -> gboolean>,
    pub focus: Option<unsafe extern "C" fn(*mut GtkWidget, GtkDirectionType) -> gboolean>,
    pub set_focus_child: Option<unsafe extern "C" fn(*mut GtkWidget, *mut GtkWidget)>,
    pub move_focus: Option<unsafe extern "C" fn(*mut GtkWidget, GtkDirectionType)>,
    pub keynav_failed: Option<unsafe extern "C" fn(*mut GtkWidget, GtkDirectionType) -> gboolean>,
    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 css_changed: Option<unsafe extern "C" fn(*mut GtkWidget, *mut GtkCssStyleChange)>,
    pub system_setting_changed: Option<unsafe extern "C" fn(*mut GtkWidget, GtkSystemSetting)>,
    pub snapshot: Option<unsafe extern "C" fn(*mut GtkWidget, *mut GtkSnapshot)>,
    pub contains: Option<unsafe extern "C" fn(*mut GtkWidget, c_double, c_double) -> gboolean>,
    pub priv_: *mut GtkWidgetClassPrivate,
    pub padding: [gpointer; 8],
}

impl ::std::fmt::Debug for GtkWidgetClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWidgetClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .field("show", &self.show)
            .field("hide", &self.hide)
            .field("map", &self.map)
            .field("unmap", &self.unmap)
            .field("realize", &self.realize)
            .field("unrealize", &self.unrealize)
            .field("root", &self.root)
            .field("unroot", &self.unroot)
            .field("size_allocate", &self.size_allocate)
            .field("state_flags_changed", &self.state_flags_changed)
            .field("direction_changed", &self.direction_changed)
            .field("get_request_mode", &self.get_request_mode)
            .field("measure", &self.measure)
            .field("mnemonic_activate", &self.mnemonic_activate)
            .field("grab_focus", &self.grab_focus)
            .field("focus", &self.focus)
            .field("set_focus_child", &self.set_focus_child)
            .field("move_focus", &self.move_focus)
            .field("keynav_failed", &self.keynav_failed)
            .field("query_tooltip", &self.query_tooltip)
            .field("compute_expand", &self.compute_expand)
            .field("css_changed", &self.css_changed)
            .field("system_setting_changed", &self.system_setting_changed)
            .field("snapshot", &self.snapshot)
            .field("contains", &self.contains)
            .finish()
    }
}

#[repr(C)]
pub struct _GtkWidgetClassPrivate(c_void);

pub type GtkWidgetClassPrivate = *mut _GtkWidgetClassPrivate;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkWidgetPaintableClass {
    pub parent_class: gobject::GObjectClass,
}

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

#[repr(C)]
pub struct _GtkWidgetPrivate(c_void);

pub type GtkWidgetPrivate = *mut _GtkWidgetPrivate;

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkWindowClass {
    pub parent_class: GtkWidgetClass,
    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 close_request: Option<unsafe extern "C" fn(*mut GtkWindow) -> gboolean>,
    pub padding: [gpointer; 8],
}

impl ::std::fmt::Debug for GtkWindowClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("GtkWindowClass @ {:p}", self))
            .field("parent_class", &self.parent_class)
            .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("close_request", &self.close_request)
            .finish()
    }
}

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

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .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(c_void);

pub type GtkWindowGroupPrivate = *mut _GtkWindowGroupPrivate;

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

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

// Classes
#[repr(C)]
pub struct GtkATContext(c_void);

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

#[repr(C)]
pub struct GtkAboutDialog(c_void);

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

#[repr(C)]
pub struct GtkActionBar(c_void);

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

#[repr(C)]
pub struct GtkActivateAction(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkAdjustment {
    pub parent_instance: gobject::GInitiallyUnowned,
}

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

#[repr(C)]
pub struct GtkAlternativeTrigger(c_void);

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

#[repr(C)]
pub struct GtkAnyFilter(c_void);

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

#[repr(C)]
pub struct GtkAppChooserButton(c_void);

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

#[repr(C)]
pub struct GtkAppChooserDialog(c_void);

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

#[repr(C)]
pub struct GtkAppChooserWidget(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkApplication {
    pub parent_instance: gio::GApplication,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkApplicationWindow {
    pub parent_instance: GtkWindow,
}

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

#[repr(C)]
pub struct GtkAspectFrame(c_void);

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

#[repr(C)]
pub struct GtkAssistant(c_void);

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

#[repr(C)]
pub struct GtkAssistantPage(c_void);

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

#[repr(C)]
pub struct GtkBinLayout(c_void);

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

#[repr(C)]
pub struct GtkBookmarkList(c_void);

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

#[repr(C)]
pub struct GtkBoolFilter(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkBox {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
pub struct GtkBoxLayout(c_void);

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

#[repr(C)]
pub struct GtkBuilder(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkBuilderCScope {
    pub parent_instance: gobject::GObject,
}

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

#[repr(C)]
pub struct GtkBuilderListItemFactory(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkButton {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
pub struct GtkCClosureExpression(c_void);

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

#[repr(C)]
pub struct GtkCalendar(c_void);

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

#[repr(C)]
pub struct GtkCallbackAction(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkCellArea {
    pub parent_instance: gobject::GInitiallyUnowned,
}

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

#[repr(C)]
pub struct GtkCellAreaBox(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkCellAreaContext {
    pub parent_instance: gobject::GObject,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
pub struct GtkCellRendererAccel(c_void);

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

#[repr(C)]
pub struct GtkCellRendererCombo(c_void);

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

#[repr(C)]
pub struct GtkCellRendererPixbuf(c_void);

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

#[repr(C)]
pub struct GtkCellRendererProgress(c_void);

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

#[repr(C)]
pub struct GtkCellRendererSpin(c_void);

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

#[repr(C)]
pub struct GtkCellRendererSpinner(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkCellRendererText {
    pub parent: GtkCellRenderer,
}

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

#[repr(C)]
pub struct GtkCellRendererToggle(c_void);

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

#[repr(C)]
pub struct GtkCellView(c_void);

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

#[repr(C)]
pub struct GtkCenterBox(c_void);

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

#[repr(C)]
pub struct GtkCenterLayout(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkCheckButton {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
pub struct GtkClosureExpression(c_void);

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

#[repr(C)]
pub struct GtkColorButton(c_void);

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

#[repr(C)]
pub struct GtkColorChooserDialog(c_void);

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

#[repr(C)]
pub struct GtkColorChooserWidget(c_void);

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

#[repr(C)]
pub struct GtkColumnView(c_void);

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

#[repr(C)]
pub struct GtkColumnViewColumn(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkComboBox {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
pub struct GtkComboBoxText(c_void);

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

#[repr(C)]
pub struct GtkConstantExpression(c_void);

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

#[repr(C)]
pub struct GtkConstraint(c_void);

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

#[repr(C)]
pub struct GtkConstraintGuide(c_void);

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

#[repr(C)]
pub struct GtkConstraintLayout(c_void);

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

#[repr(C)]
pub struct GtkConstraintLayoutChild(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkCssProvider {
    pub parent_instance: gobject::GObject,
}

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

#[repr(C)]
pub struct GtkCustomFilter(c_void);

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

#[repr(C)]
pub struct GtkCustomLayout(c_void);

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

#[repr(C)]
pub struct GtkCustomSorter(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkDialog {
    pub parent_instance: GtkWindow,
}

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

#[repr(C)]
pub struct GtkDirectoryList(c_void);

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

#[repr(C)]
pub struct GtkDragIcon(c_void);

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

#[repr(C)]
pub struct GtkDragSource(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkDrawingArea {
    pub widget: GtkWidget,
}

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

#[repr(C)]
pub struct GtkDropControllerMotion(c_void);

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

#[repr(C)]
pub struct GtkDropDown(c_void);

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

#[repr(C)]
pub struct GtkDropTarget(c_void);

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

#[repr(C)]
pub struct GtkDropTargetAsync(c_void);

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

#[repr(C)]
pub struct GtkEditableLabel(c_void);

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

#[repr(C)]
pub struct GtkEmojiChooser(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkEntry {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkEntryBuffer {
    pub parent_instance: gobject::GObject,
}

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

#[repr(C)]
pub struct GtkEntryCompletion(c_void);

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

#[repr(C)]
pub struct GtkEventController(c_void);

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

#[repr(C)]
pub struct GtkEventControllerFocus(c_void);

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

#[repr(C)]
pub struct GtkEventControllerKey(c_void);

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

#[repr(C)]
pub struct GtkEventControllerLegacy(c_void);

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

#[repr(C)]
pub struct GtkEventControllerMotion(c_void);

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

#[repr(C)]
pub struct GtkEventControllerScroll(c_void);

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

#[repr(C)]
pub struct GtkEveryFilter(c_void);

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

#[repr(C)]
pub struct GtkExpander(c_void);

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

#[repr(C)]
pub struct GtkExpression(c_void);

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

#[repr(C)]
pub struct GtkFileChooserDialog(c_void);

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

#[repr(C)]
pub struct GtkFileChooserNative(c_void);

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

#[repr(C)]
pub struct GtkFileChooserWidget(c_void);

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

#[repr(C)]
pub struct GtkFileFilter(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkFilter {
    pub parent_instance: gobject::GObject,
}

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

#[repr(C)]
pub struct GtkFilterListModel(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkFixed {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
pub struct GtkFixedLayout(c_void);

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

#[repr(C)]
pub struct GtkFixedLayoutChild(c_void);

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

#[repr(C)]
pub struct GtkFlattenListModel(c_void);

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

#[repr(C)]
pub struct GtkFlowBox(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkFlowBoxChild {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
pub struct GtkFontButton(c_void);

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

#[repr(C)]
pub struct GtkFontChooserDialog(c_void);

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

#[repr(C)]
pub struct GtkFontChooserWidget(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkFrame {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self)).finish()
    }
}

#[repr(C)]
pub struct GtkGesture(c_void);

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

#[repr(C)]
pub struct GtkGestureClick(c_void);

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

#[repr(C)]
pub struct GtkGestureDrag(c_void);

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

#[repr(C)]
pub struct GtkGestureLongPress(c_void);

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

#[repr(C)]
pub struct GtkGesturePan(c_void);

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

#[repr(C)]
pub struct GtkGestureRotate(c_void);

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

#[repr(C)]
pub struct GtkGestureSingle(c_void);

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

#[repr(C)]
pub struct GtkGestureStylus(c_void);

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

#[repr(C)]
pub struct GtkGestureSwipe(c_void);

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

#[repr(C)]
pub struct GtkGestureZoom(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkGrid {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
pub struct GtkGridLayout(c_void);

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

#[repr(C)]
pub struct GtkGridLayoutChild(c_void);

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

#[repr(C)]
pub struct GtkGridView(c_void);

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

#[repr(C)]
pub struct GtkHeaderBar(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("object", &self.object)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("object", &self.object)
            .finish()
    }
}

#[repr(C)]
pub struct GtkIconPaintable(c_void);

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

#[repr(C)]
pub struct GtkIconTheme(c_void);

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

#[repr(C)]
pub struct GtkIconView(c_void);

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

#[repr(C)]
pub struct GtkImage(c_void);

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

#[repr(C)]
pub struct GtkInfoBar(c_void);

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

#[repr(C)]
pub struct GtkKeyvalTrigger(c_void);

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

#[repr(C)]
pub struct GtkLabel(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkLayoutChild {
    pub parent_instance: gobject::GObject,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkLayoutManager {
    pub parent_instance: gobject::GObject,
}

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

#[repr(C)]
pub struct GtkLevelBar(c_void);

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

#[repr(C)]
pub struct GtkLinkButton(c_void);

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

#[repr(C)]
pub struct GtkListBase(c_void);

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

#[repr(C)]
pub struct GtkListBox(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkListBoxRow {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
pub struct GtkListItem(c_void);

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

#[repr(C)]
pub struct GtkListItemFactory(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent", &self.parent)
            .finish()
    }
}

#[repr(C)]
pub struct GtkListView(c_void);

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

#[repr(C)]
pub struct GtkLockButton(c_void);

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

#[repr(C)]
pub struct GtkMapListModel(c_void);

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

#[repr(C)]
pub struct GtkMediaControls(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkMediaFile {
    pub parent_instance: GtkMediaStream,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkMediaStream {
    pub parent_instance: gobject::GObject,
}

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

#[repr(C)]
pub struct GtkMenuButton(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkMessageDialog {
    pub parent_instance: GtkDialog,
}

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

#[repr(C)]
pub struct GtkMnemonicAction(c_void);

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

#[repr(C)]
pub struct GtkMnemonicTrigger(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
pub struct GtkMultiFilter(c_void);

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

#[repr(C)]
pub struct GtkMultiSelection(c_void);

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

#[repr(C)]
pub struct GtkMultiSorter(c_void);

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

#[repr(C)]
pub struct GtkNamedAction(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
pub struct GtkNeverTrigger(c_void);

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

#[repr(C)]
pub struct GtkNoSelection(c_void);

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

#[repr(C)]
pub struct GtkNotebook(c_void);

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

#[repr(C)]
pub struct GtkNotebookPage(c_void);

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

#[repr(C)]
pub struct GtkNothingAction(c_void);

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

#[repr(C)]
pub struct GtkNumericSorter(c_void);

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

#[repr(C)]
pub struct GtkObjectExpression(c_void);

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

#[repr(C)]
pub struct GtkOverlay(c_void);

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

#[repr(C)]
pub struct GtkOverlayLayout(c_void);

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

#[repr(C)]
pub struct GtkOverlayLayoutChild(c_void);

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

#[repr(C)]
pub struct GtkPadController(c_void);

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

#[repr(C)]
pub struct GtkPageSetup(c_void);

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

#[repr(C)]
pub struct GtkPageSetupUnixDialog(c_void);

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

#[repr(C)]
pub struct GtkPaned(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkParamSpecExpression {
    pub parent_instance: gobject::GParamSpec,
}

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

#[repr(C)]
pub struct GtkPasswordEntry(c_void);

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

#[repr(C)]
pub struct GtkPicture(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkPopover {
    pub parent: GtkWidget,
}

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

#[repr(C)]
pub struct GtkPopoverMenu(c_void);

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

#[repr(C)]
pub struct GtkPopoverMenuBar(c_void);

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

#[repr(C)]
pub struct GtkPrintContext(c_void);

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

#[repr(C)]
pub struct GtkPrintJob(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
pub struct GtkPrintSettings(c_void);

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

#[repr(C)]
pub struct GtkPrintUnixDialog(c_void);

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

#[repr(C)]
pub struct GtkPrinter(c_void);

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

#[repr(C)]
pub struct GtkProgressBar(c_void);

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

#[repr(C)]
pub struct GtkPropertyExpression(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkRange {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .finish()
    }
}

#[repr(C)]
pub struct GtkRevealer(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkScale {
    pub parent_instance: GtkRange,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkScaleButton {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
pub struct GtkScrollbar(c_void);

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

#[repr(C)]
pub struct GtkScrolledWindow(c_void);

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

#[repr(C)]
pub struct GtkSearchBar(c_void);

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

#[repr(C)]
pub struct GtkSearchEntry(c_void);

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

#[repr(C)]
pub struct GtkSelectionFilterModel(c_void);

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

#[repr(C)]
pub struct GtkSeparator(c_void);

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

#[repr(C)]
pub struct GtkSettings(c_void);

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

#[repr(C)]
pub struct GtkShortcut(c_void);

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

#[repr(C)]
pub struct GtkShortcutAction(c_void);

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

#[repr(C)]
pub struct GtkShortcutController(c_void);

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

#[repr(C)]
pub struct GtkShortcutLabel(c_void);

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

#[repr(C)]
pub struct GtkShortcutTrigger(c_void);

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

#[repr(C)]
pub struct GtkShortcutsGroup(c_void);

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

#[repr(C)]
pub struct GtkShortcutsSection(c_void);

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

#[repr(C)]
pub struct GtkShortcutsShortcut(c_void);

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

#[repr(C)]
pub struct GtkShortcutsWindow(c_void);

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

#[repr(C)]
pub struct GtkSignalAction(c_void);

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

#[repr(C)]
pub struct GtkSignalListItemFactory(c_void);

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

#[repr(C)]
pub struct GtkSingleSelection(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkSizeGroup {
    pub parent_instance: gobject::GObject,
}

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

#[repr(C)]
pub struct GtkSliceListModel(c_void);

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

#[repr(C)]
pub struct GtkSnapshot(c_void);

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

#[repr(C)]
pub struct GtkSortListModel(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkSorter {
    pub parent_instance: gobject::GObject,
}

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

#[repr(C)]
pub struct GtkSpinButton(c_void);

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

#[repr(C)]
pub struct GtkSpinner(c_void);

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

#[repr(C)]
pub struct GtkStack(c_void);

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

#[repr(C)]
pub struct GtkStackPage(c_void);

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

#[repr(C)]
pub struct GtkStackSidebar(c_void);

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

#[repr(C)]
pub struct GtkStackSwitcher(c_void);

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

#[repr(C)]
pub struct GtkStatusbar(c_void);

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

#[repr(C)]
pub struct GtkStringFilter(c_void);

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

#[repr(C)]
pub struct GtkStringList(c_void);

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

#[repr(C)]
pub struct GtkStringObject(c_void);

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

#[repr(C)]
pub struct GtkStringSorter(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkStyleContext {
    pub parent_object: gobject::GObject,
}

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

#[repr(C)]
pub struct GtkSwitch(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkText {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
pub struct GtkTextTagTable(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkTextView {
    pub parent_instance: GtkWidget,
    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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkToggleButton {
    pub button: GtkButton,
}

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

#[repr(C)]
pub struct GtkTooltip(c_void);

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

#[repr(C)]
pub struct GtkTreeExpander(c_void);

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

#[repr(C)]
pub struct GtkTreeListModel(c_void);

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

#[repr(C)]
pub struct GtkTreeListRow(c_void);

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

#[repr(C)]
pub struct GtkTreeListRowSorter(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent", &self.parent)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent", &self.parent)
            .finish()
    }
}

#[repr(C)]
pub struct GtkTreeSelection(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent", &self.parent)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkTreeView {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
pub struct GtkTreeViewColumn(c_void);

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

#[repr(C)]
pub struct GtkVideo(c_void);

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

#[repr(C)]
pub struct GtkViewport(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent", &self.parent)
            .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .finish()
    }
}

#[repr(C)]
pub struct GtkWidgetPaintable(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
pub struct GtkWindow {
    pub parent_instance: GtkWidget,
}

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

#[repr(C)]
pub struct GtkWindowControls(c_void);

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

#[repr(C)]
#[derive(Copy, Clone)]
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 @ {:p}", self))
            .field("parent_instance", &self.parent_instance)
            .field("priv_", &self.priv_)
            .finish()
    }
}

#[repr(C)]
pub struct GtkWindowHandle(c_void);

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

// Interfaces
#[repr(C)]
pub struct GtkAccessible(c_void);

impl ::std::fmt::Debug for GtkAccessible {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkAccessible @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkActionable(c_void);

impl ::std::fmt::Debug for GtkActionable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkActionable @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkAppChooser(c_void);

impl ::std::fmt::Debug for GtkAppChooser {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkAppChooser @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkBuildable(c_void);

impl ::std::fmt::Debug for GtkBuildable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkBuildable @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkBuilderScope(c_void);

impl ::std::fmt::Debug for GtkBuilderScope {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkBuilderScope @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkCellEditable(c_void);

impl ::std::fmt::Debug for GtkCellEditable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkCellEditable @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkCellLayout(c_void);

impl ::std::fmt::Debug for GtkCellLayout {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkCellLayout @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkColorChooser(c_void);

impl ::std::fmt::Debug for GtkColorChooser {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkColorChooser @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkConstraintTarget(c_void);

impl ::std::fmt::Debug for GtkConstraintTarget {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkConstraintTarget @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkEditable(c_void);

impl ::std::fmt::Debug for GtkEditable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkEditable @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkFileChooser(c_void);

impl ::std::fmt::Debug for GtkFileChooser {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkFileChooser @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkFontChooser(c_void);

impl ::std::fmt::Debug for GtkFontChooser {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkFontChooser @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkNative(c_void);

impl ::std::fmt::Debug for GtkNative {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkNative @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkOrientable(c_void);

impl ::std::fmt::Debug for GtkOrientable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkOrientable @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkPrintOperationPreview(c_void);

impl ::std::fmt::Debug for GtkPrintOperationPreview {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkPrintOperationPreview @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkRoot(c_void);

impl ::std::fmt::Debug for GtkRoot {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkRoot @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkScrollable(c_void);

impl ::std::fmt::Debug for GtkScrollable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkScrollable @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkSelectionModel(c_void);

impl ::std::fmt::Debug for GtkSelectionModel {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkSelectionModel @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkShortcutManager(c_void);

impl ::std::fmt::Debug for GtkShortcutManager {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkShortcutManager @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkStyleProvider(c_void);

impl ::std::fmt::Debug for GtkStyleProvider {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkStyleProvider @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkTreeDragDest(c_void);

impl ::std::fmt::Debug for GtkTreeDragDest {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkTreeDragDest @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkTreeDragSource(c_void);

impl ::std::fmt::Debug for GtkTreeDragSource {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkTreeDragSource @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkTreeModel(c_void);

impl ::std::fmt::Debug for GtkTreeModel {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkTreeModel @ {:p}", self)
    }
}

#[repr(C)]
pub struct GtkTreeSortable(c_void);

impl ::std::fmt::Debug for GtkTreeSortable {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GtkTreeSortable @ {:p}", self)
    }
}

#[link(name = "gtk-4")]
extern "C" {

    //=========================================================================
    // GtkAccessibleAutocomplete
    //=========================================================================
    pub fn gtk_accessible_autocomplete_get_type() -> GType;

    //=========================================================================
    // GtkAccessibleInvalidState
    //=========================================================================
    pub fn gtk_accessible_invalid_state_get_type() -> GType;

    //=========================================================================
    // GtkAccessibleProperty
    //=========================================================================
    pub fn gtk_accessible_property_get_type() -> GType;
    pub fn gtk_accessible_property_init_value(
        property: GtkAccessibleProperty,
        value: *mut gobject::GValue,
    );

    //=========================================================================
    // GtkAccessibleRelation
    //=========================================================================
    pub fn gtk_accessible_relation_get_type() -> GType;
    pub fn gtk_accessible_relation_init_value(
        relation: GtkAccessibleRelation,
        value: *mut gobject::GValue,
    );

    //=========================================================================
    // GtkAccessibleRole
    //=========================================================================
    pub fn gtk_accessible_role_get_type() -> GType;

    //=========================================================================
    // GtkAccessibleSort
    //=========================================================================
    pub fn gtk_accessible_sort_get_type() -> GType;

    //=========================================================================
    // GtkAccessibleState
    //=========================================================================
    pub fn gtk_accessible_state_get_type() -> GType;
    pub fn gtk_accessible_state_init_value(state: GtkAccessibleState, value: *mut gobject::GValue);

    //=========================================================================
    // GtkAccessibleTristate
    //=========================================================================
    pub fn gtk_accessible_tristate_get_type() -> GType;

    //=========================================================================
    // GtkAlign
    //=========================================================================
    pub fn gtk_align_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;

    //=========================================================================
    // 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;

    //=========================================================================
    // GtkConstraintAttribute
    //=========================================================================
    pub fn gtk_constraint_attribute_get_type() -> GType;

    //=========================================================================
    // GtkConstraintRelation
    //=========================================================================
    pub fn gtk_constraint_relation_get_type() -> GType;

    //=========================================================================
    // GtkConstraintStrength
    //=========================================================================
    pub fn gtk_constraint_strength_get_type() -> GType;

    //=========================================================================
    // GtkConstraintVflParserError
    //=========================================================================
    pub fn gtk_constraint_vfl_parser_error_get_type() -> GType;
    pub fn gtk_constraint_vfl_parser_error_quark() -> glib::GQuark;

    //=========================================================================
    // GtkCornerType
    //=========================================================================
    pub fn gtk_corner_type_get_type() -> GType;

    //=========================================================================
    // GtkDeleteType
    //=========================================================================
    pub fn gtk_delete_type_get_type() -> GType;

    //=========================================================================
    // GtkDirectionType
    //=========================================================================
    pub fn gtk_direction_type_get_type() -> GType;

    //=========================================================================
    // GtkEditableProperties
    //=========================================================================
    pub fn gtk_editable_properties_get_type() -> GType;

    //=========================================================================
    // GtkEntryIconPosition
    //=========================================================================
    pub fn gtk_entry_icon_position_get_type() -> GType;

    //=========================================================================
    // GtkEventSequenceState
    //=========================================================================
    pub fn gtk_event_sequence_state_get_type() -> GType;

    //=========================================================================
    // GtkFileChooserAction
    //=========================================================================
    pub fn gtk_file_chooser_action_get_type() -> GType;

    //=========================================================================
    // GtkFileChooserError
    //=========================================================================
    pub fn gtk_file_chooser_error_get_type() -> GType;
    pub fn gtk_file_chooser_error_quark() -> glib::GQuark;

    //=========================================================================
    // GtkFilterChange
    //=========================================================================
    pub fn gtk_filter_change_get_type() -> GType;

    //=========================================================================
    // GtkFilterMatch
    //=========================================================================
    pub fn gtk_filter_match_get_type() -> GType;

    //=========================================================================
    // GtkIconSize
    //=========================================================================
    pub fn gtk_icon_size_get_type() -> GType;

    //=========================================================================
    // 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;

    //=========================================================================
    // 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;

    //=========================================================================
    // GtkOrdering
    //=========================================================================
    pub fn gtk_ordering_get_type() -> GType;
    #[cfg(any(feature = "v4_2", feature = "dox"))]
    #[cfg_attr(feature = "dox", doc(cfg(feature = "v4_2")))]
    pub fn gtk_ordering_from_cmpfunc(cmpfunc_result: c_int) -> GtkOrdering;

    //=========================================================================
    // GtkOrientation
    //=========================================================================
    pub fn gtk_orientation_get_type() -> GType;

    //=========================================================================
    // GtkOverflow
    //=========================================================================
    pub fn gtk_overflow_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;

    //=========================================================================
    // GtkPolicyType
    //=========================================================================
    pub fn gtk_policy_type_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;

    //=========================================================================
    // GtkPropagationLimit
    //=========================================================================
    pub fn gtk_propagation_limit_get_type() -> GType;

    //=========================================================================
    // GtkPropagationPhase
    //=========================================================================
    pub fn gtk_propagation_phase_get_type() -> GType;

    //=========================================================================
    // GtkRecentManagerError
    //=========================================================================
    pub fn gtk_recent_manager_error_get_type() -> GType;
    pub fn gtk_recent_manager_error_quark() -> glib::GQuark;

    //=========================================================================
    // 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;

    //=========================================================================
    // GtkShortcutScope
    //=========================================================================
    pub fn gtk_shortcut_scope_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;

    //=========================================================================
    // GtkSorterChange
    //=========================================================================
    pub fn gtk_sorter_change_get_type() -> GType;

    //=========================================================================
    // GtkSorterOrder
    //=========================================================================
    pub fn gtk_sorter_order_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;

    //=========================================================================
    // GtkStringFilterMatchMode
    //=========================================================================
    pub fn gtk_string_filter_match_mode_get_type() -> GType;

    //=========================================================================
    // GtkSystemSetting
    //=========================================================================
    pub fn gtk_system_setting_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;

    //=========================================================================
    // 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;

    //=========================================================================
    // GtkWrapMode
    //=========================================================================
    pub fn gtk_wrap_mode_get_type() -> GType;

    //=========================================================================
    // GtkApplicationInhibitFlags
    //=========================================================================
    pub fn gtk_application_inhibit_flags_get_type() -> GType;

    //=========================================================================
    // GtkBuilderClosureFlags
    //=========================================================================
    pub fn gtk_builder_closure_flags_get_type() -> GType;

    //=========================================================================
    // GtkCellRendererState
    //=========================================================================
    pub fn gtk_cell_renderer_state_get_type() -> GType;

    //=========================================================================
    // GtkDebugFlags
    //=========================================================================
    pub fn gtk_debug_flags_get_type() -> GType;

    //=========================================================================
    // GtkDialogFlags
    //=========================================================================
    pub fn gtk_dialog_flags_get_type() -> GType;

    //=========================================================================
    // GtkEventControllerScrollFlags
    //=========================================================================
    pub fn gtk_event_controller_scroll_flags_get_type() -> GType;

    //=========================================================================
    // GtkFontChooserLevel
    //=========================================================================
    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;

    //=========================================================================
    // GtkPickFlags
    //=========================================================================
    pub fn gtk_pick_flags_get_type() -> GType;

    //=========================================================================
    // GtkPopoverMenuFlags
    //=========================================================================
    pub fn gtk_popover_menu_flags_get_type() -> GType;

    //=========================================================================
    // GtkPrintCapabilities
    //=========================================================================
    pub fn gtk_print_capabilities_get_type() -> GType;

    //=========================================================================
    // GtkShortcutActionFlags
    //=========================================================================
    pub fn gtk_shortcut_action_flags_get_type() -> GType;

    //=========================================================================
    // GtkStateFlags
    //=========================================================================
    pub fn gtk_state_flags_get_type() -> GType;

    //=========================================================================
    // GtkStyleContextPrintFlags
    //=========================================================================
    pub fn gtk_style_context_print_flags_get_type() -> GType;

    //=========================================================================
    // GtkTextSearchFlags
    //=========================================================================
    pub fn gtk_text_search_flags_get_type() -> GType;

    //=========================================================================
    // GtkTreeModelFlags
    //=========================================================================
    pub fn gtk_tree_model_flags_get_type() -> GType;

    //=========================================================================
    // GtkBitset
    //=========================================================================
    pub fn gtk_bitset_get_type() -> GType;
    pub fn gtk_bitset_new_empty() -> *mut GtkBitset;
    pub fn gtk_bitset_new_range(start: c_uint, n_items: c_uint) -> *mut GtkBitset;
    pub fn gtk_bitset_add(self_: *mut GtkBitset, value: c_uint) -> gboolean;
    pub fn gtk_bitset_add_range(self_: *mut GtkBitset, start: c_uint, n_items: c_uint);
    pub fn gtk_bitset_add_range_closed(self_: *mut GtkBitset, first: c_uint, last: c_uint);
    pub fn gtk_bitset_add_rectangle(
        self_: *mut GtkBitset,
        start: c_uint,
        width: c_uint,
        height: c_uint,
        stride: c_uint,
    );
    pub fn gtk_bitset_contains(self_: *const GtkBitset, value: c_uint) -> gboolean;
    pub fn gtk_bitset_copy(self_: *const GtkBitset) -> *mut GtkBitset;
    pub fn gtk_bitset_difference(self_: *mut GtkBitset, other: *const GtkBitset);
    pub fn gtk_bitset_equals(self_: *const GtkBitset, other: *const GtkBitset) -> gboolean;
    pub fn gtk_bitset_get_maximum(self_: *const GtkBitset) -> c_uint;
    pub fn gtk_bitset_get_minimum(self_: *const GtkBitset) -> c_uint;
    pub fn gtk_bitset_get_nth(self_: *const GtkBitset, nth: c_uint) -> c_uint;
    pub fn gtk_bitset_get_size(self_: *const GtkBitset) -> u64;
    pub fn gtk_bitset_get_size_in_range(
        self_: *const GtkBitset,
        first: c_uint,
        last: c_uint,
    ) -> u64;
    pub fn gtk_bitset_intersect(self_: *mut GtkBitset, other: *const GtkBitset);
    pub fn gtk_bitset_is_empty(self_: *const GtkBitset) -> gboolean;
    pub fn gtk_bitset_ref(self_: *mut GtkBitset) -> *mut GtkBitset;
    pub fn gtk_bitset_remove(self_: *mut GtkBitset, value: c_uint) -> gboolean;
    pub fn gtk_bitset_remove_all(self_: *mut GtkBitset);
    pub fn gtk_bitset_remove_range(self_: *mut GtkBitset, start: c_uint, n_items: c_uint);
    pub fn gtk_bitset_remove_range_closed(self_: *mut GtkBitset, first: c_uint, last: c_uint);
    pub fn gtk_bitset_remove_rectangle(
        self_: *mut GtkBitset,
        start: c_uint,
        width: c_uint,
        height: c_uint,
        stride: c_uint,
    );
    pub fn gtk_bitset_shift_left(self_: *mut GtkBitset, amount: c_uint);
    pub fn gtk_bitset_shift_right(self_: *mut GtkBitset, amount: c_uint);
    pub fn gtk_bitset_splice(
        self_: *mut GtkBitset,
        position: c_uint,
        removed: c_uint,
        added: c_uint,
    );
    pub fn gtk_bitset_subtract(self_: *mut GtkBitset, other: *const GtkBitset);
    pub fn gtk_bitset_union(self_: *mut GtkBitset, other: *const GtkBitset);
    pub fn gtk_bitset_unref(self_: *mut GtkBitset);

    //=========================================================================
    // GtkBitsetIter
    //=========================================================================
    pub fn gtk_bitset_iter_get_value(iter: *const GtkBitsetIter) -> c_uint;
    pub fn gtk_bitset_iter_is_valid(iter: *const GtkBitsetIter) -> gboolean;
    pub fn gtk_bitset_iter_next(iter: *mut GtkBitsetIter, value: *mut c_uint) -> gboolean;
    pub fn gtk_bitset_iter_previous(iter: *mut GtkBitsetIter, value: *mut c_uint) -> gboolean;
    pub fn gtk_bitset_iter_init_at(
        iter: *mut GtkBitsetIter,
        set: *const GtkBitset,
        target: c_uint,
        value: *mut c_uint,
    ) -> gboolean;
    pub fn gtk_bitset_iter_init_first(
        iter: *mut GtkBitsetIter,
        set: *const GtkBitset,
        value: *mut c_uint,
    ) -> gboolean;
    pub fn gtk_bitset_iter_init_last(
        iter: *mut GtkBitsetIter,
        set: *const GtkBitset,
        value: *mut c_uint,
    ) -> gboolean;

    //=========================================================================
    // 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);

    //=========================================================================
    // GtkBuildableParseContext
    //=========================================================================
    pub fn gtk_buildable_parse_context_get_element(
        context: *mut GtkBuildableParseContext,
    ) -> *const c_char;
    pub fn gtk_buildable_parse_context_get_element_stack(
        context: *mut GtkBuildableParseContext,
    ) -> *mut glib::GPtrArray;
    pub fn gtk_buildable_parse_context_get_position(
        context: *mut GtkBuildableParseContext,
        line_number: *mut c_int,
        char_number: *mut c_int,
    );
    pub fn gtk_buildable_parse_context_pop(context: *mut GtkBuildableParseContext) -> gpointer;
    pub fn gtk_buildable_parse_context_push(
        context: *mut GtkBuildableParseContext,
        parser: *const GtkBuildableParser,
        user_data: gpointer,
    );

    //=========================================================================
    // 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;

    //=========================================================================
    // GtkCssSection
    //=========================================================================
    pub fn gtk_css_section_get_type() -> GType;
    pub fn gtk_css_section_new(
        file: *mut gio::GFile,
        start: *const GtkCssLocation,
        end: *const GtkCssLocation,
    ) -> *mut GtkCssSection;
    pub fn gtk_css_section_get_end_location(section: *const GtkCssSection)
        -> *const GtkCssLocation;
    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_start_location(
        section: *const GtkCssSection,
    ) -> *const GtkCssLocation;
    pub fn gtk_css_section_print(section: *const GtkCssSection, string: *mut glib::GString);
    pub fn gtk_css_section_ref(section: *mut GtkCssSection) -> *mut GtkCssSection;
    pub fn gtk_css_section_to_string(section: *const GtkCssSection) -> *mut c_char;
    pub fn gtk_css_section_unref(section: *mut GtkCssSection);

    //=========================================================================
    // GtkExpressionWatch
    //=========================================================================
    #[cfg(any(feature = "v4_2", feature = "dox"))]
    #[cfg_attr(feature = "dox", doc(cfg(feature = "v4_2")))]
    pub fn gtk_expression_watch_get_type() -> GType;
    pub fn gtk_expression_watch_evaluate(
        watch: *mut GtkExpressionWatch,
        value: *mut gobject::GValue,
    ) -> gboolean;
    pub fn gtk_expression_watch_ref(watch: *mut GtkExpressionWatch) -> *mut GtkExpressionWatch;
    pub fn gtk_expression_watch_unref(watch: *mut GtkExpressionWatch);
    pub fn gtk_expression_watch_unwatch(watch: *mut GtkExpressionWatch);

    //=========================================================================
    // 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;

    //=========================================================================
    // 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) -> *mut glib::GDateTime;
    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,
        stamp: *mut *mut glib::GDateTime,
    ) -> 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_mime_type(info: *mut GtkRecentInfo) -> *const c_char;
    pub fn gtk_recent_info_get_modified(info: *mut GtkRecentInfo) -> *mut glib::GDateTime;
    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) -> *mut glib::GDateTime;
    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);

    //=========================================================================
    // 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_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_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_paintable(iter: *const GtkTextIter) -> *mut gdk::GdkPaintable;
    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_add_binding(
        widget_class: *mut GtkWidgetClass,
        keyval: c_uint,
        mods: gdk::GdkModifierType,
        callback: GtkShortcutFunc,
        format_string: *const c_char,
        ...
    );
    pub fn gtk_widget_class_add_binding_action(
        widget_class: *mut GtkWidgetClass,
        keyval: c_uint,
        mods: gdk::GdkModifierType,
        action_name: *const c_char,
        format_string: *const c_char,
        ...
    );
    pub fn gtk_widget_class_add_binding_signal(
        widget_class: *mut GtkWidgetClass,
        keyval: c_uint,
        mods: gdk::GdkModifierType,
        signal: *const c_char,
        format_string: *const c_char,
        ...
    );
    pub fn gtk_widget_class_add_shortcut(
        widget_class: *mut GtkWidgetClass,
        shortcut: *mut GtkShortcut,
    );
    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_get_accessible_role(
        widget_class: *mut GtkWidgetClass,
    ) -> GtkAccessibleRole;
    pub fn gtk_widget_class_get_activate_signal(widget_class: *mut GtkWidgetClass) -> c_uint;
    pub fn gtk_widget_class_get_css_name(widget_class: *mut GtkWidgetClass) -> *const c_char;
    pub fn gtk_widget_class_get_layout_manager_type(widget_class: *mut GtkWidgetClass) -> GType;
    pub fn gtk_widget_class_install_action(
        widget_class: *mut GtkWidgetClass,
        action_name: *const c_char,
        parameter_type: *const c_char,
        activate: GtkWidgetActionActivateFunc,
    );
    pub fn gtk_widget_class_install_property_action(
        widget_class: *mut GtkWidgetClass,
        action_name: *const c_char,
        property_name: *const c_char,
    );
    pub fn gtk_widget_class_query_action(
        widget_class: *mut GtkWidgetClass,
        index_: c_uint,
        owner: *mut GType,
        action_name: *mut *const c_char,
        parameter_type: *mut *const glib::GVariantType,
        property_name: *mut *const c_char,
    ) -> gboolean;
    pub fn gtk_widget_class_set_accessible_role(
        widget_class: *mut GtkWidgetClass,
        accessible_role: GtkAccessibleRole,
    );
    pub fn gtk_widget_class_set_activate_signal(
        widget_class: *mut GtkWidgetClass,
        signal_id: c_uint,
    );
    pub fn gtk_widget_class_set_activate_signal_from_name(
        widget_class: *mut GtkWidgetClass,
        signal_name: *const c_char,
    );
    pub fn gtk_widget_class_set_css_name(widget_class: *mut GtkWidgetClass, name: *const c_char);
    pub fn gtk_widget_class_set_layout_manager_type(
        widget_class: *mut GtkWidgetClass,
        type_: GType,
    );
    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,
    );
    pub fn gtk_widget_class_set_template_scope(
        widget_class: *mut GtkWidgetClass,
        scope: *mut GtkBuilderScope,
    );

    //=========================================================================
    // GtkATContext
    //=========================================================================
    pub fn gtk_at_context_get_type() -> GType;
    pub fn gtk_at_context_create(
        accessible_role: GtkAccessibleRole,
        accessible: *mut GtkAccessible,
        display: *mut gdk::GdkDisplay,
    ) -> *mut GtkATContext;
    pub fn gtk_at_context_get_accessible(self_: *mut GtkATContext) -> *mut GtkAccessible;
    pub fn gtk_at_context_get_accessible_role(self_: *mut GtkATContext) -> GtkAccessibleRole;

    //=========================================================================
    // 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::GdkPaintable;
    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_system_information(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::GdkPaintable);
    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_system_information(
        about: *mut GtkAboutDialog,
        system_information: *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);

    //=========================================================================
    // 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_get_revealed(action_bar: *mut GtkActionBar) -> gboolean;
    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_remove(action_bar: *mut GtkActionBar, child: *mut GtkWidget);
    pub fn gtk_action_bar_set_center_widget(
        action_bar: *mut GtkActionBar,
        center_widget: *mut GtkWidget,
    );
    pub fn gtk_action_bar_set_revealed(action_bar: *mut GtkActionBar, revealed: gboolean);

    //=========================================================================
    // GtkActivateAction
    //=========================================================================
    pub fn gtk_activate_action_get_type() -> GType;
    pub fn gtk_activate_action_get() -> *mut GtkActivateAction;

    //=========================================================================
    // 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_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);

    //=========================================================================
    // GtkAlternativeTrigger
    //=========================================================================
    pub fn gtk_alternative_trigger_get_type() -> GType;
    pub fn gtk_alternative_trigger_new(
        first: *mut GtkShortcutTrigger,
        second: *mut GtkShortcutTrigger,
    ) -> *mut GtkShortcutTrigger;
    pub fn gtk_alternative_trigger_get_first(
        self_: *mut GtkAlternativeTrigger,
    ) -> *mut GtkShortcutTrigger;
    pub fn gtk_alternative_trigger_get_second(
        self_: *mut GtkAlternativeTrigger,
    ) -> *mut GtkShortcutTrigger;

    //=========================================================================
    // GtkAnyFilter
    //=========================================================================
    pub fn gtk_any_filter_get_type() -> GType;
    pub fn gtk_any_filter_new() -> *mut GtkAnyFilter;

    //=========================================================================
    // 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_modal(self_: *mut GtkAppChooserButton) -> gboolean;
    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_modal(self_: *mut GtkAppChooserButton, modal: gboolean);
    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_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_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_list_action_descriptions(
        application: *mut GtkApplication,
    ) -> *mut *mut c_char;
    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_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,
    );

    //=========================================================================
    // GtkAspectFrame
    //=========================================================================
    pub fn gtk_aspect_frame_get_type() -> GType;
    pub fn gtk_aspect_frame_new(
        xalign: c_float,
        yalign: c_float,
        ratio: c_float,
        obey_child: gboolean,
    ) -> *mut GtkWidget;
    pub fn gtk_aspect_frame_get_child(self_: *mut GtkAspectFrame) -> *mut GtkWidget;
    pub fn gtk_aspect_frame_get_obey_child(self_: *mut GtkAspectFrame) -> gboolean;
    pub fn gtk_aspect_frame_get_ratio(self_: *mut GtkAspectFrame) -> c_float;
    pub fn gtk_aspect_frame_get_xalign(self_: *mut GtkAspectFrame) -> c_float;
    pub fn gtk_aspect_frame_get_yalign(self_: *mut GtkAspectFrame) -> c_float;
    pub fn gtk_aspect_frame_set_child(self_: *mut GtkAspectFrame, child: *mut GtkWidget);
    pub fn gtk_aspect_frame_set_obey_child(self_: *mut GtkAspectFrame, obey_child: gboolean);
    pub fn gtk_aspect_frame_set_ratio(self_: *mut GtkAspectFrame, ratio: c_float);
    pub fn gtk_aspect_frame_set_xalign(self_: *mut GtkAspectFrame, xalign: c_float);
    pub fn gtk_aspect_frame_set_yalign(self_: *mut GtkAspectFrame, yalign: c_float);

    //=========================================================================
    // 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(
        assistant: *mut GtkAssistant,
        child: *mut GtkWidget,
    ) -> *mut GtkAssistantPage;
    pub fn gtk_assistant_get_page_complete(
        assistant: *mut GtkAssistant,
        page: *mut GtkWidget,
    ) -> gboolean;
    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_get_pages(assistant: *mut GtkAssistant) -> *mut gio::GListModel;
    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_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);

    //=========================================================================
    // GtkAssistantPage
    //=========================================================================
    pub fn gtk_assistant_page_get_type() -> GType;
    pub fn gtk_assistant_page_get_child(page: *mut GtkAssistantPage) -> *mut GtkWidget;

    //=========================================================================
    // GtkBinLayout
    //=========================================================================
    pub fn gtk_bin_layout_get_type() -> GType;
    pub fn gtk_bin_layout_new() -> *mut GtkLayoutManager;

    //=========================================================================
    // GtkBookmarkList
    //=========================================================================
    pub fn gtk_bookmark_list_get_type() -> GType;
    pub fn gtk_bookmark_list_new(
        filename: *const c_char,
        attributes: *const c_char,
    ) -> *mut GtkBookmarkList;
    pub fn gtk_bookmark_list_get_attributes(self_: *mut GtkBookmarkList) -> *const c_char;
    pub fn gtk_bookmark_list_get_filename(self_: *mut GtkBookmarkList) -> *const c_char;
    pub fn gtk_bookmark_list_get_io_priority(self_: *mut GtkBookmarkList) -> c_int;
    pub fn gtk_bookmark_list_is_loading(self_: *mut GtkBookmarkList) -> gboolean;
    pub fn gtk_bookmark_list_set_attributes(self_: *mut GtkBookmarkList, attributes: *const c_char);
    pub fn gtk_bookmark_list_set_io_priority(self_: *mut GtkBookmarkList, io_priority: c_int);

    //=========================================================================
    // GtkBoolFilter
    //=========================================================================
    pub fn gtk_bool_filter_get_type() -> GType;
    pub fn gtk_bool_filter_new(expression: *mut GtkExpression) -> *mut GtkBoolFilter;
    pub fn gtk_bool_filter_get_expression(self_: *mut GtkBoolFilter) -> *mut GtkExpression;
    pub fn gtk_bool_filter_get_invert(self_: *mut GtkBoolFilter) -> gboolean;
    pub fn gtk_bool_filter_set_expression(
        self_: *mut GtkBoolFilter,
        expression: *mut GtkExpression,
    );
    pub fn gtk_bool_filter_set_invert(self_: *mut GtkBoolFilter, invert: gboolean);

    //=========================================================================
    // GtkBox
    //=========================================================================
    pub fn gtk_box_get_type() -> GType;
    pub fn gtk_box_new(orientation: GtkOrientation, spacing: c_int) -> *mut GtkWidget;
    pub fn gtk_box_append(box_: *mut GtkBox, child: *mut GtkWidget);
    pub fn gtk_box_get_baseline_position(box_: *mut GtkBox) -> GtkBaselinePosition;
    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_insert_child_after(
        box_: *mut GtkBox,
        child: *mut GtkWidget,
        sibling: *mut GtkWidget,
    );
    pub fn gtk_box_prepend(box_: *mut GtkBox, child: *mut GtkWidget);
    pub fn gtk_box_remove(box_: *mut GtkBox, child: *mut GtkWidget);
    pub fn gtk_box_reorder_child_after(
        box_: *mut GtkBox,
        child: *mut GtkWidget,
        sibling: *mut GtkWidget,
    );
    pub fn gtk_box_set_baseline_position(box_: *mut GtkBox, position: GtkBaselinePosition);
    pub fn gtk_box_set_homogeneous(box_: *mut GtkBox, homogeneous: gboolean);
    pub fn gtk_box_set_spacing(box_: *mut GtkBox, spacing: c_int);

    //=========================================================================
    // GtkBoxLayout
    //=========================================================================
    pub fn gtk_box_layout_get_type() -> GType;
    pub fn gtk_box_layout_new(orientation: GtkOrientation) -> *mut GtkLayoutManager;
    pub fn gtk_box_layout_get_baseline_position(
        box_layout: *mut GtkBoxLayout,
    ) -> GtkBaselinePosition;
    pub fn gtk_box_layout_get_homogeneous(box_layout: *mut GtkBoxLayout) -> gboolean;
    pub fn gtk_box_layout_get_spacing(box_layout: *mut GtkBoxLayout) -> c_uint;
    pub fn gtk_box_layout_set_baseline_position(
        box_layout: *mut GtkBoxLayout,
        position: GtkBaselinePosition,
    );
    pub fn gtk_box_layout_set_homogeneous(box_layout: *mut GtkBoxLayout, homogeneous: gboolean);
    pub fn gtk_box_layout_set_spacing(box_layout: *mut GtkBoxLayout, spacing: c_uint);

    //=========================================================================
    // 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_from_file(
        builder: *mut GtkBuilder,
        filename: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_builder_add_from_resource(
        builder: *mut GtkBuilder,
        resource_path: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_builder_add_from_string(
        builder: *mut GtkBuilder,
        buffer: *const c_char,
        length: ssize_t,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_builder_add_objects_from_file(
        builder: *mut GtkBuilder,
        filename: *const c_char,
        object_ids: *mut *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_builder_add_objects_from_resource(
        builder: *mut GtkBuilder,
        resource_path: *const c_char,
        object_ids: *mut *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_builder_add_objects_from_string(
        builder: *mut GtkBuilder,
        buffer: *const c_char,
        length: ssize_t,
        object_ids: *mut *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_builder_create_closure(
        builder: *mut GtkBuilder,
        function_name: *const c_char,
        flags: GtkBuilderClosureFlags,
        object: *mut gobject::GObject,
        error: *mut *mut glib::GError,
    ) -> *mut gobject::GClosure;
    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,
        object: *mut gobject::GObject,
        template_type: GType,
        buffer: *const c_char,
        length: ssize_t,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_builder_get_current_object(builder: *mut GtkBuilder) -> *mut gobject::GObject;
    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_scope(builder: *mut GtkBuilder) -> *mut GtkBuilderScope;
    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_set_current_object(
        builder: *mut GtkBuilder,
        current_object: *mut gobject::GObject,
    );
    pub fn gtk_builder_set_scope(builder: *mut GtkBuilder, scope: *mut GtkBuilderScope);
    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;

    //=========================================================================
    // GtkBuilderCScope
    //=========================================================================
    pub fn gtk_builder_cscope_get_type() -> GType;
    pub fn gtk_builder_cscope_new() -> *mut GtkBuilderCScope;
    pub fn gtk_builder_cscope_add_callback_symbol(
        self_: *mut GtkBuilderCScope,
        callback_name: *const c_char,
        callback_symbol: gobject::GCallback,
    );
    pub fn gtk_builder_cscope_add_callback_symbols(
        self_: *mut GtkBuilderCScope,
        first_callback_name: *const c_char,
        first_callback_symbol: gobject::GCallback,
        ...
    );
    pub fn gtk_builder_cscope_lookup_callback_symbol(
        self_: *mut GtkBuilderCScope,
        callback_name: *const c_char,
    ) -> gobject::GCallback;

    //=========================================================================
    // GtkBuilderListItemFactory
    //=========================================================================
    pub fn gtk_builder_list_item_factory_get_type() -> GType;
    pub fn gtk_builder_list_item_factory_new_from_bytes(
        scope: *mut GtkBuilderScope,
        bytes: *mut glib::GBytes,
    ) -> *mut GtkListItemFactory;
    pub fn gtk_builder_list_item_factory_new_from_resource(
        scope: *mut GtkBuilderScope,
        resource_path: *const c_char,
    ) -> *mut GtkListItemFactory;
    pub fn gtk_builder_list_item_factory_get_bytes(
        self_: *mut GtkBuilderListItemFactory,
    ) -> *mut glib::GBytes;
    pub fn gtk_builder_list_item_factory_get_resource(
        self_: *mut GtkBuilderListItemFactory,
    ) -> *const c_char;
    pub fn gtk_builder_list_item_factory_get_scope(
        self_: *mut GtkBuilderListItemFactory,
    ) -> *mut GtkBuilderScope;

    //=========================================================================
    // 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) -> *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_get_child(button: *mut GtkButton) -> *mut GtkWidget;
    pub fn gtk_button_get_has_frame(button: *mut GtkButton) -> gboolean;
    pub fn gtk_button_get_icon_name(button: *mut GtkButton) -> *const c_char;
    pub fn gtk_button_get_label(button: *mut GtkButton) -> *const c_char;
    pub fn gtk_button_get_use_underline(button: *mut GtkButton) -> gboolean;
    pub fn gtk_button_set_child(button: *mut GtkButton, child: *mut GtkWidget);
    pub fn gtk_button_set_has_frame(button: *mut GtkButton, has_frame: gboolean);
    pub fn gtk_button_set_icon_name(button: *mut GtkButton, icon_name: *const c_char);
    pub fn gtk_button_set_label(button: *mut GtkButton, label: *const c_char);
    pub fn gtk_button_set_use_underline(button: *mut GtkButton, use_underline: gboolean);

    //=========================================================================
    // GtkCClosureExpression
    //=========================================================================
    pub fn gtk_cclosure_expression_get_type() -> GType;
    pub fn gtk_cclosure_expression_new(
        value_type: GType,
        marshal: gobject::GClosureMarshal,
        n_params: c_uint,
        params: *mut *mut GtkExpression,
        callback_func: gobject::GCallback,
        user_data: gpointer,
        user_destroy: gobject::GClosureNotify,
    ) -> *mut GtkCClosureExpression;

    //=========================================================================
    // 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(self_: *mut GtkCalendar) -> *mut glib::GDateTime;
    pub fn gtk_calendar_get_day_is_marked(calendar: *mut GtkCalendar, day: c_uint) -> gboolean;
    pub fn gtk_calendar_get_show_day_names(self_: *mut GtkCalendar) -> gboolean;
    pub fn gtk_calendar_get_show_heading(self_: *mut GtkCalendar) -> gboolean;
    pub fn gtk_calendar_get_show_week_numbers(self_: *mut GtkCalendar) -> gboolean;
    pub fn gtk_calendar_mark_day(calendar: *mut GtkCalendar, day: c_uint);
    pub fn gtk_calendar_select_day(self_: *mut GtkCalendar, date: *mut glib::GDateTime);
    pub fn gtk_calendar_set_show_day_names(self_: *mut GtkCalendar, value: gboolean);
    pub fn gtk_calendar_set_show_heading(self_: *mut GtkCalendar, value: gboolean);
    pub fn gtk_calendar_set_show_week_numbers(self_: *mut GtkCalendar, value: gboolean);
    pub fn gtk_calendar_unmark_day(calendar: *mut GtkCalendar, day: c_uint);

    //=========================================================================
    // GtkCallbackAction
    //=========================================================================
    pub fn gtk_callback_action_get_type() -> GType;
    pub fn gtk_callback_action_new(
        callback: GtkShortcutFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
    ) -> *mut GtkCallbackAction;

    //=========================================================================
    // 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_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_snapshot(
        area: *mut GtkCellArea,
        context: *mut GtkCellAreaContext,
        widget: *mut GtkWidget,
        snapshot: *mut GtkSnapshot,
        background_area: *const gdk::GdkRectangle,
        cell_area: *const gdk::GdkRectangle,
        flags: GtkCellRendererState,
        paint_focus: gboolean,
    );
    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_is_expanded(cell: *mut GtkCellRenderer) -> gboolean;
    pub fn gtk_cell_renderer_get_is_expander(cell: *mut GtkCellRenderer) -> gboolean;
    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_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_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_is_expanded(cell: *mut GtkCellRenderer, is_expanded: gboolean);
    pub fn gtk_cell_renderer_set_is_expander(cell: *mut GtkCellRenderer, is_expander: gboolean);
    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_snapshot(
        cell: *mut GtkCellRenderer,
        snapshot: *mut GtkSnapshot,
        widget: *mut GtkWidget,
        background_area: *const gdk::GdkRectangle,
        cell_area: *const gdk::GdkRectangle,
        flags: GtkCellRendererState,
    );
    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_text(text: *const c_char) -> *mut GtkWidget;
    pub fn gtk_cell_view_new_with_texture(texture: *mut gdk::GdkTexture) -> *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_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);

    //=========================================================================
    // GtkCenterBox
    //=========================================================================
    pub fn gtk_center_box_get_type() -> GType;
    pub fn gtk_center_box_new() -> *mut GtkWidget;
    pub fn gtk_center_box_get_baseline_position(self_: *mut GtkCenterBox) -> GtkBaselinePosition;
    pub fn gtk_center_box_get_center_widget(self_: *mut GtkCenterBox) -> *mut GtkWidget;
    pub fn gtk_center_box_get_end_widget(self_: *mut GtkCenterBox) -> *mut GtkWidget;
    pub fn gtk_center_box_get_start_widget(self_: *mut GtkCenterBox) -> *mut GtkWidget;
    pub fn gtk_center_box_set_baseline_position(
        self_: *mut GtkCenterBox,
        position: GtkBaselinePosition,
    );
    pub fn gtk_center_box_set_center_widget(self_: *mut GtkCenterBox, child: *mut GtkWidget);
    pub fn gtk_center_box_set_end_widget(self_: *mut GtkCenterBox, child: *mut GtkWidget);
    pub fn gtk_center_box_set_start_widget(self_: *mut GtkCenterBox, child: *mut GtkWidget);

    //=========================================================================
    // GtkCenterLayout
    //=========================================================================
    pub fn gtk_center_layout_get_type() -> GType;
    pub fn gtk_center_layout_new() -> *mut GtkLayoutManager;
    pub fn gtk_center_layout_get_baseline_position(
        self_: *mut GtkCenterLayout,
    ) -> GtkBaselinePosition;
    pub fn gtk_center_layout_get_center_widget(self_: *mut GtkCenterLayout) -> *mut GtkWidget;
    pub fn gtk_center_layout_get_end_widget(self_: *mut GtkCenterLayout) -> *mut GtkWidget;
    pub fn gtk_center_layout_get_orientation(self_: *mut GtkCenterLayout) -> GtkOrientation;
    pub fn gtk_center_layout_get_start_widget(self_: *mut GtkCenterLayout) -> *mut GtkWidget;
    pub fn gtk_center_layout_set_baseline_position(
        self_: *mut GtkCenterLayout,
        baseline_position: GtkBaselinePosition,
    );
    pub fn gtk_center_layout_set_center_widget(self_: *mut GtkCenterLayout, widget: *mut GtkWidget);
    pub fn gtk_center_layout_set_end_widget(self_: *mut GtkCenterLayout, widget: *mut GtkWidget);
    pub fn gtk_center_layout_set_orientation(
        self_: *mut GtkCenterLayout,
        orientation: GtkOrientation,
    );
    pub fn gtk_center_layout_set_start_widget(self_: *mut GtkCenterLayout, widget: *mut GtkWidget);

    //=========================================================================
    // 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;
    pub fn gtk_check_button_get_active(self_: *mut GtkCheckButton) -> gboolean;
    pub fn gtk_check_button_get_inconsistent(check_button: *mut GtkCheckButton) -> gboolean;
    pub fn gtk_check_button_get_label(self_: *mut GtkCheckButton) -> *const c_char;
    pub fn gtk_check_button_get_use_underline(self_: *mut GtkCheckButton) -> gboolean;
    pub fn gtk_check_button_set_active(self_: *mut GtkCheckButton, setting: gboolean);
    pub fn gtk_check_button_set_group(self_: *mut GtkCheckButton, group: *mut GtkCheckButton);
    pub fn gtk_check_button_set_inconsistent(
        check_button: *mut GtkCheckButton,
        inconsistent: gboolean,
    );
    pub fn gtk_check_button_set_label(self_: *mut GtkCheckButton, label: *const c_char);
    pub fn gtk_check_button_set_use_underline(self_: *mut GtkCheckButton, setting: gboolean);

    //=========================================================================
    // GtkClosureExpression
    //=========================================================================
    pub fn gtk_closure_expression_get_type() -> GType;
    pub fn gtk_closure_expression_new(
        value_type: GType,
        closure: *mut gobject::GClosure,
        n_params: c_uint,
        params: *mut *mut GtkExpression,
    ) -> *mut GtkClosureExpression;

    //=========================================================================
    // GtkColorButton
    //=========================================================================
    pub fn gtk_color_button_get_type() -> GType;
    pub fn gtk_color_button_new() -> *mut GtkWidget;
    pub fn gtk_color_button_new_with_rgba(rgba: *const gdk::GdkRGBA) -> *mut GtkWidget;
    pub fn gtk_color_button_get_modal(button: *mut GtkColorButton) -> gboolean;
    pub fn gtk_color_button_get_title(button: *mut GtkColorButton) -> *const c_char;
    pub fn gtk_color_button_set_modal(button: *mut GtkColorButton, modal: gboolean);
    pub fn gtk_color_button_set_title(button: *mut GtkColorButton, title: *const c_char);

    //=========================================================================
    // 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;

    //=========================================================================
    // GtkColumnView
    //=========================================================================
    pub fn gtk_column_view_get_type() -> GType;
    pub fn gtk_column_view_new(model: *mut GtkSelectionModel) -> *mut GtkWidget;
    pub fn gtk_column_view_append_column(
        self_: *mut GtkColumnView,
        column: *mut GtkColumnViewColumn,
    );
    pub fn gtk_column_view_get_columns(self_: *mut GtkColumnView) -> *mut gio::GListModel;
    pub fn gtk_column_view_get_enable_rubberband(self_: *mut GtkColumnView) -> gboolean;
    pub fn gtk_column_view_get_model(self_: *mut GtkColumnView) -> *mut GtkSelectionModel;
    pub fn gtk_column_view_get_reorderable(self_: *mut GtkColumnView) -> gboolean;
    pub fn gtk_column_view_get_show_column_separators(self_: *mut GtkColumnView) -> gboolean;
    pub fn gtk_column_view_get_show_row_separators(self_: *mut GtkColumnView) -> gboolean;
    pub fn gtk_column_view_get_single_click_activate(self_: *mut GtkColumnView) -> gboolean;
    pub fn gtk_column_view_get_sorter(self_: *mut GtkColumnView) -> *mut GtkSorter;
    pub fn gtk_column_view_insert_column(
        self_: *mut GtkColumnView,
        position: c_uint,
        column: *mut GtkColumnViewColumn,
    );
    pub fn gtk_column_view_remove_column(
        self_: *mut GtkColumnView,
        column: *mut GtkColumnViewColumn,
    );
    pub fn gtk_column_view_set_enable_rubberband(
        self_: *mut GtkColumnView,
        enable_rubberband: gboolean,
    );
    pub fn gtk_column_view_set_model(self_: *mut GtkColumnView, model: *mut GtkSelectionModel);
    pub fn gtk_column_view_set_reorderable(self_: *mut GtkColumnView, reorderable: gboolean);
    pub fn gtk_column_view_set_show_column_separators(
        self_: *mut GtkColumnView,
        show_column_separators: gboolean,
    );
    pub fn gtk_column_view_set_show_row_separators(
        self_: *mut GtkColumnView,
        show_row_separators: gboolean,
    );
    pub fn gtk_column_view_set_single_click_activate(
        self_: *mut GtkColumnView,
        single_click_activate: gboolean,
    );
    pub fn gtk_column_view_sort_by_column(
        self_: *mut GtkColumnView,
        column: *mut GtkColumnViewColumn,
        direction: GtkSortType,
    );

    //=========================================================================
    // GtkColumnViewColumn
    //=========================================================================
    pub fn gtk_column_view_column_get_type() -> GType;
    pub fn gtk_column_view_column_new(
        title: *const c_char,
        factory: *mut GtkListItemFactory,
    ) -> *mut GtkColumnViewColumn;
    pub fn gtk_column_view_column_get_column_view(
        self_: *mut GtkColumnViewColumn,
    ) -> *mut GtkColumnView;
    pub fn gtk_column_view_column_get_expand(self_: *mut GtkColumnViewColumn) -> gboolean;
    pub fn gtk_column_view_column_get_factory(
        self_: *mut GtkColumnViewColumn,
    ) -> *mut GtkListItemFactory;
    pub fn gtk_column_view_column_get_fixed_width(self_: *mut GtkColumnViewColumn) -> c_int;
    pub fn gtk_column_view_column_get_header_menu(
        self_: *mut GtkColumnViewColumn,
    ) -> *mut gio::GMenuModel;
    pub fn gtk_column_view_column_get_resizable(self_: *mut GtkColumnViewColumn) -> gboolean;
    pub fn gtk_column_view_column_get_sorter(self_: *mut GtkColumnViewColumn) -> *mut GtkSorter;
    pub fn gtk_column_view_column_get_title(self_: *mut GtkColumnViewColumn) -> *const c_char;
    pub fn gtk_column_view_column_get_visible(self_: *mut GtkColumnViewColumn) -> gboolean;
    pub fn gtk_column_view_column_set_expand(self_: *mut GtkColumnViewColumn, expand: gboolean);
    pub fn gtk_column_view_column_set_factory(
        self_: *mut GtkColumnViewColumn,
        factory: *mut GtkListItemFactory,
    );
    pub fn gtk_column_view_column_set_fixed_width(
        self_: *mut GtkColumnViewColumn,
        fixed_width: c_int,
    );
    pub fn gtk_column_view_column_set_header_menu(
        self_: *mut GtkColumnViewColumn,
        menu: *mut gio::GMenuModel,
    );
    pub fn gtk_column_view_column_set_resizable(
        self_: *mut GtkColumnViewColumn,
        resizable: gboolean,
    );
    pub fn gtk_column_view_column_set_sorter(
        self_: *mut GtkColumnViewColumn,
        sorter: *mut GtkSorter,
    );
    pub fn gtk_column_view_column_set_title(self_: *mut GtkColumnViewColumn, title: *const c_char);
    pub fn gtk_column_view_column_set_visible(self_: *mut GtkColumnViewColumn, visible: gboolean);

    //=========================================================================
    // GtkComboBox
    //=========================================================================
    pub fn gtk_combo_box_get_type() -> GType;
    pub fn gtk_combo_box_new() -> *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_button_sensitivity(combo_box: *mut GtkComboBox) -> GtkSensitivityType;
    pub fn gtk_combo_box_get_child(combo_box: *mut GtkComboBox) -> *mut GtkWidget;
    pub fn gtk_combo_box_get_entry_text_column(combo_box: *mut GtkComboBox) -> c_int;
    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_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_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_button_sensitivity(
        combo_box: *mut GtkComboBox,
        sensitivity: GtkSensitivityType,
    );
    pub fn gtk_combo_box_set_child(combo_box: *mut GtkComboBox, child: *mut GtkWidget);
    pub fn gtk_combo_box_set_entry_text_column(combo_box: *mut GtkComboBox, text_column: c_int);
    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,
    );

    //=========================================================================
    // 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);

    //=========================================================================
    // GtkConstantExpression
    //=========================================================================
    pub fn gtk_constant_expression_get_type() -> GType;
    pub fn gtk_constant_expression_new(value_type: GType, ...) -> *mut GtkConstantExpression;
    pub fn gtk_constant_expression_new_for_value(
        value: *const gobject::GValue,
    ) -> *mut GtkConstantExpression;
    pub fn gtk_constant_expression_get_value(
        expression: *mut GtkConstantExpression,
    ) -> *const gobject::GValue;

    //=========================================================================
    // GtkConstraint
    //=========================================================================
    pub fn gtk_constraint_get_type() -> GType;
    pub fn gtk_constraint_new(
        target: *mut GtkConstraintTarget,
        target_attribute: GtkConstraintAttribute,
        relation: GtkConstraintRelation,
        source: *mut GtkConstraintTarget,
        source_attribute: GtkConstraintAttribute,
        multiplier: c_double,
        constant: c_double,
        strength: c_int,
    ) -> *mut GtkConstraint;
    pub fn gtk_constraint_new_constant(
        target: *mut GtkConstraintTarget,
        target_attribute: GtkConstraintAttribute,
        relation: GtkConstraintRelation,
        constant: c_double,
        strength: c_int,
    ) -> *mut GtkConstraint;
    pub fn gtk_constraint_get_constant(constraint: *mut GtkConstraint) -> c_double;
    pub fn gtk_constraint_get_multiplier(constraint: *mut GtkConstraint) -> c_double;
    pub fn gtk_constraint_get_relation(constraint: *mut GtkConstraint) -> GtkConstraintRelation;
    pub fn gtk_constraint_get_source(constraint: *mut GtkConstraint) -> *mut GtkConstraintTarget;
    pub fn gtk_constraint_get_source_attribute(
        constraint: *mut GtkConstraint,
    ) -> GtkConstraintAttribute;
    pub fn gtk_constraint_get_strength(constraint: *mut GtkConstraint) -> c_int;
    pub fn gtk_constraint_get_target(constraint: *mut GtkConstraint) -> *mut GtkConstraintTarget;
    pub fn gtk_constraint_get_target_attribute(
        constraint: *mut GtkConstraint,
    ) -> GtkConstraintAttribute;
    pub fn gtk_constraint_is_attached(constraint: *mut GtkConstraint) -> gboolean;
    pub fn gtk_constraint_is_constant(constraint: *mut GtkConstraint) -> gboolean;
    pub fn gtk_constraint_is_required(constraint: *mut GtkConstraint) -> gboolean;

    //=========================================================================
    // GtkConstraintGuide
    //=========================================================================
    pub fn gtk_constraint_guide_get_type() -> GType;
    pub fn gtk_constraint_guide_new() -> *mut GtkConstraintGuide;
    pub fn gtk_constraint_guide_get_max_size(
        guide: *mut GtkConstraintGuide,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_constraint_guide_get_min_size(
        guide: *mut GtkConstraintGuide,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_constraint_guide_get_name(guide: *mut GtkConstraintGuide) -> *const c_char;
    pub fn gtk_constraint_guide_get_nat_size(
        guide: *mut GtkConstraintGuide,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_constraint_guide_get_strength(
        guide: *mut GtkConstraintGuide,
    ) -> GtkConstraintStrength;
    pub fn gtk_constraint_guide_set_max_size(
        guide: *mut GtkConstraintGuide,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_constraint_guide_set_min_size(
        guide: *mut GtkConstraintGuide,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_constraint_guide_set_name(guide: *mut GtkConstraintGuide, name: *const c_char);
    pub fn gtk_constraint_guide_set_nat_size(
        guide: *mut GtkConstraintGuide,
        width: c_int,
        height: c_int,
    );
    pub fn gtk_constraint_guide_set_strength(
        guide: *mut GtkConstraintGuide,
        strength: GtkConstraintStrength,
    );

    //=========================================================================
    // GtkConstraintLayout
    //=========================================================================
    pub fn gtk_constraint_layout_get_type() -> GType;
    pub fn gtk_constraint_layout_new() -> *mut GtkLayoutManager;
    pub fn gtk_constraint_layout_add_constraint(
        layout: *mut GtkConstraintLayout,
        constraint: *mut GtkConstraint,
    );
    pub fn gtk_constraint_layout_add_constraints_from_description(
        layout: *mut GtkConstraintLayout,
        lines: *const *const c_char,
        n_lines: size_t,
        hspacing: c_int,
        vspacing: c_int,
        error: *mut *mut glib::GError,
        first_view: *const c_char,
        ...
    ) -> *mut glib::GList;
    pub fn gtk_constraint_layout_add_constraints_from_descriptionv(
        layout: *mut GtkConstraintLayout,
        lines: *const *const c_char,
        n_lines: size_t,
        hspacing: c_int,
        vspacing: c_int,
        views: *mut glib::GHashTable,
        error: *mut *mut glib::GError,
    ) -> *mut glib::GList;
    pub fn gtk_constraint_layout_add_guide(
        layout: *mut GtkConstraintLayout,
        guide: *mut GtkConstraintGuide,
    );
    pub fn gtk_constraint_layout_observe_constraints(
        layout: *mut GtkConstraintLayout,
    ) -> *mut gio::GListModel;
    pub fn gtk_constraint_layout_observe_guides(
        layout: *mut GtkConstraintLayout,
    ) -> *mut gio::GListModel;
    pub fn gtk_constraint_layout_remove_all_constraints(layout: *mut GtkConstraintLayout);
    pub fn gtk_constraint_layout_remove_constraint(
        layout: *mut GtkConstraintLayout,
        constraint: *mut GtkConstraint,
    );
    pub fn gtk_constraint_layout_remove_guide(
        layout: *mut GtkConstraintLayout,
        guide: *mut GtkConstraintGuide,
    );

    //=========================================================================
    // GtkConstraintLayoutChild
    //=========================================================================
    pub fn gtk_constraint_layout_child_get_type() -> GType;

    //=========================================================================
    // GtkCssProvider
    //=========================================================================
    pub fn gtk_css_provider_get_type() -> GType;
    pub fn gtk_css_provider_new() -> *mut GtkCssProvider;
    pub fn gtk_css_provider_load_from_data(
        css_provider: *mut GtkCssProvider,
        data: *const u8,
        length: ssize_t,
    );
    pub fn gtk_css_provider_load_from_file(
        css_provider: *mut GtkCssProvider,
        file: *mut gio::GFile,
    );
    pub fn gtk_css_provider_load_from_path(css_provider: *mut GtkCssProvider, path: *const c_char);
    pub fn gtk_css_provider_load_from_resource(
        css_provider: *mut GtkCssProvider,
        resource_path: *const c_char,
    );
    pub fn gtk_css_provider_load_named(
        provider: *mut GtkCssProvider,
        name: *const c_char,
        variant: *const c_char,
    );
    pub fn gtk_css_provider_to_string(provider: *mut GtkCssProvider) -> *mut c_char;

    //=========================================================================
    // GtkCustomFilter
    //=========================================================================
    pub fn gtk_custom_filter_get_type() -> GType;
    pub fn gtk_custom_filter_new(
        match_func: GtkCustomFilterFunc,
        user_data: gpointer,
        user_destroy: glib::GDestroyNotify,
    ) -> *mut GtkCustomFilter;
    pub fn gtk_custom_filter_set_filter_func(
        self_: *mut GtkCustomFilter,
        match_func: GtkCustomFilterFunc,
        user_data: gpointer,
        user_destroy: glib::GDestroyNotify,
    );

    //=========================================================================
    // GtkCustomLayout
    //=========================================================================
    pub fn gtk_custom_layout_get_type() -> GType;
    pub fn gtk_custom_layout_new(
        request_mode: GtkCustomRequestModeFunc,
        measure: GtkCustomMeasureFunc,
        allocate: GtkCustomAllocateFunc,
    ) -> *mut GtkLayoutManager;

    //=========================================================================
    // GtkCustomSorter
    //=========================================================================
    pub fn gtk_custom_sorter_get_type() -> GType;
    pub fn gtk_custom_sorter_new(
        sort_func: glib::GCompareDataFunc,
        user_data: gpointer,
        user_destroy: glib::GDestroyNotify,
    ) -> *mut GtkCustomSorter;
    pub fn gtk_custom_sorter_set_sort_func(
        self_: *mut GtkCustomSorter,
        sort_func: glib::GCompareDataFunc,
        user_data: gpointer,
        user_destroy: glib::GDestroyNotify,
    );

    //=========================================================================
    // 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_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_set_default_response(dialog: *mut GtkDialog, response_id: GtkResponseType);
    pub fn gtk_dialog_set_response_sensitive(
        dialog: *mut GtkDialog,
        response_id: GtkResponseType,
        setting: gboolean,
    );

    //=========================================================================
    // GtkDirectoryList
    //=========================================================================
    pub fn gtk_directory_list_get_type() -> GType;
    pub fn gtk_directory_list_new(
        attributes: *const c_char,
        file: *mut gio::GFile,
    ) -> *mut GtkDirectoryList;
    pub fn gtk_directory_list_get_attributes(self_: *mut GtkDirectoryList) -> *const c_char;
    pub fn gtk_directory_list_get_error(self_: *mut GtkDirectoryList) -> *const glib::GError;
    pub fn gtk_directory_list_get_file(self_: *mut GtkDirectoryList) -> *mut gio::GFile;
    pub fn gtk_directory_list_get_io_priority(self_: *mut GtkDirectoryList) -> c_int;
    pub fn gtk_directory_list_get_monitored(self_: *mut GtkDirectoryList) -> gboolean;
    pub fn gtk_directory_list_is_loading(self_: *mut GtkDirectoryList) -> gboolean;
    pub fn gtk_directory_list_set_attributes(
        self_: *mut GtkDirectoryList,
        attributes: *const c_char,
    );
    pub fn gtk_directory_list_set_file(self_: *mut GtkDirectoryList, file: *mut gio::GFile);
    pub fn gtk_directory_list_set_io_priority(self_: *mut GtkDirectoryList, io_priority: c_int);
    pub fn gtk_directory_list_set_monitored(self_: *mut GtkDirectoryList, monitored: gboolean);

    //=========================================================================
    // GtkDragIcon
    //=========================================================================
    pub fn gtk_drag_icon_get_type() -> GType;
    pub fn gtk_drag_icon_create_widget_for_value(value: *const gobject::GValue) -> *mut GtkWidget;
    pub fn gtk_drag_icon_get_for_drag(drag: *mut gdk::GdkDrag) -> *mut GtkWidget;
    pub fn gtk_drag_icon_set_from_paintable(
        drag: *mut gdk::GdkDrag,
        paintable: *mut gdk::GdkPaintable,
        hot_x: c_int,
        hot_y: c_int,
    );
    pub fn gtk_drag_icon_get_child(self_: *mut GtkDragIcon) -> *mut GtkWidget;
    pub fn gtk_drag_icon_set_child(self_: *mut GtkDragIcon, child: *mut GtkWidget);

    //=========================================================================
    // GtkDragSource
    //=========================================================================
    pub fn gtk_drag_source_get_type() -> GType;
    pub fn gtk_drag_source_new() -> *mut GtkDragSource;
    pub fn gtk_drag_source_drag_cancel(source: *mut GtkDragSource);
    pub fn gtk_drag_source_get_actions(source: *mut GtkDragSource) -> gdk::GdkDragAction;
    pub fn gtk_drag_source_get_content(source: *mut GtkDragSource) -> *mut gdk::GdkContentProvider;
    pub fn gtk_drag_source_get_drag(source: *mut GtkDragSource) -> *mut gdk::GdkDrag;
    pub fn gtk_drag_source_set_actions(source: *mut GtkDragSource, actions: gdk::GdkDragAction);
    pub fn gtk_drag_source_set_content(
        source: *mut GtkDragSource,
        content: *mut gdk::GdkContentProvider,
    );
    pub fn gtk_drag_source_set_icon(
        source: *mut GtkDragSource,
        paintable: *mut gdk::GdkPaintable,
        hot_x: c_int,
        hot_y: c_int,
    );

    //=========================================================================
    // GtkDrawingArea
    //=========================================================================
    pub fn gtk_drawing_area_get_type() -> GType;
    pub fn gtk_drawing_area_new() -> *mut GtkWidget;
    pub fn gtk_drawing_area_get_content_height(self_: *mut GtkDrawingArea) -> c_int;
    pub fn gtk_drawing_area_get_content_width(self_: *mut GtkDrawingArea) -> c_int;
    pub fn gtk_drawing_area_set_content_height(self_: *mut GtkDrawingArea, height: c_int);
    pub fn gtk_drawing_area_set_content_width(self_: *mut GtkDrawingArea, width: c_int);
    pub fn gtk_drawing_area_set_draw_func(
        self_: *mut GtkDrawingArea,
        draw_func: GtkDrawingAreaDrawFunc,
        user_data: gpointer,
        destroy: glib::GDestroyNotify,
    );

    //=========================================================================
    // GtkDropControllerMotion
    //=========================================================================
    pub fn gtk_drop_controller_motion_get_type() -> GType;
    pub fn gtk_drop_controller_motion_new() -> *mut GtkEventController;
    pub fn gtk_drop_controller_motion_contains_pointer(
        self_: *mut GtkDropControllerMotion,
    ) -> gboolean;
    pub fn gtk_drop_controller_motion_get_drop(
        self_: *mut GtkDropControllerMotion,
    ) -> *mut gdk::GdkDrop;
    pub fn gtk_drop_controller_motion_is_pointer(self_: *mut GtkDropControllerMotion) -> gboolean;

    //=========================================================================
    // GtkDropDown
    //=========================================================================
    pub fn gtk_drop_down_get_type() -> GType;
    pub fn gtk_drop_down_new(
        model: *mut gio::GListModel,
        expression: *mut GtkExpression,
    ) -> *mut GtkWidget;
    pub fn gtk_drop_down_new_from_strings(strings: *const *const c_char) -> *mut GtkWidget;
    pub fn gtk_drop_down_get_enable_search(self_: *mut GtkDropDown) -> gboolean;
    pub fn gtk_drop_down_get_expression(self_: *mut GtkDropDown) -> *mut GtkExpression;
    pub fn gtk_drop_down_get_factory(self_: *mut GtkDropDown) -> *mut GtkListItemFactory;
    pub fn gtk_drop_down_get_list_factory(self_: *mut GtkDropDown) -> *mut GtkListItemFactory;
    pub fn gtk_drop_down_get_model(self_: *mut GtkDropDown) -> *mut gio::GListModel;
    pub fn gtk_drop_down_get_selected(self_: *mut GtkDropDown) -> c_uint;
    pub fn gtk_drop_down_get_selected_item(self_: *mut GtkDropDown) -> *mut gobject::GObject;
    pub fn gtk_drop_down_set_enable_search(self_: *mut GtkDropDown, enable_search: gboolean);
    pub fn gtk_drop_down_set_expression(self_: *mut GtkDropDown, expression: *mut GtkExpression);
    pub fn gtk_drop_down_set_factory(self_: *mut GtkDropDown, factory: *mut GtkListItemFactory);
    pub fn gtk_drop_down_set_list_factory(
        self_: *mut GtkDropDown,
        factory: *mut GtkListItemFactory,
    );
    pub fn gtk_drop_down_set_model(self_: *mut GtkDropDown, model: *mut gio::GListModel);
    pub fn gtk_drop_down_set_selected(self_: *mut GtkDropDown, position: c_uint);

    //=========================================================================
    // GtkDropTarget
    //=========================================================================
    pub fn gtk_drop_target_get_type() -> GType;
    pub fn gtk_drop_target_new(type_: GType, actions: gdk::GdkDragAction) -> *mut GtkDropTarget;
    pub fn gtk_drop_target_get_actions(self_: *mut GtkDropTarget) -> gdk::GdkDragAction;
    pub fn gtk_drop_target_get_drop(self_: *mut GtkDropTarget) -> *mut gdk::GdkDrop;
    pub fn gtk_drop_target_get_formats(self_: *mut GtkDropTarget) -> *mut gdk::GdkContentFormats;
    pub fn gtk_drop_target_get_gtypes(
        self_: *mut GtkDropTarget,
        n_types: *mut size_t,
    ) -> *const GType;
    pub fn gtk_drop_target_get_preload(self_: *mut GtkDropTarget) -> gboolean;
    pub fn gtk_drop_target_get_value(self_: *mut GtkDropTarget) -> *const gobject::GValue;
    pub fn gtk_drop_target_reject(self_: *mut GtkDropTarget);
    pub fn gtk_drop_target_set_actions(self_: *mut GtkDropTarget, actions: gdk::GdkDragAction);
    pub fn gtk_drop_target_set_gtypes(
        self_: *mut GtkDropTarget,
        types: *mut GType,
        n_types: size_t,
    );
    pub fn gtk_drop_target_set_preload(self_: *mut GtkDropTarget, preload: gboolean);

    //=========================================================================
    // GtkDropTargetAsync
    //=========================================================================
    pub fn gtk_drop_target_async_get_type() -> GType;
    pub fn gtk_drop_target_async_new(
        formats: *mut gdk::GdkContentFormats,
        actions: gdk::GdkDragAction,
    ) -> *mut GtkDropTargetAsync;
    pub fn gtk_drop_target_async_get_actions(self_: *mut GtkDropTargetAsync) -> gdk::GdkDragAction;
    pub fn gtk_drop_target_async_get_formats(
        self_: *mut GtkDropTargetAsync,
    ) -> *mut gdk::GdkContentFormats;
    pub fn gtk_drop_target_async_reject_drop(
        self_: *mut GtkDropTargetAsync,
        drop: *mut gdk::GdkDrop,
    );
    pub fn gtk_drop_target_async_set_actions(
        self_: *mut GtkDropTargetAsync,
        actions: gdk::GdkDragAction,
    );
    pub fn gtk_drop_target_async_set_formats(
        self_: *mut GtkDropTargetAsync,
        formats: *mut gdk::GdkContentFormats,
    );

    //=========================================================================
    // GtkEditableLabel
    //=========================================================================
    pub fn gtk_editable_label_get_type() -> GType;
    pub fn gtk_editable_label_new(str: *const c_char) -> *mut GtkWidget;
    pub fn gtk_editable_label_get_editing(self_: *mut GtkEditableLabel) -> gboolean;
    pub fn gtk_editable_label_start_editing(self_: *mut GtkEditableLabel);
    pub fn gtk_editable_label_stop_editing(self_: *mut GtkEditableLabel, commit: gboolean);

    //=========================================================================
    // GtkEmojiChooser
    //=========================================================================
    pub fn gtk_emoji_chooser_get_type() -> GType;
    pub fn gtk_emoji_chooser_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_extra_menu(entry: *mut GtkEntry) -> *mut gio::GMenuModel;
    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_paintable(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
    ) -> *mut gdk::GdkPaintable;
    pub fn gtk_entry_get_icon_sensitive(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
    ) -> gboolean;
    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_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_max_length(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_length(entry: *mut GtkEntry) -> u16;
    pub fn gtk_entry_get_visibility(entry: *mut GtkEntry) -> gboolean;
    pub fn gtk_entry_grab_focus_without_selecting(entry: *mut GtkEntry) -> gboolean;
    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_extra_menu(entry: *mut GtkEntry, model: *mut gio::GMenuModel);
    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,
        provider: *mut gdk::GdkContentProvider,
        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_paintable(
        entry: *mut GtkEntry,
        icon_pos: GtkEntryIconPosition,
        paintable: *mut gdk::GdkPaintable,
    );
    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_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_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_visibility(entry: *mut GtkEntry, visible: gboolean);
    pub fn gtk_entry_unset_invisible_char(entry: *mut GtkEntry);

    //=========================================================================
    // 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_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_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);

    //=========================================================================
    // GtkEventController
    //=========================================================================
    pub fn gtk_event_controller_get_type() -> GType;
    pub fn gtk_event_controller_get_current_event(
        controller: *mut GtkEventController,
    ) -> *mut gdk::GdkEvent;
    pub fn gtk_event_controller_get_current_event_device(
        controller: *mut GtkEventController,
    ) -> *mut gdk::GdkDevice;
    pub fn gtk_event_controller_get_current_event_state(
        controller: *mut GtkEventController,
    ) -> gdk::GdkModifierType;
    pub fn gtk_event_controller_get_current_event_time(controller: *mut GtkEventController) -> u32;
    pub fn gtk_event_controller_get_name(controller: *mut GtkEventController) -> *const c_char;
    pub fn gtk_event_controller_get_propagation_limit(
        controller: *mut GtkEventController,
    ) -> GtkPropagationLimit;
    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_reset(controller: *mut GtkEventController);
    pub fn gtk_event_controller_set_name(controller: *mut GtkEventController, name: *const c_char);
    pub fn gtk_event_controller_set_propagation_limit(
        controller: *mut GtkEventController,
        limit: GtkPropagationLimit,
    );
    pub fn gtk_event_controller_set_propagation_phase(
        controller: *mut GtkEventController,
        phase: GtkPropagationPhase,
    );

    //=========================================================================
    // GtkEventControllerFocus
    //=========================================================================
    pub fn gtk_event_controller_focus_get_type() -> GType;
    pub fn gtk_event_controller_focus_new() -> *mut GtkEventController;
    pub fn gtk_event_controller_focus_contains_focus(
        self_: *mut GtkEventControllerFocus,
    ) -> gboolean;
    pub fn gtk_event_controller_focus_is_focus(self_: *mut GtkEventControllerFocus) -> gboolean;

    //=========================================================================
    // GtkEventControllerKey
    //=========================================================================
    pub fn gtk_event_controller_key_get_type() -> GType;
    pub fn gtk_event_controller_key_new() -> *mut GtkEventController;
    pub fn gtk_event_controller_key_forward(
        controller: *mut GtkEventControllerKey,
        widget: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_event_controller_key_get_group(controller: *mut GtkEventControllerKey) -> c_uint;
    pub fn gtk_event_controller_key_get_im_context(
        controller: *mut GtkEventControllerKey,
    ) -> *mut GtkIMContext;
    pub fn gtk_event_controller_key_set_im_context(
        controller: *mut GtkEventControllerKey,
        im_context: *mut GtkIMContext,
    );

    //=========================================================================
    // GtkEventControllerLegacy
    //=========================================================================
    pub fn gtk_event_controller_legacy_get_type() -> GType;
    pub fn gtk_event_controller_legacy_new() -> *mut GtkEventController;

    //=========================================================================
    // GtkEventControllerMotion
    //=========================================================================
    pub fn gtk_event_controller_motion_get_type() -> GType;
    pub fn gtk_event_controller_motion_new() -> *mut GtkEventController;
    pub fn gtk_event_controller_motion_contains_pointer(
        self_: *mut GtkEventControllerMotion,
    ) -> gboolean;
    pub fn gtk_event_controller_motion_is_pointer(self_: *mut GtkEventControllerMotion)
        -> gboolean;

    //=========================================================================
    // GtkEventControllerScroll
    //=========================================================================
    pub fn gtk_event_controller_scroll_get_type() -> GType;
    pub fn gtk_event_controller_scroll_new(
        flags: GtkEventControllerScrollFlags,
    ) -> *mut GtkEventController;
    pub fn gtk_event_controller_scroll_get_flags(
        scroll: *mut GtkEventControllerScroll,
    ) -> GtkEventControllerScrollFlags;
    pub fn gtk_event_controller_scroll_set_flags(
        scroll: *mut GtkEventControllerScroll,
        flags: GtkEventControllerScrollFlags,
    );

    //=========================================================================
    // GtkEveryFilter
    //=========================================================================
    pub fn gtk_every_filter_get_type() -> GType;
    pub fn gtk_every_filter_new() -> *mut GtkEveryFilter;

    //=========================================================================
    // 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_child(expander: *mut GtkExpander) -> *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_widget(expander: *mut GtkExpander) -> *mut GtkWidget;
    pub fn gtk_expander_get_resize_toplevel(expander: *mut GtkExpander) -> gboolean;
    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_child(expander: *mut GtkExpander, child: *mut GtkWidget);
    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_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_use_markup(expander: *mut GtkExpander, use_markup: gboolean);
    pub fn gtk_expander_set_use_underline(expander: *mut GtkExpander, use_underline: gboolean);

    //=========================================================================
    // GtkExpression
    //=========================================================================
    pub fn gtk_expression_get_type() -> GType;
    pub fn gtk_expression_bind(
        self_: *mut GtkExpression,
        target: *mut gobject::GObject,
        property: *const c_char,
        this_: *mut gobject::GObject,
    ) -> *mut GtkExpressionWatch;
    pub fn gtk_expression_evaluate(
        self_: *mut GtkExpression,
        this_: *mut gobject::GObject,
        value: *mut gobject::GValue,
    ) -> gboolean;
    pub fn gtk_expression_get_value_type(self_: *mut GtkExpression) -> GType;
    pub fn gtk_expression_is_static(self_: *mut GtkExpression) -> gboolean;
    pub fn gtk_expression_ref(self_: *mut GtkExpression) -> *mut GtkExpression;
    pub fn gtk_expression_unref(self_: *mut GtkExpression);
    pub fn gtk_expression_watch(
        self_: *mut GtkExpression,
        this_: *mut gobject::GObject,
        notify: GtkExpressionNotify,
        user_data: gpointer,
        user_destroy: glib::GDestroyNotify,
    ) -> *mut GtkExpressionWatch;

    //=========================================================================
    // 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;

    //=========================================================================
    // 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_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_get_attributes(filter: *mut GtkFileFilter) -> *mut *const c_char;
    pub fn gtk_file_filter_get_name(filter: *mut GtkFileFilter) -> *const c_char;
    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;

    //=========================================================================
    // GtkFilter
    //=========================================================================
    pub fn gtk_filter_get_type() -> GType;
    pub fn gtk_filter_changed(self_: *mut GtkFilter, change: GtkFilterChange);
    pub fn gtk_filter_get_strictness(self_: *mut GtkFilter) -> GtkFilterMatch;
    pub fn gtk_filter_match(self_: *mut GtkFilter, item: *mut gobject::GObject) -> gboolean;

    //=========================================================================
    // GtkFilterListModel
    //=========================================================================
    pub fn gtk_filter_list_model_get_type() -> GType;
    pub fn gtk_filter_list_model_new(
        model: *mut gio::GListModel,
        filter: *mut GtkFilter,
    ) -> *mut GtkFilterListModel;
    pub fn gtk_filter_list_model_get_filter(self_: *mut GtkFilterListModel) -> *mut GtkFilter;
    pub fn gtk_filter_list_model_get_incremental(self_: *mut GtkFilterListModel) -> gboolean;
    pub fn gtk_filter_list_model_get_model(self_: *mut GtkFilterListModel) -> *mut gio::GListModel;
    pub fn gtk_filter_list_model_get_pending(self_: *mut GtkFilterListModel) -> c_uint;
    pub fn gtk_filter_list_model_set_filter(self_: *mut GtkFilterListModel, filter: *mut GtkFilter);
    pub fn gtk_filter_list_model_set_incremental(
        self_: *mut GtkFilterListModel,
        incremental: gboolean,
    );
    pub fn gtk_filter_list_model_set_model(
        self_: *mut GtkFilterListModel,
        model: *mut gio::GListModel,
    );

    //=========================================================================
    // GtkFixed
    //=========================================================================
    pub fn gtk_fixed_get_type() -> GType;
    pub fn gtk_fixed_new() -> *mut GtkWidget;
    pub fn gtk_fixed_get_child_position(
        fixed: *mut GtkFixed,
        widget: *mut GtkWidget,
        x: *mut c_double,
        y: *mut c_double,
    );
    pub fn gtk_fixed_get_child_transform(
        fixed: *mut GtkFixed,
        widget: *mut GtkWidget,
    ) -> *mut gsk::GskTransform;
    pub fn gtk_fixed_move(fixed: *mut GtkFixed, widget: *mut GtkWidget, x: c_double, y: c_double);
    pub fn gtk_fixed_put(fixed: *mut GtkFixed, widget: *mut GtkWidget, x: c_double, y: c_double);
    pub fn gtk_fixed_remove(fixed: *mut GtkFixed, widget: *mut GtkWidget);
    pub fn gtk_fixed_set_child_transform(
        fixed: *mut GtkFixed,
        widget: *mut GtkWidget,
        transform: *mut gsk::GskTransform,
    );

    //=========================================================================
    // GtkFixedLayout
    //=========================================================================
    pub fn gtk_fixed_layout_get_type() -> GType;
    pub fn gtk_fixed_layout_new() -> *mut GtkLayoutManager;

    //=========================================================================
    // GtkFixedLayoutChild
    //=========================================================================
    pub fn gtk_fixed_layout_child_get_type() -> GType;
    pub fn gtk_fixed_layout_child_get_transform(
        child: *mut GtkFixedLayoutChild,
    ) -> *mut gsk::GskTransform;
    pub fn gtk_fixed_layout_child_set_transform(
        child: *mut GtkFixedLayoutChild,
        transform: *mut gsk::GskTransform,
    );

    //=========================================================================
    // GtkFlattenListModel
    //=========================================================================
    pub fn gtk_flatten_list_model_get_type() -> GType;
    pub fn gtk_flatten_list_model_new(model: *mut gio::GListModel) -> *mut GtkFlattenListModel;
    pub fn gtk_flatten_list_model_get_model(
        self_: *mut GtkFlattenListModel,
    ) -> *mut gio::GListModel;
    pub fn gtk_flatten_list_model_get_model_for_item(
        self_: *mut GtkFlattenListModel,
        position: c_uint,
    ) -> *mut gio::GListModel;
    pub fn gtk_flatten_list_model_set_model(
        self_: *mut GtkFlattenListModel,
        model: *mut gio::GListModel,
    );

    //=========================================================================
    // 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_remove(box_: *mut GtkFlowBox, widget: *mut GtkWidget);
    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);

    //=========================================================================
    // 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_child(self_: *mut GtkFlowBoxChild) -> *mut GtkWidget;
    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;
    pub fn gtk_flow_box_child_set_child(self_: *mut GtkFlowBoxChild, child: *mut GtkWidget);

    //=========================================================================
    // 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_modal(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_modal(font_button: *mut GtkFontButton, modal: 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;

    //=========================================================================
    // GtkFrame
    //=========================================================================
    pub fn gtk_frame_get_type() -> GType;
    pub fn gtk_frame_new(label: *const c_char) -> *mut GtkWidget;
    pub fn gtk_frame_get_child(frame: *mut GtkFrame) -> *mut GtkWidget;
    pub fn gtk_frame_get_label(frame: *mut GtkFrame) -> *const c_char;
    pub fn gtk_frame_get_label_align(frame: *mut GtkFrame) -> c_float;
    pub fn gtk_frame_get_label_widget(frame: *mut GtkFrame) -> *mut GtkWidget;
    pub fn gtk_frame_set_child(frame: *mut GtkFrame, child: *mut GtkWidget);
    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);
    pub fn gtk_frame_set_label_widget(frame: *mut GtkFrame, label_widget: *mut GtkWidget);

    //=========================================================================
    // 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_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_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,
    ) -> *mut 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_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_ungroup(gesture: *mut GtkGesture);

    //=========================================================================
    // GtkGestureClick
    //=========================================================================
    pub fn gtk_gesture_click_get_type() -> GType;
    pub fn gtk_gesture_click_new() -> *mut GtkGesture;

    //=========================================================================
    // GtkGestureDrag
    //=========================================================================
    pub fn gtk_gesture_drag_get_type() -> GType;
    pub fn gtk_gesture_drag_new() -> *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() -> *mut GtkGesture;
    pub fn gtk_gesture_long_press_get_delay_factor(gesture: *mut GtkGestureLongPress) -> c_double;
    pub fn gtk_gesture_long_press_set_delay_factor(
        gesture: *mut GtkGestureLongPress,
        delay_factor: c_double,
    );

    //=========================================================================
    // GtkGesturePan
    //=========================================================================
    pub fn gtk_gesture_pan_get_type() -> GType;
    pub fn gtk_gesture_pan_new(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() -> *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;
    pub fn gtk_gesture_stylus_new() -> *mut GtkGesture;
    pub fn gtk_gesture_stylus_get_axes(
        gesture: *mut GtkGestureStylus,
        axes: *mut gdk::GdkAxisUse,
        values: *mut *mut c_double,
    ) -> gboolean;
    pub fn gtk_gesture_stylus_get_axis(
        gesture: *mut GtkGestureStylus,
        axis: gdk::GdkAxisUse,
        value: *mut c_double,
    ) -> gboolean;
    pub fn gtk_gesture_stylus_get_backlog(
        gesture: *mut GtkGestureStylus,
        backlog: *mut *mut gdk::GdkTimeCoord,
        n_elems: *mut c_uint,
    ) -> gboolean;
    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() -> *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() -> *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,
        column: c_int,
        row: 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, column: c_int, row: 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_query_child(
        grid: *mut GtkGrid,
        child: *mut GtkWidget,
        column: *mut c_int,
        row: *mut c_int,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_grid_remove(grid: *mut GtkGrid, child: *mut GtkWidget);
    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);

    //=========================================================================
    // GtkGridLayout
    //=========================================================================
    pub fn gtk_grid_layout_get_type() -> GType;
    pub fn gtk_grid_layout_new() -> *mut GtkLayoutManager;
    pub fn gtk_grid_layout_get_baseline_row(grid: *mut GtkGridLayout) -> c_int;
    pub fn gtk_grid_layout_get_column_homogeneous(grid: *mut GtkGridLayout) -> gboolean;
    pub fn gtk_grid_layout_get_column_spacing(grid: *mut GtkGridLayout) -> c_uint;
    pub fn gtk_grid_layout_get_row_baseline_position(
        grid: *mut GtkGridLayout,
        row: c_int,
    ) -> GtkBaselinePosition;
    pub fn gtk_grid_layout_get_row_homogeneous(grid: *mut GtkGridLayout) -> gboolean;
    pub fn gtk_grid_layout_get_row_spacing(grid: *mut GtkGridLayout) -> c_uint;
    pub fn gtk_grid_layout_set_baseline_row(grid: *mut GtkGridLayout, row: c_int);
    pub fn gtk_grid_layout_set_column_homogeneous(grid: *mut GtkGridLayout, homogeneous: gboolean);
    pub fn gtk_grid_layout_set_column_spacing(grid: *mut GtkGridLayout, spacing: c_uint);
    pub fn gtk_grid_layout_set_row_baseline_position(
        grid: *mut GtkGridLayout,
        row: c_int,
        pos: GtkBaselinePosition,
    );
    pub fn gtk_grid_layout_set_row_homogeneous(grid: *mut GtkGridLayout, homogeneous: gboolean);
    pub fn gtk_grid_layout_set_row_spacing(grid: *mut GtkGridLayout, spacing: c_uint);

    //=========================================================================
    // GtkGridLayoutChild
    //=========================================================================
    pub fn gtk_grid_layout_child_get_type() -> GType;
    pub fn gtk_grid_layout_child_get_column(child: *mut GtkGridLayoutChild) -> c_int;
    pub fn gtk_grid_layout_child_get_column_span(child: *mut GtkGridLayoutChild) -> c_int;
    pub fn gtk_grid_layout_child_get_row(child: *mut GtkGridLayoutChild) -> c_int;
    pub fn gtk_grid_layout_child_get_row_span(child: *mut GtkGridLayoutChild) -> c_int;
    pub fn gtk_grid_layout_child_set_column(child: *mut GtkGridLayoutChild, column: c_int);
    pub fn gtk_grid_layout_child_set_column_span(child: *mut GtkGridLayoutChild, span: c_int);
    pub fn gtk_grid_layout_child_set_row(child: *mut GtkGridLayoutChild, row: c_int);
    pub fn gtk_grid_layout_child_set_row_span(child: *mut GtkGridLayoutChild, span: c_int);

    //=========================================================================
    // GtkGridView
    //=========================================================================
    pub fn gtk_grid_view_get_type() -> GType;
    pub fn gtk_grid_view_new(
        model: *mut GtkSelectionModel,
        factory: *mut GtkListItemFactory,
    ) -> *mut GtkWidget;
    pub fn gtk_grid_view_get_enable_rubberband(self_: *mut GtkGridView) -> gboolean;
    pub fn gtk_grid_view_get_factory(self_: *mut GtkGridView) -> *mut GtkListItemFactory;
    pub fn gtk_grid_view_get_max_columns(self_: *mut GtkGridView) -> c_uint;
    pub fn gtk_grid_view_get_min_columns(self_: *mut GtkGridView) -> c_uint;
    pub fn gtk_grid_view_get_model(self_: *mut GtkGridView) -> *mut GtkSelectionModel;
    pub fn gtk_grid_view_get_single_click_activate(self_: *mut GtkGridView) -> gboolean;
    pub fn gtk_grid_view_set_enable_rubberband(
        self_: *mut GtkGridView,
        enable_rubberband: gboolean,
    );
    pub fn gtk_grid_view_set_factory(self_: *mut GtkGridView, factory: *mut GtkListItemFactory);
    pub fn gtk_grid_view_set_max_columns(self_: *mut GtkGridView, max_columns: c_uint);
    pub fn gtk_grid_view_set_min_columns(self_: *mut GtkGridView, min_columns: c_uint);
    pub fn gtk_grid_view_set_model(self_: *mut GtkGridView, model: *mut GtkSelectionModel);
    pub fn gtk_grid_view_set_single_click_activate(
        self_: *mut GtkGridView,
        single_click_activate: gboolean,
    );

    //=========================================================================
    // GtkHeaderBar
    //=========================================================================
    pub fn gtk_header_bar_get_type() -> GType;
    pub fn gtk_header_bar_new() -> *mut GtkWidget;
    pub fn gtk_header_bar_get_decoration_layout(bar: *mut GtkHeaderBar) -> *const c_char;
    pub fn gtk_header_bar_get_show_title_buttons(bar: *mut GtkHeaderBar) -> gboolean;
    pub fn gtk_header_bar_get_title_widget(bar: *mut GtkHeaderBar) -> *mut GtkWidget;
    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_remove(bar: *mut GtkHeaderBar, child: *mut GtkWidget);
    pub fn gtk_header_bar_set_decoration_layout(bar: *mut GtkHeaderBar, layout: *const c_char);
    pub fn gtk_header_bar_set_show_title_buttons(bar: *mut GtkHeaderBar, setting: gboolean);
    pub fn gtk_header_bar_set_title_widget(bar: *mut GtkHeaderBar, title_widget: *mut GtkWidget);

    //=========================================================================
    // 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_key(
        context: *mut GtkIMContext,
        press: gboolean,
        surface: *mut gdk::GdkSurface,
        device: *mut gdk::GdkDevice,
        time: u32,
        keycode: c_uint,
        state: gdk::GdkModifierType,
        group: c_int,
    ) -> gboolean;
    pub fn gtk_im_context_filter_keypress(
        context: *mut GtkIMContext,
        event: *mut gdk::GdkEvent,
    ) -> 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_get_surrounding_with_selection(
        context: *mut GtkIMContext,
        text: *mut *mut c_char,
        cursor_index: *mut c_int,
        anchor_index: *mut c_int,
    ) -> gboolean;
    pub fn gtk_im_context_reset(context: *mut GtkIMContext);
    pub fn gtk_im_context_set_client_widget(context: *mut GtkIMContext, widget: *mut GtkWidget);
    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_surrounding_with_selection(
        context: *mut GtkIMContext,
        text: *const c_char,
        len: c_int,
        cursor_index: c_int,
        anchor_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_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,
    );

    //=========================================================================
    // GtkIconPaintable
    //=========================================================================
    pub fn gtk_icon_paintable_get_type() -> GType;
    pub fn gtk_icon_paintable_new_for_file(
        file: *mut gio::GFile,
        size: c_int,
        scale: c_int,
    ) -> *mut GtkIconPaintable;
    pub fn gtk_icon_paintable_get_file(self_: *mut GtkIconPaintable) -> *mut gio::GFile;
    pub fn gtk_icon_paintable_get_icon_name(self_: *mut GtkIconPaintable) -> *const c_char;
    pub fn gtk_icon_paintable_is_symbolic(self_: *mut GtkIconPaintable) -> gboolean;

    //=========================================================================
    // GtkIconTheme
    //=========================================================================
    pub fn gtk_icon_theme_get_type() -> GType;
    pub fn gtk_icon_theme_new() -> *mut GtkIconTheme;
    pub fn gtk_icon_theme_get_for_display(display: *mut gdk::GdkDisplay) -> *mut GtkIconTheme;
    pub fn gtk_icon_theme_add_resource_path(self_: *mut GtkIconTheme, path: *const c_char);
    pub fn gtk_icon_theme_add_search_path(self_: *mut GtkIconTheme, path: *const c_char);
    pub fn gtk_icon_theme_get_display(self_: *mut GtkIconTheme) -> *mut gdk::GdkDisplay;
    pub fn gtk_icon_theme_get_icon_names(self_: *mut GtkIconTheme) -> *mut *mut c_char;
    pub fn gtk_icon_theme_get_icon_sizes(
        self_: *mut GtkIconTheme,
        icon_name: *const c_char,
    ) -> *mut c_int;
    pub fn gtk_icon_theme_get_resource_path(self_: *mut GtkIconTheme) -> *mut *mut c_char;
    pub fn gtk_icon_theme_get_search_path(self_: *mut GtkIconTheme) -> *mut *mut c_char;
    pub fn gtk_icon_theme_get_theme_name(self_: *mut GtkIconTheme) -> *mut c_char;
    pub fn gtk_icon_theme_has_icon(self_: *mut GtkIconTheme, icon_name: *const c_char) -> gboolean;
    pub fn gtk_icon_theme_lookup_by_gicon(
        self_: *mut GtkIconTheme,
        icon: *mut gio::GIcon,
        size: c_int,
        scale: c_int,
        direction: GtkTextDirection,
        flags: GtkIconLookupFlags,
    ) -> *mut GtkIconPaintable;
    pub fn gtk_icon_theme_lookup_icon(
        self_: *mut GtkIconTheme,
        icon_name: *const c_char,
        fallbacks: *mut *const c_char,
        size: c_int,
        scale: c_int,
        direction: GtkTextDirection,
        flags: GtkIconLookupFlags,
    ) -> *mut GtkIconPaintable;
    pub fn gtk_icon_theme_set_resource_path(self_: *mut GtkIconTheme, path: *const *const c_char);
    pub fn gtk_icon_theme_set_search_path(self_: *mut GtkIconTheme, path: *const *const c_char);
    pub fn gtk_icon_theme_set_theme_name(self_: *mut GtkIconTheme, theme_name: *const c_char);

    //=========================================================================
    // 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_create_drag_icon(
        icon_view: *mut GtkIconView,
        path: *mut GtkTreePath,
    ) -> *mut gdk::GdkPaintable;
    pub fn gtk_icon_view_enable_model_drag_dest(
        icon_view: *mut GtkIconView,
        formats: *mut gdk::GdkContentFormats,
        actions: gdk::GdkDragAction,
    );
    pub fn gtk_icon_view_enable_model_drag_source(
        icon_view: *mut GtkIconView,
        start_button_mask: gdk::GdkModifierType,
        formats: *mut gdk::GdkContentFormats,
        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: c_int,
        y: 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);

    //=========================================================================
    // GtkImage
    //=========================================================================
    pub fn gtk_image_get_type() -> GType;
    pub fn gtk_image_new() -> *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) -> *mut GtkWidget;
    pub fn gtk_image_new_from_icon_name(icon_name: *const c_char) -> *mut GtkWidget;
    pub fn gtk_image_new_from_paintable(paintable: *mut gdk::GdkPaintable) -> *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_clear(image: *mut GtkImage);
    pub fn gtk_image_get_gicon(image: *mut GtkImage) -> *mut gio::GIcon;
    pub fn gtk_image_get_icon_name(image: *mut GtkImage) -> *const c_char;
    pub fn gtk_image_get_icon_size(image: *mut GtkImage) -> GtkIconSize;
    pub fn gtk_image_get_paintable(image: *mut GtkImage) -> *mut gdk::GdkPaintable;
    pub fn gtk_image_get_pixel_size(image: *mut GtkImage) -> c_int;
    pub fn gtk_image_get_storage_type(image: *mut GtkImage) -> GtkImageType;
    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);
    pub fn gtk_image_set_from_icon_name(image: *mut GtkImage, icon_name: *const c_char);
    pub fn gtk_image_set_from_paintable(image: *mut GtkImage, paintable: *mut gdk::GdkPaintable);
    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_icon_size(image: *mut GtkImage, icon_size: GtkIconSize);
    pub fn gtk_image_set_pixel_size(image: *mut GtkImage, pixel_size: c_int);

    //=========================================================================
    // 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_add_child(info_bar: *mut GtkInfoBar, widget: *mut GtkWidget);
    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_remove_action_widget(info_bar: *mut GtkInfoBar, widget: *mut GtkWidget);
    pub fn gtk_info_bar_remove_child(info_bar: *mut GtkInfoBar, widget: *mut GtkWidget);
    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);

    //=========================================================================
    // GtkKeyvalTrigger
    //=========================================================================
    pub fn gtk_keyval_trigger_get_type() -> GType;
    pub fn gtk_keyval_trigger_new(
        keyval: c_uint,
        modifiers: gdk::GdkModifierType,
    ) -> *mut GtkShortcutTrigger;
    pub fn gtk_keyval_trigger_get_keyval(self_: *mut GtkKeyvalTrigger) -> c_uint;
    pub fn gtk_keyval_trigger_get_modifiers(self_: *mut GtkKeyvalTrigger) -> gdk::GdkModifierType;

    //=========================================================================
    // 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_attributes(self_: *mut GtkLabel) -> *mut pango::PangoAttrList;
    pub fn gtk_label_get_current_uri(self_: *mut GtkLabel) -> *const c_char;
    pub fn gtk_label_get_ellipsize(self_: *mut GtkLabel) -> pango::PangoEllipsizeMode;
    pub fn gtk_label_get_extra_menu(self_: *mut GtkLabel) -> *mut gio::GMenuModel;
    pub fn gtk_label_get_justify(self_: *mut GtkLabel) -> GtkJustification;
    pub fn gtk_label_get_label(self_: *mut GtkLabel) -> *const c_char;
    pub fn gtk_label_get_layout(self_: *mut GtkLabel) -> *mut pango::PangoLayout;
    pub fn gtk_label_get_layout_offsets(self_: *mut GtkLabel, x: *mut c_int, y: *mut c_int);
    pub fn gtk_label_get_lines(self_: *mut GtkLabel) -> c_int;
    pub fn gtk_label_get_max_width_chars(self_: *mut GtkLabel) -> c_int;
    pub fn gtk_label_get_mnemonic_keyval(self_: *mut GtkLabel) -> c_uint;
    pub fn gtk_label_get_mnemonic_widget(self_: *mut GtkLabel) -> *mut GtkWidget;
    pub fn gtk_label_get_selectable(self_: *mut GtkLabel) -> gboolean;
    pub fn gtk_label_get_selection_bounds(
        self_: *mut GtkLabel,
        start: *mut c_int,
        end: *mut c_int,
    ) -> gboolean;
    pub fn gtk_label_get_single_line_mode(self_: *mut GtkLabel) -> gboolean;
    pub fn gtk_label_get_text(self_: *mut GtkLabel) -> *const c_char;
    pub fn gtk_label_get_use_markup(self_: *mut GtkLabel) -> gboolean;
    pub fn gtk_label_get_use_underline(self_: *mut GtkLabel) -> gboolean;
    pub fn gtk_label_get_width_chars(self_: *mut GtkLabel) -> c_int;
    pub fn gtk_label_get_wrap(self_: *mut GtkLabel) -> gboolean;
    pub fn gtk_label_get_wrap_mode(self_: *mut GtkLabel) -> pango::PangoWrapMode;
    pub fn gtk_label_get_xalign(self_: *mut GtkLabel) -> c_float;
    pub fn gtk_label_get_yalign(self_: *mut GtkLabel) -> c_float;
    pub fn gtk_label_select_region(self_: *mut GtkLabel, start_offset: c_int, end_offset: c_int);
    pub fn gtk_label_set_attributes(self_: *mut GtkLabel, attrs: *mut pango::PangoAttrList);
    pub fn gtk_label_set_ellipsize(self_: *mut GtkLabel, mode: pango::PangoEllipsizeMode);
    pub fn gtk_label_set_extra_menu(self_: *mut GtkLabel, model: *mut gio::GMenuModel);
    pub fn gtk_label_set_justify(self_: *mut GtkLabel, jtype: GtkJustification);
    pub fn gtk_label_set_label(self_: *mut GtkLabel, str: *const c_char);
    pub fn gtk_label_set_lines(self_: *mut GtkLabel, lines: c_int);
    pub fn gtk_label_set_markup(self_: *mut GtkLabel, str: *const c_char);
    pub fn gtk_label_set_markup_with_mnemonic(self_: *mut GtkLabel, str: *const c_char);
    pub fn gtk_label_set_max_width_chars(self_: *mut GtkLabel, n_chars: c_int);
    pub fn gtk_label_set_mnemonic_widget(self_: *mut GtkLabel, widget: *mut GtkWidget);
    pub fn gtk_label_set_selectable(self_: *mut GtkLabel, setting: gboolean);
    pub fn gtk_label_set_single_line_mode(self_: *mut GtkLabel, single_line_mode: gboolean);
    pub fn gtk_label_set_text(self_: *mut GtkLabel, str: *const c_char);
    pub fn gtk_label_set_text_with_mnemonic(self_: *mut GtkLabel, str: *const c_char);
    pub fn gtk_label_set_use_markup(self_: *mut GtkLabel, setting: gboolean);
    pub fn gtk_label_set_use_underline(self_: *mut GtkLabel, setting: gboolean);
    pub fn gtk_label_set_width_chars(self_: *mut GtkLabel, n_chars: c_int);
    pub fn gtk_label_set_wrap(self_: *mut GtkLabel, wrap: gboolean);
    pub fn gtk_label_set_wrap_mode(self_: *mut GtkLabel, wrap_mode: pango::PangoWrapMode);
    pub fn gtk_label_set_xalign(self_: *mut GtkLabel, xalign: c_float);
    pub fn gtk_label_set_yalign(self_: *mut GtkLabel, yalign: c_float);

    //=========================================================================
    // GtkLayoutChild
    //=========================================================================
    pub fn gtk_layout_child_get_type() -> GType;
    pub fn gtk_layout_child_get_child_widget(layout_child: *mut GtkLayoutChild) -> *mut GtkWidget;
    pub fn gtk_layout_child_get_layout_manager(
        layout_child: *mut GtkLayoutChild,
    ) -> *mut GtkLayoutManager;

    //=========================================================================
    // GtkLayoutManager
    //=========================================================================
    pub fn gtk_layout_manager_get_type() -> GType;
    pub fn gtk_layout_manager_allocate(
        manager: *mut GtkLayoutManager,
        widget: *mut GtkWidget,
        width: c_int,
        height: c_int,
        baseline: c_int,
    );
    pub fn gtk_layout_manager_get_layout_child(
        manager: *mut GtkLayoutManager,
        child: *mut GtkWidget,
    ) -> *mut GtkLayoutChild;
    pub fn gtk_layout_manager_get_request_mode(
        manager: *mut GtkLayoutManager,
    ) -> GtkSizeRequestMode;
    pub fn gtk_layout_manager_get_widget(manager: *mut GtkLayoutManager) -> *mut GtkWidget;
    pub fn gtk_layout_manager_layout_changed(manager: *mut GtkLayoutManager);
    pub fn gtk_layout_manager_measure(
        manager: *mut GtkLayoutManager,
        widget: *mut GtkWidget,
        orientation: GtkOrientation,
        for_size: c_int,
        minimum: *mut c_int,
        natural: *mut c_int,
        minimum_baseline: *mut c_int,
        natural_baseline: *mut c_int,
    );

    //=========================================================================
    // 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);

    //=========================================================================
    // 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);

    //=========================================================================
    // GtkListBase
    //=========================================================================
    pub fn gtk_list_base_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_append(box_: *mut GtkListBox, child: *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_get_show_separators(box_: *mut GtkListBox) -> gboolean;
    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_remove(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_show_separators(box_: *mut GtkListBox, show_separators: gboolean);
    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);

    //=========================================================================
    // 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_child(row: *mut GtkListBoxRow) -> *mut GtkWidget;
    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_child(row: *mut GtkListBoxRow, child: *mut GtkWidget);
    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);

    //=========================================================================
    // GtkListItem
    //=========================================================================
    pub fn gtk_list_item_get_type() -> GType;
    pub fn gtk_list_item_get_activatable(self_: *mut GtkListItem) -> gboolean;
    pub fn gtk_list_item_get_child(self_: *mut GtkListItem) -> *mut GtkWidget;
    pub fn gtk_list_item_get_item(self_: *mut GtkListItem) -> *mut gobject::GObject;
    pub fn gtk_list_item_get_position(self_: *mut GtkListItem) -> c_uint;
    pub fn gtk_list_item_get_selectable(self_: *mut GtkListItem) -> gboolean;
    pub fn gtk_list_item_get_selected(self_: *mut GtkListItem) -> gboolean;
    pub fn gtk_list_item_set_activatable(self_: *mut GtkListItem, activatable: gboolean);
    pub fn gtk_list_item_set_child(self_: *mut GtkListItem, child: *mut GtkWidget);
    pub fn gtk_list_item_set_selectable(self_: *mut GtkListItem, selectable: gboolean);

    //=========================================================================
    // GtkListItemFactory
    //=========================================================================
    pub fn gtk_list_item_factory_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);

    //=========================================================================
    // GtkListView
    //=========================================================================
    pub fn gtk_list_view_get_type() -> GType;
    pub fn gtk_list_view_new(
        model: *mut GtkSelectionModel,
        factory: *mut GtkListItemFactory,
    ) -> *mut GtkWidget;
    pub fn gtk_list_view_get_enable_rubberband(self_: *mut GtkListView) -> gboolean;
    pub fn gtk_list_view_get_factory(self_: *mut GtkListView) -> *mut GtkListItemFactory;
    pub fn gtk_list_view_get_model(self_: *mut GtkListView) -> *mut GtkSelectionModel;
    pub fn gtk_list_view_get_show_separators(self_: *mut GtkListView) -> gboolean;
    pub fn gtk_list_view_get_single_click_activate(self_: *mut GtkListView) -> gboolean;
    pub fn gtk_list_view_set_enable_rubberband(
        self_: *mut GtkListView,
        enable_rubberband: gboolean,
    );
    pub fn gtk_list_view_set_factory(self_: *mut GtkListView, factory: *mut GtkListItemFactory);
    pub fn gtk_list_view_set_model(self_: *mut GtkListView, model: *mut GtkSelectionModel);
    pub fn gtk_list_view_set_show_separators(self_: *mut GtkListView, show_separators: gboolean);
    pub fn gtk_list_view_set_single_click_activate(
        self_: *mut GtkListView,
        single_click_activate: gboolean,
    );

    //=========================================================================
    // 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,
    );

    //=========================================================================
    // GtkMapListModel
    //=========================================================================
    pub fn gtk_map_list_model_get_type() -> GType;
    pub fn gtk_map_list_model_new(
        model: *mut gio::GListModel,
        map_func: GtkMapListModelMapFunc,
        user_data: gpointer,
        user_destroy: glib::GDestroyNotify,
    ) -> *mut GtkMapListModel;
    pub fn gtk_map_list_model_get_model(self_: *mut GtkMapListModel) -> *mut gio::GListModel;
    pub fn gtk_map_list_model_has_map(self_: *mut GtkMapListModel) -> gboolean;
    pub fn gtk_map_list_model_set_map_func(
        self_: *mut GtkMapListModel,
        map_func: GtkMapListModelMapFunc,
        user_data: gpointer,
        user_destroy: glib::GDestroyNotify,
    );
    pub fn gtk_map_list_model_set_model(self_: *mut GtkMapListModel, model: *mut gio::GListModel);

    //=========================================================================
    // GtkMediaControls
    //=========================================================================
    pub fn gtk_media_controls_get_type() -> GType;
    pub fn gtk_media_controls_new(stream: *mut GtkMediaStream) -> *mut GtkWidget;
    pub fn gtk_media_controls_get_media_stream(
        controls: *mut GtkMediaControls,
    ) -> *mut GtkMediaStream;
    pub fn gtk_media_controls_set_media_stream(
        controls: *mut GtkMediaControls,
        stream: *mut GtkMediaStream,
    );

    //=========================================================================
    // GtkMediaFile
    //=========================================================================
    pub fn gtk_media_file_get_type() -> GType;
    pub fn gtk_media_file_new() -> *mut GtkMediaFile;
    pub fn gtk_media_file_new_for_file(file: *mut gio::GFile) -> *mut GtkMediaFile;
    pub fn gtk_media_file_new_for_filename(filename: *const c_char) -> *mut GtkMediaFile;
    pub fn gtk_media_file_new_for_input_stream(stream: *mut gio::GInputStream)
        -> *mut GtkMediaFile;
    pub fn gtk_media_file_new_for_resource(resource_path: *const c_char) -> *mut GtkMediaFile;
    pub fn gtk_media_file_clear(self_: *mut GtkMediaFile);
    pub fn gtk_media_file_get_file(self_: *mut GtkMediaFile) -> *mut gio::GFile;
    pub fn gtk_media_file_get_input_stream(self_: *mut GtkMediaFile) -> *mut gio::GInputStream;
    pub fn gtk_media_file_set_file(self_: *mut GtkMediaFile, file: *mut gio::GFile);
    pub fn gtk_media_file_set_filename(self_: *mut GtkMediaFile, filename: *const c_char);
    pub fn gtk_media_file_set_input_stream(
        self_: *mut GtkMediaFile,
        stream: *mut gio::GInputStream,
    );
    pub fn gtk_media_file_set_resource(self_: *mut GtkMediaFile, resource_path: *const c_char);

    //=========================================================================
    // GtkMediaStream
    //=========================================================================
    pub fn gtk_media_stream_get_type() -> GType;
    pub fn gtk_media_stream_ended(self_: *mut GtkMediaStream);
    pub fn gtk_media_stream_error(
        self_: *mut GtkMediaStream,
        domain: glib::GQuark,
        code: c_int,
        format: *const c_char,
        ...
    );
    //pub fn gtk_media_stream_error_valist(self_: *mut GtkMediaStream, domain: glib::GQuark, code: c_int, format: *const c_char, args: /*Unimplemented*/va_list);
    pub fn gtk_media_stream_gerror(self_: *mut GtkMediaStream, error: *mut glib::GError);
    pub fn gtk_media_stream_get_duration(self_: *mut GtkMediaStream) -> i64;
    pub fn gtk_media_stream_get_ended(self_: *mut GtkMediaStream) -> gboolean;
    pub fn gtk_media_stream_get_error(self_: *mut GtkMediaStream) -> *const glib::GError;
    pub fn gtk_media_stream_get_loop(self_: *mut GtkMediaStream) -> gboolean;
    pub fn gtk_media_stream_get_muted(self_: *mut GtkMediaStream) -> gboolean;
    pub fn gtk_media_stream_get_playing(self_: *mut GtkMediaStream) -> gboolean;
    pub fn gtk_media_stream_get_timestamp(self_: *mut GtkMediaStream) -> i64;
    pub fn gtk_media_stream_get_volume(self_: *mut GtkMediaStream) -> c_double;
    pub fn gtk_media_stream_has_audio(self_: *mut GtkMediaStream) -> gboolean;
    pub fn gtk_media_stream_has_video(self_: *mut GtkMediaStream) -> gboolean;
    pub fn gtk_media_stream_is_prepared(self_: *mut GtkMediaStream) -> gboolean;
    pub fn gtk_media_stream_is_seekable(self_: *mut GtkMediaStream) -> gboolean;
    pub fn gtk_media_stream_is_seeking(self_: *mut GtkMediaStream) -> gboolean;
    pub fn gtk_media_stream_pause(self_: *mut GtkMediaStream);
    pub fn gtk_media_stream_play(self_: *mut GtkMediaStream);
    pub fn gtk_media_stream_prepared(
        self_: *mut GtkMediaStream,
        has_audio: gboolean,
        has_video: gboolean,
        seekable: gboolean,
        duration: i64,
    );
    pub fn gtk_media_stream_realize(self_: *mut GtkMediaStream, surface: *mut gdk::GdkSurface);
    pub fn gtk_media_stream_seek(self_: *mut GtkMediaStream, timestamp: i64);
    pub fn gtk_media_stream_seek_failed(self_: *mut GtkMediaStream);
    pub fn gtk_media_stream_seek_success(self_: *mut GtkMediaStream);
    pub fn gtk_media_stream_set_loop(self_: *mut GtkMediaStream, loop_: gboolean);
    pub fn gtk_media_stream_set_muted(self_: *mut GtkMediaStream, muted: gboolean);
    pub fn gtk_media_stream_set_playing(self_: *mut GtkMediaStream, playing: gboolean);
    pub fn gtk_media_stream_set_volume(self_: *mut GtkMediaStream, volume: c_double);
    pub fn gtk_media_stream_unprepared(self_: *mut GtkMediaStream);
    pub fn gtk_media_stream_unrealize(self_: *mut GtkMediaStream, surface: *mut gdk::GdkSurface);
    pub fn gtk_media_stream_update(self_: *mut GtkMediaStream, timestamp: i64);

    //=========================================================================
    // GtkMenuButton
    //=========================================================================
    pub fn gtk_menu_button_get_type() -> GType;
    pub fn gtk_menu_button_new() -> *mut GtkWidget;
    pub fn gtk_menu_button_get_direction(menu_button: *mut GtkMenuButton) -> GtkArrowType;
    pub fn gtk_menu_button_get_has_frame(menu_button: *mut GtkMenuButton) -> gboolean;
    pub fn gtk_menu_button_get_icon_name(menu_button: *mut GtkMenuButton) -> *const c_char;
    pub fn gtk_menu_button_get_label(menu_button: *mut GtkMenuButton) -> *const c_char;
    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_use_underline(menu_button: *mut GtkMenuButton) -> gboolean;
    pub fn gtk_menu_button_popdown(menu_button: *mut GtkMenuButton);
    pub fn gtk_menu_button_popup(menu_button: *mut GtkMenuButton);
    pub fn gtk_menu_button_set_create_popup_func(
        menu_button: *mut GtkMenuButton,
        func: GtkMenuButtonCreatePopupFunc,
        user_data: gpointer,
        destroy_notify: glib::GDestroyNotify,
    );
    pub fn gtk_menu_button_set_direction(menu_button: *mut GtkMenuButton, direction: GtkArrowType);
    pub fn gtk_menu_button_set_has_frame(menu_button: *mut GtkMenuButton, has_frame: gboolean);
    pub fn gtk_menu_button_set_icon_name(menu_button: *mut GtkMenuButton, icon_name: *const c_char);
    pub fn gtk_menu_button_set_label(menu_button: *mut GtkMenuButton, label: *const c_char);
    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_use_underline(
        menu_button: *mut GtkMenuButton,
        use_underline: gboolean,
    );

    //=========================================================================
    // 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_message_area(
        message_dialog: *mut GtkMessageDialog,
    ) -> *mut GtkWidget;
    pub fn gtk_message_dialog_set_markup(message_dialog: *mut GtkMessageDialog, str: *const c_char);

    //=========================================================================
    // GtkMnemonicAction
    //=========================================================================
    pub fn gtk_mnemonic_action_get_type() -> GType;
    pub fn gtk_mnemonic_action_get() -> *mut GtkMnemonicAction;

    //=========================================================================
    // GtkMnemonicTrigger
    //=========================================================================
    pub fn gtk_mnemonic_trigger_get_type() -> GType;
    pub fn gtk_mnemonic_trigger_new(keyval: c_uint) -> *mut GtkMnemonicTrigger;
    pub fn gtk_mnemonic_trigger_get_keyval(self_: *mut GtkMnemonicTrigger) -> c_uint;

    //=========================================================================
    // 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_display(op: *mut GtkMountOperation) -> *mut gdk::GdkDisplay;
    pub fn gtk_mount_operation_get_parent(op: *mut GtkMountOperation) -> *mut GtkWindow;
    pub fn gtk_mount_operation_is_showing(op: *mut GtkMountOperation) -> gboolean;
    pub fn gtk_mount_operation_set_display(
        op: *mut GtkMountOperation,
        display: *mut gdk::GdkDisplay,
    );
    pub fn gtk_mount_operation_set_parent(op: *mut GtkMountOperation, parent: *mut GtkWindow);

    //=========================================================================
    // GtkMultiFilter
    //=========================================================================
    pub fn gtk_multi_filter_get_type() -> GType;
    pub fn gtk_multi_filter_append(self_: *mut GtkMultiFilter, filter: *mut GtkFilter);
    pub fn gtk_multi_filter_remove(self_: *mut GtkMultiFilter, position: c_uint);

    //=========================================================================
    // GtkMultiSelection
    //=========================================================================
    pub fn gtk_multi_selection_get_type() -> GType;
    pub fn gtk_multi_selection_new(model: *mut gio::GListModel) -> *mut GtkMultiSelection;
    pub fn gtk_multi_selection_get_model(self_: *mut GtkMultiSelection) -> *mut gio::GListModel;
    pub fn gtk_multi_selection_set_model(
        self_: *mut GtkMultiSelection,
        model: *mut gio::GListModel,
    );

    //=========================================================================
    // GtkMultiSorter
    //=========================================================================
    pub fn gtk_multi_sorter_get_type() -> GType;
    pub fn gtk_multi_sorter_new() -> *mut GtkMultiSorter;
    pub fn gtk_multi_sorter_append(self_: *mut GtkMultiSorter, sorter: *mut GtkSorter);
    pub fn gtk_multi_sorter_remove(self_: *mut GtkMultiSorter, position: c_uint);

    //=========================================================================
    // GtkNamedAction
    //=========================================================================
    pub fn gtk_named_action_get_type() -> GType;
    pub fn gtk_named_action_new(name: *const c_char) -> *mut GtkNamedAction;
    pub fn gtk_named_action_get_action_name(self_: *mut GtkNamedAction) -> *const c_char;

    //=========================================================================
    // 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_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);

    //=========================================================================
    // GtkNeverTrigger
    //=========================================================================
    pub fn gtk_never_trigger_get_type() -> GType;
    pub fn gtk_never_trigger_get() -> *mut GtkNeverTrigger;

    //=========================================================================
    // GtkNoSelection
    //=========================================================================
    pub fn gtk_no_selection_get_type() -> GType;
    pub fn gtk_no_selection_new(model: *mut gio::GListModel) -> *mut GtkNoSelection;
    pub fn gtk_no_selection_get_model(self_: *mut GtkNoSelection) -> *mut gio::GListModel;
    pub fn gtk_no_selection_set_model(self_: *mut GtkNoSelection, model: *mut gio::GListModel);

    //=========================================================================
    // 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_page(
        notebook: *mut GtkNotebook,
        child: *mut GtkWidget,
    ) -> *mut GtkNotebookPage;
    pub fn gtk_notebook_get_pages(notebook: *mut GtkNotebook) -> *mut gio::GListModel;
    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_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_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,
    );

    //=========================================================================
    // GtkNotebookPage
    //=========================================================================
    pub fn gtk_notebook_page_get_type() -> GType;
    pub fn gtk_notebook_page_get_child(page: *mut GtkNotebookPage) -> *mut GtkWidget;

    //=========================================================================
    // GtkNothingAction
    //=========================================================================
    pub fn gtk_nothing_action_get_type() -> GType;
    pub fn gtk_nothing_action_get() -> *mut GtkNothingAction;

    //=========================================================================
    // GtkNumericSorter
    //=========================================================================
    pub fn gtk_numeric_sorter_get_type() -> GType;
    pub fn gtk_numeric_sorter_new(expression: *mut GtkExpression) -> *mut GtkNumericSorter;
    pub fn gtk_numeric_sorter_get_expression(self_: *mut GtkNumericSorter) -> *mut GtkExpression;
    pub fn gtk_numeric_sorter_get_sort_order(self_: *mut GtkNumericSorter) -> GtkSortType;
    pub fn gtk_numeric_sorter_set_expression(
        self_: *mut GtkNumericSorter,
        expression: *mut GtkExpression,
    );
    pub fn gtk_numeric_sorter_set_sort_order(self_: *mut GtkNumericSorter, sort_order: GtkSortType);

    //=========================================================================
    // GtkObjectExpression
    //=========================================================================
    pub fn gtk_object_expression_get_type() -> GType;
    pub fn gtk_object_expression_new(object: *mut gobject::GObject) -> *mut GtkObjectExpression;
    pub fn gtk_object_expression_get_object(
        expression: *mut GtkObjectExpression,
    ) -> *mut gobject::GObject;

    //=========================================================================
    // 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_child(overlay: *mut GtkOverlay) -> *mut GtkWidget;
    pub fn gtk_overlay_get_clip_overlay(
        overlay: *mut GtkOverlay,
        widget: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_overlay_get_measure_overlay(
        overlay: *mut GtkOverlay,
        widget: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_overlay_remove_overlay(overlay: *mut GtkOverlay, widget: *mut GtkWidget);
    pub fn gtk_overlay_set_child(overlay: *mut GtkOverlay, child: *mut GtkWidget);
    pub fn gtk_overlay_set_clip_overlay(
        overlay: *mut GtkOverlay,
        widget: *mut GtkWidget,
        clip_overlay: gboolean,
    );
    pub fn gtk_overlay_set_measure_overlay(
        overlay: *mut GtkOverlay,
        widget: *mut GtkWidget,
        measure: gboolean,
    );

    //=========================================================================
    // GtkOverlayLayout
    //=========================================================================
    pub fn gtk_overlay_layout_get_type() -> GType;
    pub fn gtk_overlay_layout_new() -> *mut GtkLayoutManager;

    //=========================================================================
    // GtkOverlayLayoutChild
    //=========================================================================
    pub fn gtk_overlay_layout_child_get_type() -> GType;
    pub fn gtk_overlay_layout_child_get_clip_overlay(child: *mut GtkOverlayLayoutChild)
        -> gboolean;
    pub fn gtk_overlay_layout_child_get_measure(child: *mut GtkOverlayLayoutChild) -> gboolean;
    pub fn gtk_overlay_layout_child_set_clip_overlay(
        child: *mut GtkOverlayLayoutChild,
        clip_overlay: gboolean,
    );
    pub fn gtk_overlay_layout_child_set_measure(
        child: *mut GtkOverlayLayoutChild,
        measure: gboolean,
    );

    //=========================================================================
    // GtkPadController
    //=========================================================================
    pub fn gtk_pad_controller_get_type() -> GType;
    pub fn gtk_pad_controller_new(
        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,
    );

    //=========================================================================
    // GtkPageSetupUnixDialog
    //=========================================================================
    pub fn gtk_page_setup_unix_dialog_get_type() -> GType;
    pub fn gtk_page_setup_unix_dialog_new(
        title: *const c_char,
        parent: *mut GtkWindow,
    ) -> *mut GtkWidget;
    pub fn gtk_page_setup_unix_dialog_get_page_setup(
        dialog: *mut GtkPageSetupUnixDialog,
    ) -> *mut GtkPageSetup;
    pub fn gtk_page_setup_unix_dialog_get_print_settings(
        dialog: *mut GtkPageSetupUnixDialog,
    ) -> *mut GtkPrintSettings;
    pub fn gtk_page_setup_unix_dialog_set_page_setup(
        dialog: *mut GtkPageSetupUnixDialog,
        page_setup: *mut GtkPageSetup,
    );
    pub fn gtk_page_setup_unix_dialog_set_print_settings(
        dialog: *mut GtkPageSetupUnixDialog,
        print_settings: *mut GtkPrintSettings,
    );

    //=========================================================================
    // GtkPaned
    //=========================================================================
    pub fn gtk_paned_get_type() -> GType;
    pub fn gtk_paned_new(orientation: GtkOrientation) -> *mut GtkWidget;
    pub fn gtk_paned_get_end_child(paned: *mut GtkPaned) -> *mut GtkWidget;
    pub fn gtk_paned_get_position(paned: *mut GtkPaned) -> c_int;
    pub fn gtk_paned_get_resize_end_child(paned: *mut GtkPaned) -> gboolean;
    pub fn gtk_paned_get_resize_start_child(paned: *mut GtkPaned) -> gboolean;
    pub fn gtk_paned_get_shrink_end_child(paned: *mut GtkPaned) -> gboolean;
    pub fn gtk_paned_get_shrink_start_child(paned: *mut GtkPaned) -> gboolean;
    pub fn gtk_paned_get_start_child(paned: *mut GtkPaned) -> *mut GtkWidget;
    pub fn gtk_paned_get_wide_handle(paned: *mut GtkPaned) -> gboolean;
    pub fn gtk_paned_set_end_child(paned: *mut GtkPaned, child: *mut GtkWidget);
    pub fn gtk_paned_set_position(paned: *mut GtkPaned, position: c_int);
    pub fn gtk_paned_set_resize_end_child(paned: *mut GtkPaned, resize: gboolean);
    pub fn gtk_paned_set_resize_start_child(paned: *mut GtkPaned, resize: gboolean);
    pub fn gtk_paned_set_shrink_end_child(paned: *mut GtkPaned, resize: gboolean);
    pub fn gtk_paned_set_shrink_start_child(paned: *mut GtkPaned, resize: gboolean);
    pub fn gtk_paned_set_start_child(paned: *mut GtkPaned, child: *mut GtkWidget);
    pub fn gtk_paned_set_wide_handle(paned: *mut GtkPaned, wide: gboolean);

    //=========================================================================
    // GtkParamSpecExpression
    //=========================================================================
    pub fn gtk_param_expression_get_type() -> GType;

    //=========================================================================
    // GtkPasswordEntry
    //=========================================================================
    pub fn gtk_password_entry_get_type() -> GType;
    pub fn gtk_password_entry_new() -> *mut GtkWidget;
    pub fn gtk_password_entry_get_extra_menu(entry: *mut GtkPasswordEntry) -> *mut gio::GMenuModel;
    pub fn gtk_password_entry_get_show_peek_icon(entry: *mut GtkPasswordEntry) -> gboolean;
    pub fn gtk_password_entry_set_extra_menu(
        entry: *mut GtkPasswordEntry,
        model: *mut gio::GMenuModel,
    );
    pub fn gtk_password_entry_set_show_peek_icon(
        entry: *mut GtkPasswordEntry,
        show_peek_icon: gboolean,
    );

    //=========================================================================
    // GtkPicture
    //=========================================================================
    pub fn gtk_picture_get_type() -> GType;
    pub fn gtk_picture_new() -> *mut GtkWidget;
    pub fn gtk_picture_new_for_file(file: *mut gio::GFile) -> *mut GtkWidget;
    pub fn gtk_picture_new_for_filename(filename: *const c_char) -> *mut GtkWidget;
    pub fn gtk_picture_new_for_paintable(paintable: *mut gdk::GdkPaintable) -> *mut GtkWidget;
    pub fn gtk_picture_new_for_pixbuf(pixbuf: *mut gdk_pixbuf::GdkPixbuf) -> *mut GtkWidget;
    pub fn gtk_picture_new_for_resource(resource_path: *const c_char) -> *mut GtkWidget;
    pub fn gtk_picture_get_alternative_text(self_: *mut GtkPicture) -> *const c_char;
    pub fn gtk_picture_get_can_shrink(self_: *mut GtkPicture) -> gboolean;
    pub fn gtk_picture_get_file(self_: *mut GtkPicture) -> *mut gio::GFile;
    pub fn gtk_picture_get_keep_aspect_ratio(self_: *mut GtkPicture) -> gboolean;
    pub fn gtk_picture_get_paintable(self_: *mut GtkPicture) -> *mut gdk::GdkPaintable;
    pub fn gtk_picture_set_alternative_text(
        self_: *mut GtkPicture,
        alternative_text: *const c_char,
    );
    pub fn gtk_picture_set_can_shrink(self_: *mut GtkPicture, can_shrink: gboolean);
    pub fn gtk_picture_set_file(self_: *mut GtkPicture, file: *mut gio::GFile);
    pub fn gtk_picture_set_filename(self_: *mut GtkPicture, filename: *const c_char);
    pub fn gtk_picture_set_keep_aspect_ratio(self_: *mut GtkPicture, keep_aspect_ratio: gboolean);
    pub fn gtk_picture_set_paintable(self_: *mut GtkPicture, paintable: *mut gdk::GdkPaintable);
    pub fn gtk_picture_set_pixbuf(self_: *mut GtkPicture, pixbuf: *mut gdk_pixbuf::GdkPixbuf);
    pub fn gtk_picture_set_resource(self_: *mut GtkPicture, resource_path: *const c_char);

    //=========================================================================
    // GtkPopover
    //=========================================================================
    pub fn gtk_popover_get_type() -> GType;
    pub fn gtk_popover_new() -> *mut GtkWidget;
    pub fn gtk_popover_get_autohide(popover: *mut GtkPopover) -> gboolean;
    pub fn gtk_popover_get_cascade_popdown(popover: *mut GtkPopover) -> gboolean;
    pub fn gtk_popover_get_child(popover: *mut GtkPopover) -> *mut GtkWidget;
    pub fn gtk_popover_get_has_arrow(popover: *mut GtkPopover) -> gboolean;
    pub fn gtk_popover_get_mnemonics_visible(popover: *mut GtkPopover) -> gboolean;
    pub fn gtk_popover_get_offset(
        popover: *mut GtkPopover,
        x_offset: *mut c_int,
        y_offset: *mut c_int,
    );
    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_popdown(popover: *mut GtkPopover);
    pub fn gtk_popover_popup(popover: *mut GtkPopover);
    pub fn gtk_popover_present(popover: *mut GtkPopover);
    pub fn gtk_popover_set_autohide(popover: *mut GtkPopover, autohide: gboolean);
    pub fn gtk_popover_set_cascade_popdown(popover: *mut GtkPopover, cascade_popdown: gboolean);
    pub fn gtk_popover_set_child(popover: *mut GtkPopover, child: *mut GtkWidget);
    pub fn gtk_popover_set_default_widget(popover: *mut GtkPopover, widget: *mut GtkWidget);
    pub fn gtk_popover_set_has_arrow(popover: *mut GtkPopover, has_arrow: gboolean);
    pub fn gtk_popover_set_mnemonics_visible(popover: *mut GtkPopover, mnemonics_visible: gboolean);
    pub fn gtk_popover_set_offset(popover: *mut GtkPopover, x_offset: c_int, y_offset: c_int);
    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);

    //=========================================================================
    // GtkPopoverMenu
    //=========================================================================
    pub fn gtk_popover_menu_get_type() -> GType;
    pub fn gtk_popover_menu_new_from_model(model: *mut gio::GMenuModel) -> *mut GtkWidget;
    pub fn gtk_popover_menu_new_from_model_full(
        model: *mut gio::GMenuModel,
        flags: GtkPopoverMenuFlags,
    ) -> *mut GtkWidget;
    pub fn gtk_popover_menu_add_child(
        popover: *mut GtkPopoverMenu,
        child: *mut GtkWidget,
        id: *const c_char,
    ) -> gboolean;
    pub fn gtk_popover_menu_get_menu_model(popover: *mut GtkPopoverMenu) -> *mut gio::GMenuModel;
    pub fn gtk_popover_menu_remove_child(
        popover: *mut GtkPopoverMenu,
        child: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_popover_menu_set_menu_model(
        popover: *mut GtkPopoverMenu,
        model: *mut gio::GMenuModel,
    );

    //=========================================================================
    // GtkPopoverMenuBar
    //=========================================================================
    pub fn gtk_popover_menu_bar_get_type() -> GType;
    pub fn gtk_popover_menu_bar_new_from_model(model: *mut gio::GMenuModel) -> *mut GtkWidget;
    pub fn gtk_popover_menu_bar_add_child(
        bar: *mut GtkPopoverMenuBar,
        child: *mut GtkWidget,
        id: *const c_char,
    ) -> gboolean;
    pub fn gtk_popover_menu_bar_get_menu_model(bar: *mut GtkPopoverMenuBar)
        -> *mut gio::GMenuModel;
    pub fn gtk_popover_menu_bar_remove_child(
        bar: *mut GtkPopoverMenuBar,
        child: *mut GtkWidget,
    ) -> gboolean;
    pub fn gtk_popover_menu_bar_set_menu_model(
        bar: *mut GtkPopoverMenuBar,
        model: *mut gio::GMenuModel,
    );

    //=========================================================================
    // 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,
    );

    //=========================================================================
    // GtkPrintJob
    //=========================================================================
    pub fn gtk_print_job_get_type() -> GType;
    pub fn gtk_print_job_new(
        title: *const c_char,
        printer: *mut GtkPrinter,
        settings: *mut GtkPrintSettings,
        page_setup: *mut GtkPageSetup,
    ) -> *mut GtkPrintJob;
    pub fn gtk_print_job_get_collate(job: *mut GtkPrintJob) -> gboolean;
    pub fn gtk_print_job_get_n_up(job: *mut GtkPrintJob) -> c_uint;
    pub fn gtk_print_job_get_n_up_layout(job: *mut GtkPrintJob) -> GtkNumberUpLayout;
    pub fn gtk_print_job_get_num_copies(job: *mut GtkPrintJob) -> c_int;
    pub fn gtk_print_job_get_page_ranges(
        job: *mut GtkPrintJob,
        n_ranges: *mut c_int,
    ) -> *mut GtkPageRange;
    pub fn gtk_print_job_get_page_set(job: *mut GtkPrintJob) -> GtkPageSet;
    pub fn gtk_print_job_get_pages(job: *mut GtkPrintJob) -> GtkPrintPages;
    pub fn gtk_print_job_get_printer(job: *mut GtkPrintJob) -> *mut GtkPrinter;
    pub fn gtk_print_job_get_reverse(job: *mut GtkPrintJob) -> gboolean;
    pub fn gtk_print_job_get_rotate(job: *mut GtkPrintJob) -> gboolean;
    pub fn gtk_print_job_get_scale(job: *mut GtkPrintJob) -> c_double;
    pub fn gtk_print_job_get_settings(job: *mut GtkPrintJob) -> *mut GtkPrintSettings;
    pub fn gtk_print_job_get_status(job: *mut GtkPrintJob) -> GtkPrintStatus;
    pub fn gtk_print_job_get_surface(
        job: *mut GtkPrintJob,
        error: *mut *mut glib::GError,
    ) -> *mut cairo::cairo_surface_t;
    pub fn gtk_print_job_get_title(job: *mut GtkPrintJob) -> *const c_char;
    pub fn gtk_print_job_get_track_print_status(job: *mut GtkPrintJob) -> gboolean;
    pub fn gtk_print_job_send(
        job: *mut GtkPrintJob,
        callback: GtkPrintJobCompleteFunc,
        user_data: gpointer,
        dnotify: glib::GDestroyNotify,
    );
    pub fn gtk_print_job_set_collate(job: *mut GtkPrintJob, collate: gboolean);
    pub fn gtk_print_job_set_n_up(job: *mut GtkPrintJob, n_up: c_uint);
    pub fn gtk_print_job_set_n_up_layout(job: *mut GtkPrintJob, layout: GtkNumberUpLayout);
    pub fn gtk_print_job_set_num_copies(job: *mut GtkPrintJob, num_copies: c_int);
    pub fn gtk_print_job_set_page_ranges(
        job: *mut GtkPrintJob,
        ranges: *mut GtkPageRange,
        n_ranges: c_int,
    );
    pub fn gtk_print_job_set_page_set(job: *mut GtkPrintJob, page_set: GtkPageSet);
    pub fn gtk_print_job_set_pages(job: *mut GtkPrintJob, pages: GtkPrintPages);
    pub fn gtk_print_job_set_reverse(job: *mut GtkPrintJob, reverse: gboolean);
    pub fn gtk_print_job_set_rotate(job: *mut GtkPrintJob, rotate: gboolean);
    pub fn gtk_print_job_set_scale(job: *mut GtkPrintJob, scale: c_double);
    pub fn gtk_print_job_set_source_fd(
        job: *mut GtkPrintJob,
        fd: c_int,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_print_job_set_source_file(
        job: *mut GtkPrintJob,
        filename: *const c_char,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_print_job_set_track_print_status(job: *mut GtkPrintJob, track_status: gboolean);

    //=========================================================================
    // 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);

    //=========================================================================
    // GtkPrintUnixDialog
    //=========================================================================
    pub fn gtk_print_unix_dialog_get_type() -> GType;
    pub fn gtk_print_unix_dialog_new(
        title: *const c_char,
        parent: *mut GtkWindow,
    ) -> *mut GtkWidget;
    pub fn gtk_print_unix_dialog_add_custom_tab(
        dialog: *mut GtkPrintUnixDialog,
        child: *mut GtkWidget,
        tab_label: *mut GtkWidget,
    );
    pub fn gtk_print_unix_dialog_get_current_page(dialog: *mut GtkPrintUnixDialog) -> c_int;
    pub fn gtk_print_unix_dialog_get_embed_page_setup(dialog: *mut GtkPrintUnixDialog) -> gboolean;
    pub fn gtk_print_unix_dialog_get_has_selection(dialog: *mut GtkPrintUnixDialog) -> gboolean;
    pub fn gtk_print_unix_dialog_get_manual_capabilities(
        dialog: *mut GtkPrintUnixDialog,
    ) -> GtkPrintCapabilities;
    pub fn gtk_print_unix_dialog_get_page_setup(
        dialog: *mut GtkPrintUnixDialog,
    ) -> *mut GtkPageSetup;
    pub fn gtk_print_unix_dialog_get_page_setup_set(dialog: *mut GtkPrintUnixDialog) -> gboolean;
    pub fn gtk_print_unix_dialog_get_selected_printer(
        dialog: *mut GtkPrintUnixDialog,
    ) -> *mut GtkPrinter;
    pub fn gtk_print_unix_dialog_get_settings(
        dialog: *mut GtkPrintUnixDialog,
    ) -> *mut GtkPrintSettings;
    pub fn gtk_print_unix_dialog_get_support_selection(dialog: *mut GtkPrintUnixDialog)
        -> gboolean;
    pub fn gtk_print_unix_dialog_set_current_page(
        dialog: *mut GtkPrintUnixDialog,
        current_page: c_int,
    );
    pub fn gtk_print_unix_dialog_set_embed_page_setup(
        dialog: *mut GtkPrintUnixDialog,
        embed: gboolean,
    );
    pub fn gtk_print_unix_dialog_set_has_selection(
        dialog: *mut GtkPrintUnixDialog,
        has_selection: gboolean,
    );
    pub fn gtk_print_unix_dialog_set_manual_capabilities(
        dialog: *mut GtkPrintUnixDialog,
        capabilities: GtkPrintCapabilities,
    );
    pub fn gtk_print_unix_dialog_set_page_setup(
        dialog: *mut GtkPrintUnixDialog,
        page_setup: *mut GtkPageSetup,
    );
    pub fn gtk_print_unix_dialog_set_settings(
        dialog: *mut GtkPrintUnixDialog,
        settings: *mut GtkPrintSettings,
    );
    pub fn gtk_print_unix_dialog_set_support_selection(
        dialog: *mut GtkPrintUnixDialog,
        support_selection: gboolean,
    );

    //=========================================================================
    // GtkPrinter
    //=========================================================================
    pub fn gtk_printer_get_type() -> GType;
    pub fn gtk_printer_new(
        name: *const c_char,
        backend: *mut GtkPrintBackend,
        virtual_: gboolean,
    ) -> *mut GtkPrinter;
    pub fn gtk_printer_accepts_pdf(printer: *mut GtkPrinter) -> gboolean;
    pub fn gtk_printer_accepts_ps(printer: *mut GtkPrinter) -> gboolean;
    pub fn gtk_printer_compare(a: *mut GtkPrinter, b: *mut GtkPrinter) -> c_int;
    pub fn gtk_printer_get_backend(printer: *mut GtkPrinter) -> *mut GtkPrintBackend;
    pub fn gtk_printer_get_capabilities(printer: *mut GtkPrinter) -> GtkPrintCapabilities;
    pub fn gtk_printer_get_default_page_size(printer: *mut GtkPrinter) -> *mut GtkPageSetup;
    pub fn gtk_printer_get_description(printer: *mut GtkPrinter) -> *const c_char;
    pub fn gtk_printer_get_hard_margins(
        printer: *mut GtkPrinter,
        top: *mut c_double,
        bottom: *mut c_double,
        left: *mut c_double,
        right: *mut c_double,
    ) -> gboolean;
    pub fn gtk_printer_get_hard_margins_for_paper_size(
        printer: *mut GtkPrinter,
        paper_size: *mut GtkPaperSize,
        top: *mut c_double,
        bottom: *mut c_double,
        left: *mut c_double,
        right: *mut c_double,
    ) -> gboolean;
    pub fn gtk_printer_get_icon_name(printer: *mut GtkPrinter) -> *const c_char;
    pub fn gtk_printer_get_job_count(printer: *mut GtkPrinter) -> c_int;
    pub fn gtk_printer_get_location(printer: *mut GtkPrinter) -> *const c_char;
    pub fn gtk_printer_get_name(printer: *mut GtkPrinter) -> *const c_char;
    pub fn gtk_printer_get_state_message(printer: *mut GtkPrinter) -> *const c_char;
    pub fn gtk_printer_has_details(printer: *mut GtkPrinter) -> gboolean;
    pub fn gtk_printer_is_accepting_jobs(printer: *mut GtkPrinter) -> gboolean;
    pub fn gtk_printer_is_active(printer: *mut GtkPrinter) -> gboolean;
    pub fn gtk_printer_is_default(printer: *mut GtkPrinter) -> gboolean;
    pub fn gtk_printer_is_paused(printer: *mut GtkPrinter) -> gboolean;
    pub fn gtk_printer_is_virtual(printer: *mut GtkPrinter) -> gboolean;
    pub fn gtk_printer_list_papers(printer: *mut GtkPrinter) -> *mut glib::GList;
    pub fn gtk_printer_request_details(printer: *mut GtkPrinter);

    //=========================================================================
    // 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);

    //=========================================================================
    // GtkPropertyExpression
    //=========================================================================
    pub fn gtk_property_expression_get_type() -> GType;
    pub fn gtk_property_expression_new(
        this_type: GType,
        expression: *mut GtkExpression,
        property_name: *const c_char,
    ) -> *mut GtkPropertyExpression;
    pub fn gtk_property_expression_new_for_pspec(
        expression: *mut GtkExpression,
        pspec: *mut gobject::GParamSpec,
    ) -> *mut GtkPropertyExpression;
    pub fn gtk_property_expression_get_expression(
        expression: *mut GtkPropertyExpression,
    ) -> *mut GtkExpression;
    pub fn gtk_property_expression_get_pspec(
        expression: *mut GtkPropertyExpression,
    ) -> *mut gobject::GParamSpec;

    //=========================================================================
    // 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_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_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_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_value(range: *mut GtkRange, value: c_double);

    //=========================================================================
    // 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;

    //=========================================================================
    // GtkRevealer
    //=========================================================================
    pub fn gtk_revealer_get_type() -> GType;
    pub fn gtk_revealer_new() -> *mut GtkWidget;
    pub fn gtk_revealer_get_child(revealer: *mut GtkRevealer) -> *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_child(revealer: *mut GtkRevealer, child: *mut GtkWidget);
    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_format_value_func(
        scale: *mut GtkScale,
        func: GtkScaleFormatValueFunc,
        user_data: gpointer,
        destroy_notify: glib::GDestroyNotify,
    );
    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);

    //=========================================================================
    // GtkScaleButton
    //=========================================================================
    pub fn gtk_scale_button_get_type() -> GType;
    pub fn gtk_scale_button_new(
        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);

    //=========================================================================
    // GtkScrollbar
    //=========================================================================
    pub fn gtk_scrollbar_get_type() -> GType;
    pub fn gtk_scrollbar_new(
        orientation: GtkOrientation,
        adjustment: *mut GtkAdjustment,
    ) -> *mut GtkWidget;
    pub fn gtk_scrollbar_get_adjustment(self_: *mut GtkScrollbar) -> *mut GtkAdjustment;
    pub fn gtk_scrollbar_set_adjustment(self_: *mut GtkScrollbar, adjustment: *mut GtkAdjustment);

    //=========================================================================
    // GtkScrolledWindow
    //=========================================================================
    pub fn gtk_scrolled_window_get_type() -> GType;
    pub fn gtk_scrolled_window_new() -> *mut GtkWidget;
    pub fn gtk_scrolled_window_get_child(scrolled_window: *mut GtkScrolledWindow)
        -> *mut GtkWidget;
    pub fn gtk_scrolled_window_get_hadjustment(
        scrolled_window: *mut GtkScrolledWindow,
    ) -> *mut GtkAdjustment;
    pub fn gtk_scrolled_window_get_has_frame(scrolled_window: *mut GtkScrolledWindow) -> gboolean;
    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_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_child(
        scrolled_window: *mut GtkScrolledWindow,
        child: *mut GtkWidget,
    );
    pub fn gtk_scrolled_window_set_hadjustment(
        scrolled_window: *mut GtkScrolledWindow,
        hadjustment: *mut GtkAdjustment,
    );
    pub fn gtk_scrolled_window_set_has_frame(
        scrolled_window: *mut GtkScrolledWindow,
        has_frame: gboolean,
    );
    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_vadjustment(
        scrolled_window: *mut GtkScrolledWindow,
        vadjustment: *mut GtkAdjustment,
    );
    pub fn gtk_scrolled_window_unset_placement(scrolled_window: *mut GtkScrolledWindow);

    //=========================================================================
    // 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 GtkEditable);
    pub fn gtk_search_bar_get_child(bar: *mut GtkSearchBar) -> *mut GtkWidget;
    pub fn gtk_search_bar_get_key_capture_widget(bar: *mut GtkSearchBar) -> *mut GtkWidget;
    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_set_child(bar: *mut GtkSearchBar, child: *mut GtkWidget);
    pub fn gtk_search_bar_set_key_capture_widget(bar: *mut GtkSearchBar, widget: *mut GtkWidget);
    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_get_key_capture_widget(entry: *mut GtkSearchEntry) -> *mut GtkWidget;
    pub fn gtk_search_entry_set_key_capture_widget(
        entry: *mut GtkSearchEntry,
        widget: *mut GtkWidget,
    );

    //=========================================================================
    // GtkSelectionFilterModel
    //=========================================================================
    pub fn gtk_selection_filter_model_get_type() -> GType;
    pub fn gtk_selection_filter_model_new(
        model: *mut GtkSelectionModel,
    ) -> *mut GtkSelectionFilterModel;
    pub fn gtk_selection_filter_model_get_model(
        self_: *mut GtkSelectionFilterModel,
    ) -> *mut GtkSelectionModel;
    pub fn gtk_selection_filter_model_set_model(
        self_: *mut GtkSelectionFilterModel,
        model: *mut GtkSelectionModel,
    );

    //=========================================================================
    // GtkSeparator
    //=========================================================================
    pub fn gtk_separator_get_type() -> GType;
    pub fn gtk_separator_new(orientation: GtkOrientation) -> *mut GtkWidget;

    //=========================================================================
    // GtkSettings
    //=========================================================================
    pub fn gtk_settings_get_type() -> GType;
    pub fn gtk_settings_get_default() -> *mut GtkSettings;
    pub fn gtk_settings_get_for_display(display: *mut gdk::GdkDisplay) -> *mut GtkSettings;
    pub fn gtk_settings_reset_property(settings: *mut GtkSettings, name: *const c_char);

    //=========================================================================
    // GtkShortcut
    //=========================================================================
    pub fn gtk_shortcut_get_type() -> GType;
    pub fn gtk_shortcut_new(
        trigger: *mut GtkShortcutTrigger,
        action: *mut GtkShortcutAction,
    ) -> *mut GtkShortcut;
    pub fn gtk_shortcut_new_with_arguments(
        trigger: *mut GtkShortcutTrigger,
        action: *mut GtkShortcutAction,
        format_string: *const c_char,
        ...
    ) -> *mut GtkShortcut;
    pub fn gtk_shortcut_get_action(self_: *mut GtkShortcut) -> *mut GtkShortcutAction;
    pub fn gtk_shortcut_get_arguments(self_: *mut GtkShortcut) -> *mut glib::GVariant;
    pub fn gtk_shortcut_get_trigger(self_: *mut GtkShortcut) -> *mut GtkShortcutTrigger;
    pub fn gtk_shortcut_set_action(self_: *mut GtkShortcut, action: *mut GtkShortcutAction);
    pub fn gtk_shortcut_set_arguments(self_: *mut GtkShortcut, args: *mut glib::GVariant);
    pub fn gtk_shortcut_set_trigger(self_: *mut GtkShortcut, trigger: *mut GtkShortcutTrigger);

    //=========================================================================
    // GtkShortcutAction
    //=========================================================================
    pub fn gtk_shortcut_action_get_type() -> GType;
    pub fn gtk_shortcut_action_parse_string(string: *const c_char) -> *mut GtkShortcutAction;
    pub fn gtk_shortcut_action_activate(
        self_: *mut GtkShortcutAction,
        flags: GtkShortcutActionFlags,
        widget: *mut GtkWidget,
        args: *mut glib::GVariant,
    ) -> gboolean;
    pub fn gtk_shortcut_action_print(self_: *mut GtkShortcutAction, string: *mut glib::GString);
    pub fn gtk_shortcut_action_to_string(self_: *mut GtkShortcutAction) -> *mut c_char;

    //=========================================================================
    // GtkShortcutController
    //=========================================================================
    pub fn gtk_shortcut_controller_get_type() -> GType;
    pub fn gtk_shortcut_controller_new() -> *mut GtkEventController;
    pub fn gtk_shortcut_controller_new_for_model(
        model: *mut gio::GListModel,
    ) -> *mut GtkEventController;
    pub fn gtk_shortcut_controller_add_shortcut(
        self_: *mut GtkShortcutController,
        shortcut: *mut GtkShortcut,
    );
    pub fn gtk_shortcut_controller_get_mnemonics_modifiers(
        self_: *mut GtkShortcutController,
    ) -> gdk::GdkModifierType;
    pub fn gtk_shortcut_controller_get_scope(self_: *mut GtkShortcutController)
        -> GtkShortcutScope;
    pub fn gtk_shortcut_controller_remove_shortcut(
        self_: *mut GtkShortcutController,
        shortcut: *mut GtkShortcut,
    );
    pub fn gtk_shortcut_controller_set_mnemonics_modifiers(
        self_: *mut GtkShortcutController,
        modifiers: gdk::GdkModifierType,
    );
    pub fn gtk_shortcut_controller_set_scope(
        self_: *mut GtkShortcutController,
        scope: GtkShortcutScope,
    );

    //=========================================================================
    // 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,
    );

    //=========================================================================
    // GtkShortcutTrigger
    //=========================================================================
    pub fn gtk_shortcut_trigger_get_type() -> GType;
    pub fn gtk_shortcut_trigger_parse_string(string: *const c_char) -> *mut GtkShortcutTrigger;
    pub fn gtk_shortcut_trigger_compare(trigger1: gconstpointer, trigger2: gconstpointer) -> c_int;
    pub fn gtk_shortcut_trigger_equal(trigger1: gconstpointer, trigger2: gconstpointer)
        -> gboolean;
    pub fn gtk_shortcut_trigger_hash(trigger: gconstpointer) -> c_uint;
    pub fn gtk_shortcut_trigger_print(self_: *mut GtkShortcutTrigger, string: *mut glib::GString);
    pub fn gtk_shortcut_trigger_print_label(
        self_: *mut GtkShortcutTrigger,
        display: *mut gdk::GdkDisplay,
        string: *mut glib::GString,
    ) -> gboolean;
    pub fn gtk_shortcut_trigger_to_label(
        self_: *mut GtkShortcutTrigger,
        display: *mut gdk::GdkDisplay,
    ) -> *mut c_char;
    pub fn gtk_shortcut_trigger_to_string(self_: *mut GtkShortcutTrigger) -> *mut c_char;
    pub fn gtk_shortcut_trigger_trigger(
        self_: *mut GtkShortcutTrigger,
        event: *mut gdk::GdkEvent,
        enable_mnemonics: gboolean,
    ) -> gdk::GdkKeyMatch;

    //=========================================================================
    // 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;

    //=========================================================================
    // GtkSignalAction
    //=========================================================================
    pub fn gtk_signal_action_get_type() -> GType;
    pub fn gtk_signal_action_new(signal_name: *const c_char) -> *mut GtkSignalAction;
    pub fn gtk_signal_action_get_signal_name(self_: *mut GtkSignalAction) -> *const c_char;

    //=========================================================================
    // GtkSignalListItemFactory
    //=========================================================================
    pub fn gtk_signal_list_item_factory_get_type() -> GType;
    pub fn gtk_signal_list_item_factory_new() -> *mut GtkListItemFactory;

    //=========================================================================
    // GtkSingleSelection
    //=========================================================================
    pub fn gtk_single_selection_get_type() -> GType;
    pub fn gtk_single_selection_new(model: *mut gio::GListModel) -> *mut GtkSingleSelection;
    pub fn gtk_single_selection_get_autoselect(self_: *mut GtkSingleSelection) -> gboolean;
    pub fn gtk_single_selection_get_can_unselect(self_: *mut GtkSingleSelection) -> gboolean;
    pub fn gtk_single_selection_get_model(self_: *mut GtkSingleSelection) -> *mut gio::GListModel;
    pub fn gtk_single_selection_get_selected(self_: *mut GtkSingleSelection) -> c_uint;
    pub fn gtk_single_selection_get_selected_item(
        self_: *mut GtkSingleSelection,
    ) -> *mut gobject::GObject;
    pub fn gtk_single_selection_set_autoselect(
        self_: *mut GtkSingleSelection,
        autoselect: gboolean,
    );
    pub fn gtk_single_selection_set_can_unselect(
        self_: *mut GtkSingleSelection,
        can_unselect: gboolean,
    );
    pub fn gtk_single_selection_set_model(
        self_: *mut GtkSingleSelection,
        model: *mut gio::GListModel,
    );
    pub fn gtk_single_selection_set_selected(self_: *mut GtkSingleSelection, position: c_uint);

    //=========================================================================
    // 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_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_mode(size_group: *mut GtkSizeGroup, mode: GtkSizeGroupMode);

    //=========================================================================
    // GtkSliceListModel
    //=========================================================================
    pub fn gtk_slice_list_model_get_type() -> GType;
    pub fn gtk_slice_list_model_new(
        model: *mut gio::GListModel,
        offset: c_uint,
        size: c_uint,
    ) -> *mut GtkSliceListModel;
    pub fn gtk_slice_list_model_get_model(self_: *mut GtkSliceListModel) -> *mut gio::GListModel;
    pub fn gtk_slice_list_model_get_offset(self_: *mut GtkSliceListModel) -> c_uint;
    pub fn gtk_slice_list_model_get_size(self_: *mut GtkSliceListModel) -> c_uint;
    pub fn gtk_slice_list_model_set_model(
        self_: *mut GtkSliceListModel,
        model: *mut gio::GListModel,
    );
    pub fn gtk_slice_list_model_set_offset(self_: *mut GtkSliceListModel, offset: c_uint);
    pub fn gtk_slice_list_model_set_size(self_: *mut GtkSliceListModel, size: c_uint);

    //=========================================================================
    // GtkSnapshot
    //=========================================================================
    pub fn gtk_snapshot_get_type() -> GType;
    pub fn gtk_snapshot_new() -> *mut GtkSnapshot;
    pub fn gtk_snapshot_append_border(
        snapshot: *mut GtkSnapshot,
        outline: *const gsk::GskRoundedRect,
        border_width: *const [c_float; 4],
        border_color: *const [gdk::GdkRGBA; 4],
    );
    pub fn gtk_snapshot_append_cairo(
        snapshot: *mut GtkSnapshot,
        bounds: *const graphene::graphene_rect_t,
    ) -> *mut cairo::cairo_t;
    pub fn gtk_snapshot_append_color(
        snapshot: *mut GtkSnapshot,
        color: *const gdk::GdkRGBA,
        bounds: *const graphene::graphene_rect_t,
    );
    pub fn gtk_snapshot_append_conic_gradient(
        snapshot: *mut GtkSnapshot,
        bounds: *const graphene::graphene_rect_t,
        center: *const graphene::graphene_point_t,
        rotation: c_float,
        stops: *const gsk::GskColorStop,
        n_stops: size_t,
    );
    pub fn gtk_snapshot_append_inset_shadow(
        snapshot: *mut GtkSnapshot,
        outline: *const gsk::GskRoundedRect,
        color: *const gdk::GdkRGBA,
        dx: c_float,
        dy: c_float,
        spread: c_float,
        blur_radius: c_float,
    );
    pub fn gtk_snapshot_append_layout(
        snapshot: *mut GtkSnapshot,
        layout: *mut pango::PangoLayout,
        color: *const gdk::GdkRGBA,
    );
    pub fn gtk_snapshot_append_linear_gradient(
        snapshot: *mut GtkSnapshot,
        bounds: *const graphene::graphene_rect_t,
        start_point: *const graphene::graphene_point_t,
        end_point: *const graphene::graphene_point_t,
        stops: *const gsk::GskColorStop,
        n_stops: size_t,
    );
    pub fn gtk_snapshot_append_node(snapshot: *mut GtkSnapshot, node: *mut gsk::GskRenderNode);
    pub fn gtk_snapshot_append_outset_shadow(
        snapshot: *mut GtkSnapshot,
        outline: *const gsk::GskRoundedRect,
        color: *const gdk::GdkRGBA,
        dx: c_float,
        dy: c_float,
        spread: c_float,
        blur_radius: c_float,
    );
    pub fn gtk_snapshot_append_radial_gradient(
        snapshot: *mut GtkSnapshot,
        bounds: *const graphene::graphene_rect_t,
        center: *const graphene::graphene_point_t,
        hradius: c_float,
        vradius: c_float,
        start: c_float,
        end: c_float,
        stops: *const gsk::GskColorStop,
        n_stops: size_t,
    );
    pub fn gtk_snapshot_append_repeating_linear_gradient(
        snapshot: *mut GtkSnapshot,
        bounds: *const graphene::graphene_rect_t,
        start_point: *const graphene::graphene_point_t,
        end_point: *const graphene::graphene_point_t,
        stops: *const gsk::GskColorStop,
        n_stops: size_t,
    );
    pub fn gtk_snapshot_append_repeating_radial_gradient(
        snapshot: *mut GtkSnapshot,
        bounds: *const graphene::graphene_rect_t,
        center: *const graphene::graphene_point_t,
        hradius: c_float,
        vradius: c_float,
        start: c_float,
        end: c_float,
        stops: *const gsk::GskColorStop,
        n_stops: size_t,
    );
    pub fn gtk_snapshot_append_texture(
        snapshot: *mut GtkSnapshot,
        texture: *mut gdk::GdkTexture,
        bounds: *const graphene::graphene_rect_t,
    );
    pub fn gtk_snapshot_free_to_node(snapshot: *mut GtkSnapshot) -> *mut gsk::GskRenderNode;
    pub fn gtk_snapshot_free_to_paintable(
        snapshot: *mut GtkSnapshot,
        size: *const graphene::graphene_size_t,
    ) -> *mut gdk::GdkPaintable;
    pub fn gtk_snapshot_gl_shader_pop_texture(snapshot: *mut GtkSnapshot);
    pub fn gtk_snapshot_perspective(snapshot: *mut GtkSnapshot, depth: c_float);
    pub fn gtk_snapshot_pop(snapshot: *mut GtkSnapshot);
    pub fn gtk_snapshot_push_blend(snapshot: *mut GtkSnapshot, blend_mode: gsk::GskBlendMode);
    pub fn gtk_snapshot_push_blur(snapshot: *mut GtkSnapshot, radius: c_double);
    pub fn gtk_snapshot_push_clip(
        snapshot: *mut GtkSnapshot,
        bounds: *const graphene::graphene_rect_t,
    );
    pub fn gtk_snapshot_push_color_matrix(
        snapshot: *mut GtkSnapshot,
        color_matrix: *const graphene::graphene_matrix_t,
        color_offset: *const graphene::graphene_vec4_t,
    );
    pub fn gtk_snapshot_push_cross_fade(snapshot: *mut GtkSnapshot, progress: c_double);
    pub fn gtk_snapshot_push_debug(snapshot: *mut GtkSnapshot, message: *const c_char, ...);
    pub fn gtk_snapshot_push_gl_shader(
        snapshot: *mut GtkSnapshot,
        shader: *mut gsk::GskGLShader,
        bounds: *const graphene::graphene_rect_t,
        take_args: *mut glib::GBytes,
    );
    pub fn gtk_snapshot_push_opacity(snapshot: *mut GtkSnapshot, opacity: c_double);
    pub fn gtk_snapshot_push_repeat(
        snapshot: *mut GtkSnapshot,
        bounds: *const graphene::graphene_rect_t,
        child_bounds: *const graphene::graphene_rect_t,
    );
    pub fn gtk_snapshot_push_rounded_clip(
        snapshot: *mut GtkSnapshot,
        bounds: *const gsk::GskRoundedRect,
    );
    pub fn gtk_snapshot_push_shadow(
        snapshot: *mut GtkSnapshot,
        shadow: *const gsk::GskShadow,
        n_shadows: size_t,
    );
    pub fn gtk_snapshot_render_background(
        snapshot: *mut GtkSnapshot,
        context: *mut GtkStyleContext,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
    );
    pub fn gtk_snapshot_render_focus(
        snapshot: *mut GtkSnapshot,
        context: *mut GtkStyleContext,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
    );
    pub fn gtk_snapshot_render_frame(
        snapshot: *mut GtkSnapshot,
        context: *mut GtkStyleContext,
        x: c_double,
        y: c_double,
        width: c_double,
        height: c_double,
    );
    pub fn gtk_snapshot_render_insertion_cursor(
        snapshot: *mut GtkSnapshot,
        context: *mut GtkStyleContext,
        x: c_double,
        y: c_double,
        layout: *mut pango::PangoLayout,
        index: c_int,
        direction: pango::PangoDirection,
    );
    pub fn gtk_snapshot_render_layout(
        snapshot: *mut GtkSnapshot,
        context: *mut GtkStyleContext,
        x: c_double,
        y: c_double,
        layout: *mut pango::PangoLayout,
    );
    pub fn gtk_snapshot_restore(snapshot: *mut GtkSnapshot);
    pub fn gtk_snapshot_rotate(snapshot: *mut GtkSnapshot, angle: c_float);
    pub fn gtk_snapshot_rotate_3d(
        snapshot: *mut GtkSnapshot,
        angle: c_float,
        axis: *const graphene::graphene_vec3_t,
    );
    pub fn gtk_snapshot_save(snapshot: *mut GtkSnapshot);
    pub fn gtk_snapshot_scale(snapshot: *mut GtkSnapshot, factor_x: c_float, factor_y: c_float);
    pub fn gtk_snapshot_scale_3d(
        snapshot: *mut GtkSnapshot,
        factor_x: c_float,
        factor_y: c_float,
        factor_z: c_float,
    );
    pub fn gtk_snapshot_to_node(snapshot: *mut GtkSnapshot) -> *mut gsk::GskRenderNode;
    pub fn gtk_snapshot_to_paintable(
        snapshot: *mut GtkSnapshot,
        size: *const graphene::graphene_size_t,
    ) -> *mut gdk::GdkPaintable;
    pub fn gtk_snapshot_transform(snapshot: *mut GtkSnapshot, transform: *mut gsk::GskTransform);
    pub fn gtk_snapshot_transform_matrix(
        snapshot: *mut GtkSnapshot,
        matrix: *const graphene::graphene_matrix_t,
    );
    pub fn gtk_snapshot_translate(
        snapshot: *mut GtkSnapshot,
        point: *const graphene::graphene_point_t,
    );
    pub fn gtk_snapshot_translate_3d(
        snapshot: *mut GtkSnapshot,
        point: *const graphene::graphene_point3d_t,
    );

    //=========================================================================
    // GtkSortListModel
    //=========================================================================
    pub fn gtk_sort_list_model_get_type() -> GType;
    pub fn gtk_sort_list_model_new(
        model: *mut gio::GListModel,
        sorter: *mut GtkSorter,
    ) -> *mut GtkSortListModel;
    pub fn gtk_sort_list_model_get_incremental(self_: *mut GtkSortListModel) -> gboolean;
    pub fn gtk_sort_list_model_get_model(self_: *mut GtkSortListModel) -> *mut gio::GListModel;
    pub fn gtk_sort_list_model_get_pending(self_: *mut GtkSortListModel) -> c_uint;
    pub fn gtk_sort_list_model_get_sorter(self_: *mut GtkSortListModel) -> *mut GtkSorter;
    pub fn gtk_sort_list_model_set_incremental(self_: *mut GtkSortListModel, incremental: gboolean);
    pub fn gtk_sort_list_model_set_model(self_: *mut GtkSortListModel, model: *mut gio::GListModel);
    pub fn gtk_sort_list_model_set_sorter(self_: *mut GtkSortListModel, sorter: *mut GtkSorter);

    //=========================================================================
    // GtkSorter
    //=========================================================================
    pub fn gtk_sorter_get_type() -> GType;
    pub fn gtk_sorter_changed(self_: *mut GtkSorter, change: GtkSorterChange);
    pub fn gtk_sorter_compare(
        self_: *mut GtkSorter,
        item1: *mut gobject::GObject,
        item2: *mut gobject::GObject,
    ) -> GtkOrdering;
    pub fn gtk_sorter_get_order(self_: *mut GtkSorter) -> GtkSorterOrder;

    //=========================================================================
    // 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_climb_rate(spin_button: *mut GtkSpinButton) -> c_double;
    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_climb_rate(spin_button: *mut GtkSpinButton, climb_rate: c_double);
    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);

    //=========================================================================
    // GtkSpinner
    //=========================================================================
    pub fn gtk_spinner_get_type() -> GType;
    pub fn gtk_spinner_new() -> *mut GtkWidget;
    pub fn gtk_spinner_get_spinning(spinner: *mut GtkSpinner) -> gboolean;
    pub fn gtk_spinner_set_spinning(spinner: *mut GtkSpinner, spinning: gboolean);
    pub fn gtk_spinner_start(spinner: *mut GtkSpinner);
    pub fn gtk_spinner_stop(spinner: *mut GtkSpinner);

    //=========================================================================
    // GtkStack
    //=========================================================================
    pub fn gtk_stack_get_type() -> GType;
    pub fn gtk_stack_new() -> *mut GtkWidget;
    pub fn gtk_stack_add_child(stack: *mut GtkStack, child: *mut GtkWidget) -> *mut GtkStackPage;
    pub fn gtk_stack_add_named(
        stack: *mut GtkStack,
        child: *mut GtkWidget,
        name: *const c_char,
    ) -> *mut GtkStackPage;
    pub fn gtk_stack_add_titled(
        stack: *mut GtkStack,
        child: *mut GtkWidget,
        name: *const c_char,
        title: *const c_char,
    ) -> *mut GtkStackPage;
    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_interpolate_size(stack: *mut GtkStack) -> gboolean;
    pub fn gtk_stack_get_page(stack: *mut GtkStack, child: *mut GtkWidget) -> *mut GtkStackPage;
    pub fn gtk_stack_get_pages(stack: *mut GtkStack) -> *mut GtkSelectionModel;
    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_remove(stack: *mut GtkStack, child: *mut GtkWidget);
    pub fn gtk_stack_set_hhomogeneous(stack: *mut GtkStack, hhomogeneous: 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);

    //=========================================================================
    // GtkStackPage
    //=========================================================================
    pub fn gtk_stack_page_get_type() -> GType;
    pub fn gtk_stack_page_get_child(self_: *mut GtkStackPage) -> *mut GtkWidget;
    pub fn gtk_stack_page_get_icon_name(self_: *mut GtkStackPage) -> *const c_char;
    pub fn gtk_stack_page_get_name(self_: *mut GtkStackPage) -> *const c_char;
    pub fn gtk_stack_page_get_needs_attention(self_: *mut GtkStackPage) -> gboolean;
    pub fn gtk_stack_page_get_title(self_: *mut GtkStackPage) -> *const c_char;
    pub fn gtk_stack_page_get_use_underline(self_: *mut GtkStackPage) -> gboolean;
    pub fn gtk_stack_page_get_visible(self_: *mut GtkStackPage) -> gboolean;
    pub fn gtk_stack_page_set_icon_name(self_: *mut GtkStackPage, setting: *const c_char);
    pub fn gtk_stack_page_set_name(self_: *mut GtkStackPage, setting: *const c_char);
    pub fn gtk_stack_page_set_needs_attention(self_: *mut GtkStackPage, setting: gboolean);
    pub fn gtk_stack_page_set_title(self_: *mut GtkStackPage, setting: *const c_char);
    pub fn gtk_stack_page_set_use_underline(self_: *mut GtkStackPage, setting: gboolean);
    pub fn gtk_stack_page_set_visible(self_: *mut GtkStackPage, visible: gboolean);

    //=========================================================================
    // GtkStackSidebar
    //=========================================================================
    pub fn gtk_stack_sidebar_get_type() -> GType;
    pub fn gtk_stack_sidebar_new() -> *mut GtkWidget;
    pub fn gtk_stack_sidebar_get_stack(self_: *mut GtkStackSidebar) -> *mut GtkStack;
    pub fn gtk_stack_sidebar_set_stack(self_: *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);

    //=========================================================================
    // 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_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);

    //=========================================================================
    // GtkStringFilter
    //=========================================================================
    pub fn gtk_string_filter_get_type() -> GType;
    pub fn gtk_string_filter_new(expression: *mut GtkExpression) -> *mut GtkStringFilter;
    pub fn gtk_string_filter_get_expression(self_: *mut GtkStringFilter) -> *mut GtkExpression;
    pub fn gtk_string_filter_get_ignore_case(self_: *mut GtkStringFilter) -> gboolean;
    pub fn gtk_string_filter_get_match_mode(
        self_: *mut GtkStringFilter,
    ) -> GtkStringFilterMatchMode;
    pub fn gtk_string_filter_get_search(self_: *mut GtkStringFilter) -> *const c_char;
    pub fn gtk_string_filter_set_expression(
        self_: *mut GtkStringFilter,
        expression: *mut GtkExpression,
    );
    pub fn gtk_string_filter_set_ignore_case(self_: *mut GtkStringFilter, ignore_case: gboolean);
    pub fn gtk_string_filter_set_match_mode(
        self_: *mut GtkStringFilter,
        mode: GtkStringFilterMatchMode,
    );
    pub fn gtk_string_filter_set_search(self_: *mut GtkStringFilter, search: *const c_char);

    //=========================================================================
    // GtkStringList
    //=========================================================================
    pub fn gtk_string_list_get_type() -> GType;
    pub fn gtk_string_list_new(strings: *const *const c_char) -> *mut GtkStringList;
    pub fn gtk_string_list_append(self_: *mut GtkStringList, string: *const c_char);
    pub fn gtk_string_list_get_string(self_: *mut GtkStringList, position: c_uint)
        -> *const c_char;
    pub fn gtk_string_list_remove(self_: *mut GtkStringList, position: c_uint);
    pub fn gtk_string_list_splice(
        self_: *mut GtkStringList,
        position: c_uint,
        n_removals: c_uint,
        additions: *const *const c_char,
    );
    pub fn gtk_string_list_take(self_: *mut GtkStringList, string: *mut c_char);

    //=========================================================================
    // GtkStringObject
    //=========================================================================
    pub fn gtk_string_object_get_type() -> GType;
    pub fn gtk_string_object_new(string: *const c_char) -> *mut GtkStringObject;
    pub fn gtk_string_object_get_string(self_: *mut GtkStringObject) -> *const c_char;

    //=========================================================================
    // GtkStringSorter
    //=========================================================================
    pub fn gtk_string_sorter_get_type() -> GType;
    pub fn gtk_string_sorter_new(expression: *mut GtkExpression) -> *mut GtkStringSorter;
    pub fn gtk_string_sorter_get_expression(self_: *mut GtkStringSorter) -> *mut GtkExpression;
    pub fn gtk_string_sorter_get_ignore_case(self_: *mut GtkStringSorter) -> gboolean;
    pub fn gtk_string_sorter_set_expression(
        self_: *mut GtkStringSorter,
        expression: *mut GtkExpression,
    );
    pub fn gtk_string_sorter_set_ignore_case(self_: *mut GtkStringSorter, ignore_case: gboolean);

    //=========================================================================
    // GtkStyleContext
    //=========================================================================
    pub fn gtk_style_context_get_type() -> GType;
    pub fn gtk_style_context_add_provider_for_display(
        display: *mut gdk::GdkDisplay,
        provider: *mut GtkStyleProvider,
        priority: c_uint,
    );
    pub fn gtk_style_context_remove_provider_for_display(
        display: *mut gdk::GdkDisplay,
        provider: *mut GtkStyleProvider,
    );
    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_get_border(context: *mut GtkStyleContext, border: *mut GtkBorder);
    pub fn gtk_style_context_get_color(context: *mut GtkStyleContext, color: *mut gdk::GdkRGBA);
    pub fn gtk_style_context_get_display(context: *mut GtkStyleContext) -> *mut gdk::GdkDisplay;
    pub fn gtk_style_context_get_margin(context: *mut GtkStyleContext, margin: *mut GtkBorder);
    pub fn gtk_style_context_get_padding(context: *mut GtkStyleContext, padding: *mut GtkBorder);
    pub fn gtk_style_context_get_scale(context: *mut GtkStyleContext) -> c_int;
    pub fn gtk_style_context_get_state(context: *mut GtkStyleContext) -> GtkStateFlags;
    pub fn gtk_style_context_has_class(
        context: *mut GtkStyleContext,
        class_name: *const c_char,
    ) -> gboolean;
    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_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_restore(context: *mut GtkStyleContext);
    pub fn gtk_style_context_save(context: *mut GtkStyleContext);
    pub fn gtk_style_context_set_display(
        context: *mut GtkStyleContext,
        display: *mut gdk::GdkDisplay,
    );
    pub fn gtk_style_context_set_scale(context: *mut GtkStyleContext, scale: c_int);
    pub fn gtk_style_context_set_state(context: *mut GtkStyleContext, flags: GtkStateFlags);
    pub fn gtk_style_context_to_string(
        context: *mut GtkStyleContext,
        flags: GtkStyleContextPrintFlags,
    ) -> *mut c_char;

    //=========================================================================
    // GtkSwitch
    //=========================================================================
    pub fn gtk_switch_get_type() -> GType;
    pub fn gtk_switch_new() -> *mut GtkWidget;
    pub fn gtk_switch_get_active(self_: *mut GtkSwitch) -> gboolean;
    pub fn gtk_switch_get_state(self_: *mut GtkSwitch) -> gboolean;
    pub fn gtk_switch_set_active(self_: *mut GtkSwitch, is_active: gboolean);
    pub fn gtk_switch_set_state(self_: *mut GtkSwitch, state: gboolean);

    //=========================================================================
    // GtkText
    //=========================================================================
    pub fn gtk_text_get_type() -> GType;
    pub fn gtk_text_new() -> *mut GtkWidget;
    pub fn gtk_text_new_with_buffer(buffer: *mut GtkEntryBuffer) -> *mut GtkWidget;
    pub fn gtk_text_get_activates_default(self_: *mut GtkText) -> gboolean;
    pub fn gtk_text_get_attributes(self_: *mut GtkText) -> *mut pango::PangoAttrList;
    pub fn gtk_text_get_buffer(self_: *mut GtkText) -> *mut GtkEntryBuffer;
    pub fn gtk_text_get_enable_emoji_completion(self_: *mut GtkText) -> gboolean;
    pub fn gtk_text_get_extra_menu(self_: *mut GtkText) -> *mut gio::GMenuModel;
    pub fn gtk_text_get_input_hints(self_: *mut GtkText) -> GtkInputHints;
    pub fn gtk_text_get_input_purpose(self_: *mut GtkText) -> GtkInputPurpose;
    pub fn gtk_text_get_invisible_char(self_: *mut GtkText) -> u32;
    pub fn gtk_text_get_max_length(self_: *mut GtkText) -> c_int;
    pub fn gtk_text_get_overwrite_mode(self_: *mut GtkText) -> gboolean;
    pub fn gtk_text_get_placeholder_text(self_: *mut GtkText) -> *const c_char;
    pub fn gtk_text_get_propagate_text_width(self_: *mut GtkText) -> gboolean;
    pub fn gtk_text_get_tabs(self_: *mut GtkText) -> *mut pango::PangoTabArray;
    pub fn gtk_text_get_text_length(self_: *mut GtkText) -> u16;
    pub fn gtk_text_get_truncate_multiline(self_: *mut GtkText) -> gboolean;
    pub fn gtk_text_get_visibility(self_: *mut GtkText) -> gboolean;
    pub fn gtk_text_grab_focus_without_selecting(self_: *mut GtkText) -> gboolean;
    pub fn gtk_text_set_activates_default(self_: *mut GtkText, activates: gboolean);
    pub fn gtk_text_set_attributes(self_: *mut GtkText, attrs: *mut pango::PangoAttrList);
    pub fn gtk_text_set_buffer(self_: *mut GtkText, buffer: *mut GtkEntryBuffer);
    pub fn gtk_text_set_enable_emoji_completion(
        self_: *mut GtkText,
        enable_emoji_completion: gboolean,
    );
    pub fn gtk_text_set_extra_menu(self_: *mut GtkText, model: *mut gio::GMenuModel);
    pub fn gtk_text_set_input_hints(self_: *mut GtkText, hints: GtkInputHints);
    pub fn gtk_text_set_input_purpose(self_: *mut GtkText, purpose: GtkInputPurpose);
    pub fn gtk_text_set_invisible_char(self_: *mut GtkText, ch: u32);
    pub fn gtk_text_set_max_length(self_: *mut GtkText, length: c_int);
    pub fn gtk_text_set_overwrite_mode(self_: *mut GtkText, overwrite: gboolean);
    pub fn gtk_text_set_placeholder_text(self_: *mut GtkText, text: *const c_char);
    pub fn gtk_text_set_propagate_text_width(self_: *mut GtkText, propagate_text_width: gboolean);
    pub fn gtk_text_set_tabs(self_: *mut GtkText, tabs: *mut pango::PangoTabArray);
    pub fn gtk_text_set_truncate_multiline(self_: *mut GtkText, truncate_multiline: gboolean);
    pub fn gtk_text_set_visibility(self_: *mut GtkText, visible: gboolean);
    pub fn gtk_text_unset_invisible_char(self_: *mut GtkText);

    //=========================================================================
    // 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 gdk::GdkClipboard,
    );
    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_irreversible_action(buffer: *mut GtkTextBuffer);
    pub fn gtk_text_buffer_begin_user_action(buffer: *mut GtkTextBuffer);
    pub fn gtk_text_buffer_copy_clipboard(
        buffer: *mut GtkTextBuffer,
        clipboard: *mut gdk::GdkClipboard,
    );
    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 gdk::GdkClipboard,
        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_end_irreversible_action(buffer: *mut GtkTextBuffer);
    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_can_redo(buffer: *mut GtkTextBuffer) -> gboolean;
    pub fn gtk_text_buffer_get_can_undo(buffer: *mut GtkTextBuffer) -> gboolean;
    pub fn gtk_text_buffer_get_char_count(buffer: *mut GtkTextBuffer) -> c_int;
    pub fn gtk_text_buffer_get_enable_undo(buffer: *mut GtkTextBuffer) -> gboolean;
    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,
    ) -> gboolean;
    pub fn gtk_text_buffer_get_iter_at_line_index(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        line_number: c_int,
        byte_index: c_int,
    ) -> gboolean;
    pub fn gtk_text_buffer_get_iter_at_line_offset(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        line_number: c_int,
        char_offset: c_int,
    ) -> gboolean;
    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_max_undo_levels(buffer: *mut GtkTextBuffer) -> c_uint;
    pub fn gtk_text_buffer_get_modified(buffer: *mut GtkTextBuffer) -> gboolean;
    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_selection_content(
        buffer: *mut GtkTextBuffer,
    ) -> *mut gdk::GdkContentProvider;
    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_paintable(
        buffer: *mut GtkTextBuffer,
        iter: *mut GtkTextIter,
        paintable: *mut gdk::GdkPaintable,
    );
    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 gdk::GdkClipboard,
        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_redo(buffer: *mut GtkTextBuffer);
    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 gdk::GdkClipboard,
    );
    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_set_enable_undo(buffer: *mut GtkTextBuffer, enable_undo: gboolean);
    pub fn gtk_text_buffer_set_max_undo_levels(buffer: *mut GtkTextBuffer, max_undo_levels: c_uint);
    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_undo(buffer: *mut GtkTextBuffer);

    //=========================================================================
    // 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,
        out_len: *mut c_uint,
    ) -> *mut *mut GtkWidget;

    //=========================================================================
    // 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_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_overlay(
        text_view: *mut GtkTextView,
        child: *mut GtkWidget,
        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_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_editable(text_view: *mut GtkTextView) -> gboolean;
    pub fn gtk_text_view_get_extra_menu(text_view: *mut GtkTextView) -> *mut gio::GMenuModel;
    pub fn gtk_text_view_get_gutter(
        text_view: *mut GtkTextView,
        win: GtkTextWindowType,
    ) -> *mut GtkWidget;
    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_visible_rect(
        text_view: *mut GtkTextView,
        visible_rect: *mut gdk::GdkRectangle,
    );
    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::GdkEvent,
    ) -> gboolean;
    pub fn gtk_text_view_move_mark_onscreen(
        text_view: *mut GtkTextView,
        mark: *mut GtkTextMark,
    ) -> gboolean;
    pub fn gtk_text_view_move_overlay(
        text_view: *mut GtkTextView,
        child: *mut GtkWidget,
        xpos: c_int,
        ypos: c_int,
    );
    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_remove(text_view: *mut GtkTextView, child: *mut GtkWidget);
    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_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_extra_menu(text_view: *mut GtkTextView, model: *mut gio::GMenuModel);
    pub fn gtk_text_view_set_gutter(
        text_view: *mut GtkTextView,
        win: GtkTextWindowType,
        widget: *mut GtkWidget,
    );
    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,
    );

    //=========================================================================
    // 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_set_active(toggle_button: *mut GtkToggleButton, is_active: gboolean);
    pub fn gtk_toggle_button_set_group(
        toggle_button: *mut GtkToggleButton,
        group: *mut GtkToggleButton,
    );
    pub fn gtk_toggle_button_toggled(toggle_button: *mut GtkToggleButton);

    //=========================================================================
    // GtkTooltip
    //=========================================================================
    pub fn gtk_tooltip_get_type() -> GType;
    pub fn gtk_tooltip_set_custom(tooltip: *mut GtkTooltip, custom_widget: *mut GtkWidget);
    pub fn gtk_tooltip_set_icon(tooltip: *mut GtkTooltip, paintable: *mut gdk::GdkPaintable);
    pub fn gtk_tooltip_set_icon_from_gicon(tooltip: *mut GtkTooltip, gicon: *mut gio::GIcon);
    pub fn gtk_tooltip_set_icon_from_icon_name(tooltip: *mut GtkTooltip, icon_name: *const c_char);
    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);

    //=========================================================================
    // GtkTreeExpander
    //=========================================================================
    pub fn gtk_tree_expander_get_type() -> GType;
    pub fn gtk_tree_expander_new() -> *mut GtkWidget;
    pub fn gtk_tree_expander_get_child(self_: *mut GtkTreeExpander) -> *mut GtkWidget;
    pub fn gtk_tree_expander_get_item(self_: *mut GtkTreeExpander) -> *mut gobject::GObject;
    pub fn gtk_tree_expander_get_list_row(self_: *mut GtkTreeExpander) -> *mut GtkTreeListRow;
    pub fn gtk_tree_expander_set_child(self_: *mut GtkTreeExpander, child: *mut GtkWidget);
    pub fn gtk_tree_expander_set_list_row(
        self_: *mut GtkTreeExpander,
        list_row: *mut GtkTreeListRow,
    );

    //=========================================================================
    // GtkTreeListModel
    //=========================================================================
    pub fn gtk_tree_list_model_get_type() -> GType;
    pub fn gtk_tree_list_model_new(
        root: *mut gio::GListModel,
        passthrough: gboolean,
        autoexpand: gboolean,
        create_func: GtkTreeListModelCreateModelFunc,
        user_data: gpointer,
        user_destroy: glib::GDestroyNotify,
    ) -> *mut GtkTreeListModel;
    pub fn gtk_tree_list_model_get_autoexpand(self_: *mut GtkTreeListModel) -> gboolean;
    pub fn gtk_tree_list_model_get_child_row(
        self_: *mut GtkTreeListModel,
        position: c_uint,
    ) -> *mut GtkTreeListRow;
    pub fn gtk_tree_list_model_get_model(self_: *mut GtkTreeListModel) -> *mut gio::GListModel;
    pub fn gtk_tree_list_model_get_passthrough(self_: *mut GtkTreeListModel) -> gboolean;
    pub fn gtk_tree_list_model_get_row(
        self_: *mut GtkTreeListModel,
        position: c_uint,
    ) -> *mut GtkTreeListRow;
    pub fn gtk_tree_list_model_set_autoexpand(self_: *mut GtkTreeListModel, autoexpand: gboolean);

    //=========================================================================
    // GtkTreeListRow
    //=========================================================================
    pub fn gtk_tree_list_row_get_type() -> GType;
    pub fn gtk_tree_list_row_get_child_row(
        self_: *mut GtkTreeListRow,
        position: c_uint,
    ) -> *mut GtkTreeListRow;
    pub fn gtk_tree_list_row_get_children(self_: *mut GtkTreeListRow) -> *mut gio::GListModel;
    pub fn gtk_tree_list_row_get_depth(self_: *mut GtkTreeListRow) -> c_uint;
    pub fn gtk_tree_list_row_get_expanded(self_: *mut GtkTreeListRow) -> gboolean;
    pub fn gtk_tree_list_row_get_item(self_: *mut GtkTreeListRow) -> *mut gobject::GObject;
    pub fn gtk_tree_list_row_get_parent(self_: *mut GtkTreeListRow) -> *mut GtkTreeListRow;
    pub fn gtk_tree_list_row_get_position(self_: *mut GtkTreeListRow) -> c_uint;
    pub fn gtk_tree_list_row_is_expandable(self_: *mut GtkTreeListRow) -> gboolean;
    pub fn gtk_tree_list_row_set_expanded(self_: *mut GtkTreeListRow, expanded: gboolean);

    //=========================================================================
    // GtkTreeListRowSorter
    //=========================================================================
    pub fn gtk_tree_list_row_sorter_get_type() -> GType;
    pub fn gtk_tree_list_row_sorter_new(sorter: *mut GtkSorter) -> *mut GtkTreeListRowSorter;
    pub fn gtk_tree_list_row_sorter_get_sorter(self_: *mut GtkTreeListRowSorter) -> *mut GtkSorter;
    pub fn gtk_tree_list_row_sorter_set_sorter(
        self_: *mut GtkTreeListRowSorter,
        sorter: *mut GtkSorter,
    );

    //=========================================================================
    // 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 gdk::GdkPaintable;
    pub fn gtk_tree_view_enable_model_drag_dest(
        tree_view: *mut GtkTreeView,
        formats: *mut gdk::GdkContentFormats,
        actions: gdk::GdkDragAction,
    );
    pub fn gtk_tree_view_enable_model_drag_source(
        tree_view: *mut GtkTreeView,
        start_button_mask: gdk::GdkModifierType,
        formats: *mut gdk::GdkContentFormats,
        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_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_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_search_column(tree_view: *mut GtkTreeView) -> c_int;
    pub fn gtk_tree_view_get_search_entry(tree_view: *mut GtkTreeView) -> *mut GtkEditable;
    pub fn gtk_tree_view_get_search_equal_func(
        tree_view: *mut GtkTreeView,
    ) -> GtkTreeViewSearchEqualFunc;
    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: c_int,
        y: c_int,
        keyboard_tip: gboolean,
        model: *mut *mut GtkTreeModel,
        path: *mut *mut GtkTreePath,
        iter: *mut GtkTreeIter,
    ) -> gboolean;
    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_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_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_search_column(tree_view: *mut GtkTreeView, column: c_int);
    pub fn gtk_tree_view_set_search_entry(tree_view: *mut GtkTreeView, entry: *mut GtkEditable);
    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_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_unset_rows_drag_dest(tree_view: *mut GtkTreeView);
    pub fn gtk_tree_view_unset_rows_drag_source(tree_view: *mut GtkTreeView);

    //=========================================================================
    // 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,
        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,
    );

    //=========================================================================
    // GtkVideo
    //=========================================================================
    pub fn gtk_video_get_type() -> GType;
    pub fn gtk_video_new() -> *mut GtkWidget;
    pub fn gtk_video_new_for_file(file: *mut gio::GFile) -> *mut GtkWidget;
    pub fn gtk_video_new_for_filename(filename: *const c_char) -> *mut GtkWidget;
    pub fn gtk_video_new_for_media_stream(stream: *mut GtkMediaStream) -> *mut GtkWidget;
    pub fn gtk_video_new_for_resource(resource_path: *const c_char) -> *mut GtkWidget;
    pub fn gtk_video_get_autoplay(self_: *mut GtkVideo) -> gboolean;
    pub fn gtk_video_get_file(self_: *mut GtkVideo) -> *mut gio::GFile;
    pub fn gtk_video_get_loop(self_: *mut GtkVideo) -> gboolean;
    pub fn gtk_video_get_media_stream(self_: *mut GtkVideo) -> *mut GtkMediaStream;
    pub fn gtk_video_set_autoplay(self_: *mut GtkVideo, autoplay: gboolean);
    pub fn gtk_video_set_file(self_: *mut GtkVideo, file: *mut gio::GFile);
    pub fn gtk_video_set_filename(self_: *mut GtkVideo, filename: *const c_char);
    pub fn gtk_video_set_loop(self_: *mut GtkVideo, loop_: gboolean);
    pub fn gtk_video_set_media_stream(self_: *mut GtkVideo, stream: *mut GtkMediaStream);
    pub fn gtk_video_set_resource(self_: *mut GtkVideo, resource_path: *const c_char);

    //=========================================================================
    // 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_child(viewport: *mut GtkViewport) -> *mut GtkWidget;
    pub fn gtk_viewport_get_scroll_to_focus(viewport: *mut GtkViewport) -> gboolean;
    pub fn gtk_viewport_set_child(viewport: *mut GtkViewport, child: *mut GtkWidget);
    pub fn gtk_viewport_set_scroll_to_focus(viewport: *mut GtkViewport, scroll_to_focus: gboolean);

    //=========================================================================
    // 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_get_default_direction() -> GtkTextDirection;
    pub fn gtk_widget_set_default_direction(dir: GtkTextDirection);
    pub fn gtk_widget_action_set_enabled(
        widget: *mut GtkWidget,
        action_name: *const c_char,
        enabled: gboolean,
    );
    pub fn gtk_widget_activate(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_activate_action(
        widget: *mut GtkWidget,
        name: *const c_char,
        format_string: *const c_char,
        ...
    ) -> gboolean;
    pub fn gtk_widget_activate_action_variant(
        widget: *mut GtkWidget,
        name: *const c_char,
        args: *mut glib::GVariant,
    ) -> gboolean;
    pub fn gtk_widget_activate_default(widget: *mut GtkWidget);
    pub fn gtk_widget_add_controller(widget: *mut GtkWidget, controller: *mut GtkEventController);
    pub fn gtk_widget_add_css_class(widget: *mut GtkWidget, css_class: *const c_char);
    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_allocate(
        widget: *mut GtkWidget,
        width: c_int,
        height: c_int,
        baseline: c_int,
        transform: *mut gsk::GskTransform,
    );
    pub fn gtk_widget_child_focus(widget: *mut GtkWidget, direction: GtkDirectionType) -> gboolean;
    pub fn gtk_widget_compute_bounds(
        widget: *mut GtkWidget,
        target: *mut GtkWidget,
        out_bounds: *mut graphene::graphene_rect_t,
    ) -> gboolean;
    pub fn gtk_widget_compute_expand(
        widget: *mut GtkWidget,
        orientation: GtkOrientation,
    ) -> gboolean;
    pub fn gtk_widget_compute_point(
        widget: *mut GtkWidget,
        target: *mut GtkWidget,
        point: *const graphene::graphene_point_t,
        out_point: *mut graphene::graphene_point_t,
    ) -> gboolean;
    pub fn gtk_widget_compute_transform(
        widget: *mut GtkWidget,
        target: *mut GtkWidget,
        out_transform: *mut graphene::graphene_matrix_t,
    ) -> gboolean;
    pub fn gtk_widget_contains(widget: *mut GtkWidget, x: c_double, y: c_double) -> 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_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_widget_error_bell(widget: *mut GtkWidget);
    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_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_can_focus(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_can_target(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_child_visible(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_clipboard(widget: *mut GtkWidget) -> *mut gdk::GdkClipboard;
    pub fn gtk_widget_get_css_classes(widget: *mut GtkWidget) -> *mut *mut c_char;
    pub fn gtk_widget_get_css_name(self_: *mut GtkWidget) -> *const c_char;
    pub fn gtk_widget_get_cursor(widget: *mut GtkWidget) -> *mut gdk::GdkCursor;
    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_first_child(widget: *mut GtkWidget) -> *mut GtkWidget;
    pub fn gtk_widget_get_focus_child(widget: *mut GtkWidget) -> *mut GtkWidget;
    pub fn gtk_widget_get_focus_on_click(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_get_focusable(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_height(widget: *mut GtkWidget) -> c_int;
    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_last_child(widget: *mut GtkWidget) -> *mut GtkWidget;
    pub fn gtk_widget_get_layout_manager(widget: *mut GtkWidget) -> *mut GtkLayoutManager;
    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_start(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_margin_top(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_get_name(widget: *mut GtkWidget) -> *const c_char;
    pub fn gtk_widget_get_native(widget: *mut GtkWidget) -> *mut GtkNative;
    pub fn gtk_widget_get_next_sibling(widget: *mut GtkWidget) -> *mut GtkWidget;
    pub fn gtk_widget_get_opacity(widget: *mut GtkWidget) -> c_double;
    pub fn gtk_widget_get_overflow(widget: *mut GtkWidget) -> GtkOverflow;
    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_preferred_size(
        widget: *mut GtkWidget,
        minimum_size: *mut GtkRequisition,
        natural_size: *mut GtkRequisition,
    );
    pub fn gtk_widget_get_prev_sibling(widget: *mut GtkWidget) -> *mut GtkWidget;
    pub fn gtk_widget_get_primary_clipboard(widget: *mut GtkWidget) -> *mut gdk::GdkClipboard;
    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_root(widget: *mut GtkWidget) -> *mut GtkRoot;
    pub fn gtk_widget_get_scale_factor(widget: *mut GtkWidget) -> c_int;
    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(widget: *mut GtkWidget, orientation: GtkOrientation) -> c_int;
    pub fn gtk_widget_get_size_request(
        widget: *mut GtkWidget,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gtk_widget_get_state_flags(widget: *mut GtkWidget) -> GtkStateFlags;
    pub fn gtk_widget_get_style_context(widget: *mut GtkWidget) -> *mut GtkStyleContext;
    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) -> *const c_char;
    pub fn gtk_widget_get_tooltip_text(widget: *mut GtkWidget) -> *const c_char;
    pub fn gtk_widget_get_valign(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_width(widget: *mut GtkWidget) -> c_int;
    pub fn gtk_widget_grab_focus(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_has_css_class(widget: *mut GtkWidget, css_class: *const c_char) -> gboolean;
    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_visible_focus(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_hide(widget: *mut GtkWidget);
    pub fn gtk_widget_in_destruction(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_init_template(widget: *mut GtkWidget);
    pub fn gtk_widget_insert_action_group(
        widget: *mut GtkWidget,
        name: *const c_char,
        group: *mut gio::GActionGroup,
    );
    pub fn gtk_widget_insert_after(
        widget: *mut GtkWidget,
        parent: *mut GtkWidget,
        previous_sibling: *mut GtkWidget,
    );
    pub fn gtk_widget_insert_before(
        widget: *mut GtkWidget,
        parent: *mut GtkWidget,
        next_sibling: *mut GtkWidget,
    );
    pub fn gtk_widget_is_ancestor(widget: *mut GtkWidget, ancestor: *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_visible(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_keynav_failed(
        widget: *mut GtkWidget,
        direction: GtkDirectionType,
    ) -> gboolean;
    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_measure(
        widget: *mut GtkWidget,
        orientation: GtkOrientation,
        for_size: c_int,
        minimum: *mut c_int,
        natural: *mut c_int,
        minimum_baseline: *mut c_int,
        natural_baseline: *mut c_int,
    );
    pub fn gtk_widget_mnemonic_activate(
        widget: *mut GtkWidget,
        group_cycling: gboolean,
    ) -> gboolean;
    pub fn gtk_widget_observe_children(widget: *mut GtkWidget) -> *mut gio::GListModel;
    pub fn gtk_widget_observe_controllers(widget: *mut GtkWidget) -> *mut gio::GListModel;
    pub fn gtk_widget_pick(
        widget: *mut GtkWidget,
        x: c_double,
        y: c_double,
        flags: GtkPickFlags,
    ) -> *mut GtkWidget;
    pub fn gtk_widget_queue_allocate(widget: *mut GtkWidget);
    pub fn gtk_widget_queue_draw(widget: *mut GtkWidget);
    pub fn gtk_widget_queue_resize(widget: *mut GtkWidget);
    pub fn gtk_widget_realize(widget: *mut GtkWidget);
    pub fn gtk_widget_remove_controller(
        widget: *mut GtkWidget,
        controller: *mut GtkEventController,
    );
    pub fn gtk_widget_remove_css_class(widget: *mut GtkWidget, css_class: *const c_char);
    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_set_can_focus(widget: *mut GtkWidget, can_focus: gboolean);
    pub fn gtk_widget_set_can_target(widget: *mut GtkWidget, can_target: gboolean);
    pub fn gtk_widget_set_child_visible(widget: *mut GtkWidget, child_visible: gboolean);
    pub fn gtk_widget_set_css_classes(widget: *mut GtkWidget, classes: *mut *const c_char);
    pub fn gtk_widget_set_cursor(widget: *mut GtkWidget, cursor: *mut gdk::GdkCursor);
    pub fn gtk_widget_set_cursor_from_name(widget: *mut GtkWidget, name: *const c_char);
    pub fn gtk_widget_set_direction(widget: *mut GtkWidget, dir: GtkTextDirection);
    pub fn gtk_widget_set_focus_child(widget: *mut GtkWidget, child: *mut GtkWidget);
    pub fn gtk_widget_set_focus_on_click(widget: *mut GtkWidget, focus_on_click: gboolean);
    pub fn gtk_widget_set_focusable(widget: *mut GtkWidget, focusable: 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_hexpand(widget: *mut GtkWidget, expand: gboolean);
    pub fn gtk_widget_set_hexpand_set(widget: *mut GtkWidget, set: gboolean);
    pub fn gtk_widget_set_layout_manager(
        widget: *mut GtkWidget,
        layout_manager: *mut GtkLayoutManager,
    );
    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_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_opacity(widget: *mut GtkWidget, opacity: c_double);
    pub fn gtk_widget_set_overflow(widget: *mut GtkWidget, overflow: GtkOverflow);
    pub fn gtk_widget_set_parent(widget: *mut GtkWidget, parent: *mut GtkWidget);
    pub fn gtk_widget_set_receives_default(widget: *mut GtkWidget, receives_default: 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_flags(
        widget: *mut GtkWidget,
        flags: GtkStateFlags,
        clear: 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_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_should_layout(widget: *mut GtkWidget) -> gboolean;
    pub fn gtk_widget_show(widget: *mut GtkWidget);
    pub fn gtk_widget_size_allocate(
        widget: *mut GtkWidget,
        allocation: *const GtkAllocation,
        baseline: c_int,
    );
    pub fn gtk_widget_snapshot_child(
        widget: *mut GtkWidget,
        child: *mut GtkWidget,
        snapshot: *mut GtkSnapshot,
    );
    pub fn gtk_widget_translate_coordinates(
        src_widget: *mut GtkWidget,
        dest_widget: *mut GtkWidget,
        src_x: c_double,
        src_y: c_double,
        dest_x: *mut c_double,
        dest_y: *mut c_double,
    ) -> 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_unset_state_flags(widget: *mut GtkWidget, flags: GtkStateFlags);

    //=========================================================================
    // GtkWidgetPaintable
    //=========================================================================
    pub fn gtk_widget_paintable_get_type() -> GType;
    pub fn gtk_widget_paintable_new(widget: *mut GtkWidget) -> *mut GtkWidgetPaintable;
    pub fn gtk_widget_paintable_get_widget(self_: *mut GtkWidgetPaintable) -> *mut GtkWidget;
    pub fn gtk_widget_paintable_set_widget(self_: *mut GtkWidgetPaintable, widget: *mut GtkWidget);

    //=========================================================================
    // GtkWindow
    //=========================================================================
    pub fn gtk_window_get_type() -> GType;
    pub fn gtk_window_new() -> *mut GtkWidget;
    pub fn gtk_window_get_default_icon_name() -> *const c_char;
    pub fn gtk_window_get_toplevels() -> *mut gio::GListModel;
    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_name(name: *const c_char);
    pub fn gtk_window_set_interactive_debugging(enable: gboolean);
    pub fn gtk_window_close(window: *mut GtkWindow);
    pub fn gtk_window_destroy(window: *mut GtkWindow);
    pub fn gtk_window_fullscreen(window: *mut GtkWindow);
    pub fn gtk_window_fullscreen_on_monitor(window: *mut GtkWindow, monitor: *mut gdk::GdkMonitor);
    pub fn gtk_window_get_application(window: *mut GtkWindow) -> *mut GtkApplication;
    pub fn gtk_window_get_child(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_visible(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_group(window: *mut GtkWindow) -> *mut GtkWindowGroup;
    #[cfg(any(feature = "v4_2", feature = "dox"))]
    #[cfg_attr(feature = "dox", doc(cfg(feature = "v4_2")))]
    pub fn gtk_window_get_handle_menubar_accel(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_hide_on_close(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_get_icon_name(window: *mut GtkWindow) -> *const c_char;
    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_resizable(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_has_group(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_is_active(window: *mut GtkWindow) -> gboolean;
    pub fn gtk_window_is_fullscreen(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_minimize(window: *mut GtkWindow);
    pub fn gtk_window_present(window: *mut GtkWindow);
    pub fn gtk_window_present_with_time(window: *mut GtkWindow, timestamp: u32);
    pub fn gtk_window_set_application(window: *mut GtkWindow, application: *mut GtkApplication);
    pub fn gtk_window_set_child(window: *mut GtkWindow, child: *mut GtkWidget);
    pub fn gtk_window_set_decorated(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_default_size(window: *mut GtkWindow, width: c_int, height: c_int);
    pub fn gtk_window_set_default_widget(window: *mut GtkWindow, default_widget: *mut GtkWidget);
    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_display(window: *mut GtkWindow, display: *mut gdk::GdkDisplay);
    pub fn gtk_window_set_focus(window: *mut GtkWindow, focus: *mut GtkWidget);
    pub fn gtk_window_set_focus_visible(window: *mut GtkWindow, setting: gboolean);
    #[cfg(any(feature = "v4_2", feature = "dox"))]
    #[cfg_attr(feature = "dox", doc(cfg(feature = "v4_2")))]
    pub fn gtk_window_set_handle_menubar_accel(
        window: *mut GtkWindow,
        handle_menubar_accel: gboolean,
    );
    pub fn gtk_window_set_hide_on_close(window: *mut GtkWindow, setting: gboolean);
    pub fn gtk_window_set_icon_name(window: *mut GtkWindow, name: *const c_char);
    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_resizable(window: *mut GtkWindow, resizable: 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_unfullscreen(window: *mut GtkWindow);
    pub fn gtk_window_unmaximize(window: *mut GtkWindow);
    pub fn gtk_window_unminimize(window: *mut GtkWindow);

    //=========================================================================
    // GtkWindowControls
    //=========================================================================
    pub fn gtk_window_controls_get_type() -> GType;
    pub fn gtk_window_controls_new(side: GtkPackType) -> *mut GtkWidget;
    pub fn gtk_window_controls_get_decoration_layout(
        self_: *mut GtkWindowControls,
    ) -> *const c_char;
    pub fn gtk_window_controls_get_empty(self_: *mut GtkWindowControls) -> gboolean;
    pub fn gtk_window_controls_get_side(self_: *mut GtkWindowControls) -> GtkPackType;
    pub fn gtk_window_controls_set_decoration_layout(
        self_: *mut GtkWindowControls,
        layout: *const c_char,
    );
    pub fn gtk_window_controls_set_side(self_: *mut GtkWindowControls, side: GtkPackType);

    //=========================================================================
    // 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_list_windows(window_group: *mut GtkWindowGroup) -> *mut glib::GList;
    pub fn gtk_window_group_remove_window(
        window_group: *mut GtkWindowGroup,
        window: *mut GtkWindow,
    );

    //=========================================================================
    // GtkWindowHandle
    //=========================================================================
    pub fn gtk_window_handle_get_type() -> GType;
    pub fn gtk_window_handle_new() -> *mut GtkWidget;
    pub fn gtk_window_handle_get_child(self_: *mut GtkWindowHandle) -> *mut GtkWidget;
    pub fn gtk_window_handle_set_child(self_: *mut GtkWindowHandle, child: *mut GtkWidget);

    //=========================================================================
    // GtkAccessible
    //=========================================================================
    pub fn gtk_accessible_get_type() -> GType;
    pub fn gtk_accessible_get_accessible_role(self_: *mut GtkAccessible) -> GtkAccessibleRole;
    pub fn gtk_accessible_reset_property(
        self_: *mut GtkAccessible,
        property: GtkAccessibleProperty,
    );
    pub fn gtk_accessible_reset_relation(
        self_: *mut GtkAccessible,
        relation: GtkAccessibleRelation,
    );
    pub fn gtk_accessible_reset_state(self_: *mut GtkAccessible, state: GtkAccessibleState);
    pub fn gtk_accessible_update_property(
        self_: *mut GtkAccessible,
        first_property: GtkAccessibleProperty,
        ...
    );
    pub fn gtk_accessible_update_property_value(
        self_: *mut GtkAccessible,
        n_properties: c_int,
        properties: *mut GtkAccessibleProperty,
        values: *const gobject::GValue,
    );
    pub fn gtk_accessible_update_relation(
        self_: *mut GtkAccessible,
        first_relation: GtkAccessibleRelation,
        ...
    );
    pub fn gtk_accessible_update_relation_value(
        self_: *mut GtkAccessible,
        n_relations: c_int,
        relations: *mut GtkAccessibleRelation,
        values: *const gobject::GValue,
    );
    pub fn gtk_accessible_update_state(
        self_: *mut GtkAccessible,
        first_state: GtkAccessibleState,
        ...
    );
    pub fn gtk_accessible_update_state_value(
        self_: *mut GtkAccessible,
        n_states: c_int,
        states: *mut GtkAccessibleState,
        values: *const gobject::GValue,
    );

    //=========================================================================
    // 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,
    );

    //=========================================================================
    // 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_get_buildable_id(buildable: *mut GtkBuildable) -> *const c_char;

    //=========================================================================
    // GtkBuilderScope
    //=========================================================================
    pub fn gtk_builder_scope_get_type() -> GType;

    //=========================================================================
    // 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);

    //=========================================================================
    // GtkConstraintTarget
    //=========================================================================
    pub fn gtk_constraint_target_get_type() -> GType;

    //=========================================================================
    // GtkEditable
    //=========================================================================
    pub fn gtk_editable_get_type() -> GType;
    pub fn gtk_editable_delegate_get_property(
        object: *mut gobject::GObject,
        prop_id: c_uint,
        value: *mut gobject::GValue,
        pspec: *mut gobject::GParamSpec,
    ) -> gboolean;
    pub fn gtk_editable_delegate_set_property(
        object: *mut gobject::GObject,
        prop_id: c_uint,
        value: *const gobject::GValue,
        pspec: *mut gobject::GParamSpec,
    ) -> gboolean;
    pub fn gtk_editable_install_properties(
        object_class: *mut gobject::GObjectClass,
        first_prop: c_uint,
    ) -> c_uint;
    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_finish_delegate(editable: *mut GtkEditable);
    pub fn gtk_editable_get_alignment(editable: *mut GtkEditable) -> c_float;
    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_delegate(editable: *mut GtkEditable) -> *mut GtkEditable;
    pub fn gtk_editable_get_editable(editable: *mut GtkEditable) -> gboolean;
    pub fn gtk_editable_get_enable_undo(editable: *mut GtkEditable) -> gboolean;
    pub fn gtk_editable_get_max_width_chars(editable: *mut GtkEditable) -> c_int;
    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_get_text(editable: *mut GtkEditable) -> *const c_char;
    pub fn gtk_editable_get_width_chars(editable: *mut GtkEditable) -> c_int;
    pub fn gtk_editable_init_delegate(editable: *mut GtkEditable);
    pub fn gtk_editable_insert_text(
        editable: *mut GtkEditable,
        text: *const c_char,
        length: c_int,
        position: *mut c_int,
    );
    pub fn gtk_editable_select_region(editable: *mut GtkEditable, start_pos: c_int, end_pos: c_int);
    pub fn gtk_editable_set_alignment(editable: *mut GtkEditable, xalign: c_float);
    pub fn gtk_editable_set_editable(editable: *mut GtkEditable, is_editable: gboolean);
    pub fn gtk_editable_set_enable_undo(editable: *mut GtkEditable, enable_undo: gboolean);
    pub fn gtk_editable_set_max_width_chars(editable: *mut GtkEditable, n_chars: c_int);
    pub fn gtk_editable_set_position(editable: *mut GtkEditable, position: c_int);
    pub fn gtk_editable_set_text(editable: *mut GtkEditable, text: *const c_char);
    pub fn gtk_editable_set_width_chars(editable: *mut GtkEditable, n_chars: 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: *mut gio::GFile,
        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 gio::GFile;
    pub fn gtk_file_chooser_get_current_name(chooser: *mut GtkFileChooser) -> *mut c_char;
    pub fn gtk_file_chooser_get_file(chooser: *mut GtkFileChooser) -> *mut gio::GFile;
    pub fn gtk_file_chooser_get_files(chooser: *mut GtkFileChooser) -> *mut gio::GListModel;
    pub fn gtk_file_chooser_get_filter(chooser: *mut GtkFileChooser) -> *mut GtkFileFilter;
    pub fn gtk_file_chooser_get_filters(chooser: *mut GtkFileChooser) -> *mut gio::GListModel;
    pub fn gtk_file_chooser_get_select_multiple(chooser: *mut GtkFileChooser) -> gboolean;
    pub fn gtk_file_chooser_get_shortcut_folders(
        chooser: *mut GtkFileChooser,
    ) -> *mut gio::GListModel;
    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: *mut gio::GFile,
        error: *mut *mut glib::GError,
    ) -> 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,
        file: *mut gio::GFile,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_file_chooser_set_current_name(chooser: *mut GtkFileChooser, name: *const c_char);
    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_filter(chooser: *mut GtkFileChooser, filter: *mut GtkFileFilter);
    pub fn gtk_file_chooser_set_select_multiple(
        chooser: *mut GtkFileChooser,
        select_multiple: gboolean,
    );

    //=========================================================================
    // 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;
    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;
    pub fn gtk_font_chooser_get_language(fontchooser: *mut GtkFontChooser) -> *mut c_char;
    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,
    );
    pub fn gtk_font_chooser_set_language(fontchooser: *mut GtkFontChooser, language: *const c_char);
    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,
    );

    //=========================================================================
    // GtkNative
    //=========================================================================
    pub fn gtk_native_get_type() -> GType;
    pub fn gtk_native_get_for_surface(surface: *mut gdk::GdkSurface) -> *mut GtkNative;
    pub fn gtk_native_get_renderer(self_: *mut GtkNative) -> *mut gsk::GskRenderer;
    pub fn gtk_native_get_surface(self_: *mut GtkNative) -> *mut gdk::GdkSurface;
    pub fn gtk_native_get_surface_transform(
        self_: *mut GtkNative,
        x: *mut c_double,
        y: *mut c_double,
    );
    pub fn gtk_native_realize(self_: *mut GtkNative);
    pub fn gtk_native_unrealize(self_: *mut GtkNative);

    //=========================================================================
    // 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,
    );

    //=========================================================================
    // GtkRoot
    //=========================================================================
    pub fn gtk_root_get_type() -> GType;
    pub fn gtk_root_get_display(self_: *mut GtkRoot) -> *mut gdk::GdkDisplay;
    pub fn gtk_root_get_focus(self_: *mut GtkRoot) -> *mut GtkWidget;
    pub fn gtk_root_set_focus(self_: *mut GtkRoot, focus: *mut GtkWidget);

    //=========================================================================
    // 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,
    );

    //=========================================================================
    // GtkSelectionModel
    //=========================================================================
    pub fn gtk_selection_model_get_type() -> GType;
    pub fn gtk_selection_model_get_selection(model: *mut GtkSelectionModel) -> *mut GtkBitset;
    pub fn gtk_selection_model_get_selection_in_range(
        model: *mut GtkSelectionModel,
        position: c_uint,
        n_items: c_uint,
    ) -> *mut GtkBitset;
    pub fn gtk_selection_model_is_selected(
        model: *mut GtkSelectionModel,
        position: c_uint,
    ) -> gboolean;
    pub fn gtk_selection_model_select_all(model: *mut GtkSelectionModel) -> gboolean;
    pub fn gtk_selection_model_select_item(
        model: *mut GtkSelectionModel,
        position: c_uint,
        unselect_rest: gboolean,
    ) -> gboolean;
    pub fn gtk_selection_model_select_range(
        model: *mut GtkSelectionModel,
        position: c_uint,
        n_items: c_uint,
        unselect_rest: gboolean,
    ) -> gboolean;
    pub fn gtk_selection_model_selection_changed(
        model: *mut GtkSelectionModel,
        position: c_uint,
        n_items: c_uint,
    );
    pub fn gtk_selection_model_set_selection(
        model: *mut GtkSelectionModel,
        selected: *mut GtkBitset,
        mask: *mut GtkBitset,
    ) -> gboolean;
    pub fn gtk_selection_model_unselect_all(model: *mut GtkSelectionModel) -> gboolean;
    pub fn gtk_selection_model_unselect_item(
        model: *mut GtkSelectionModel,
        position: c_uint,
    ) -> gboolean;
    pub fn gtk_selection_model_unselect_range(
        model: *mut GtkSelectionModel,
        position: c_uint,
        n_items: c_uint,
    ) -> gboolean;

    //=========================================================================
    // GtkShortcutManager
    //=========================================================================
    pub fn gtk_shortcut_manager_get_type() -> GType;

    //=========================================================================
    // GtkStyleProvider
    //=========================================================================
    pub fn gtk_style_provider_get_type() -> GType;

    //=========================================================================
    // 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,
        value: *const gobject::GValue,
    ) -> gboolean;
    pub fn gtk_tree_drag_dest_row_drop_possible(
        drag_dest: *mut GtkTreeDragDest,
        dest_path: *mut GtkTreePath,
        value: *const gobject::GValue,
    ) -> 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,
    ) -> *mut gdk::GdkContentProvider;
    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_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,
    ) -> gboolean;
    pub fn gtk_accelerator_parse_with_keycode(
        accelerator: *const c_char,
        display: *mut gdk::GdkDisplay,
        accelerator_key: *mut c_uint,
        accelerator_codes: *mut *mut c_uint,
        accelerator_mods: *mut gdk::GdkModifierType,
    ) -> gboolean;
    pub fn gtk_accelerator_valid(keyval: c_uint, modifiers: gdk::GdkModifierType) -> gboolean;
    pub fn gtk_check_version(
        required_major: c_uint,
        required_minor: c_uint,
        required_micro: c_uint,
    ) -> *const c_char;
    pub fn gtk_css_parser_error_quark() -> glib::GQuark;
    pub fn gtk_css_parser_warning_quark() -> glib::GQuark;
    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_enumerate_printers(
        func: GtkPrinterFunc,
        data: gpointer,
        destroy: glib::GDestroyNotify,
        wait: gboolean,
    );
    pub fn gtk_get_binary_age() -> c_uint;
    pub fn gtk_get_debug_flags() -> GtkDebugFlags;
    pub fn gtk_get_default_language() -> *mut pango::PangoLanguage;
    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_hsv_to_rgb(
        h: c_float,
        s: c_float,
        v: c_float,
        r: *mut c_float,
        g: *mut c_float,
        b: *mut c_float,
    );
    pub fn gtk_init();
    pub fn gtk_init_check() -> gboolean;
    pub fn gtk_is_initialized() -> gboolean;
    pub fn gtk_param_spec_expression(
        name: *const c_char,
        nick: *const c_char,
        blurb: *const c_char,
        flags: gobject::GParamFlags,
    ) -> *mut gobject::GParamSpec;
    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_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_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_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_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,
        texture: *mut gdk::GdkTexture,
        x: c_double,
        y: c_double,
    );
    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_rgb_to_hsv(
        r: c_float,
        g: c_float,
        b: c_float,
        h: *mut c_float,
        s: *mut c_float,
        v: *mut c_float,
    );
    pub fn gtk_set_debug_flags(flags: GtkDebugFlags);
    pub fn gtk_show_about_dialog(parent: *mut GtkWindow, first_property_name: *const c_char, ...);
    pub fn gtk_show_uri(parent: *mut GtkWindow, uri: *const c_char, timestamp: u32);
    pub fn gtk_show_uri_full(
        parent: *mut GtkWindow,
        uri: *const c_char,
        timestamp: u32,
        cancellable: *mut gio::GCancellable,
        callback: gio::GAsyncReadyCallback,
        user_data: gpointer,
    );
    pub fn gtk_show_uri_full_finish(
        parent: *mut GtkWindow,
        result: *mut gio::GAsyncResult,
        error: *mut *mut glib::GError,
    ) -> gboolean;
    pub fn gtk_test_accessible_assertion_message_role(
        domain: *const c_char,
        file: *const c_char,
        line: c_int,
        func: *const c_char,
        expr: *const c_char,
        accessible: *mut GtkAccessible,
        expected_role: GtkAccessibleRole,
        actual_role: GtkAccessibleRole,
    );
    pub fn gtk_test_accessible_check_property(
        accessible: *mut GtkAccessible,
        property: GtkAccessibleProperty,
        ...
    ) -> *mut c_char;
    pub fn gtk_test_accessible_check_relation(
        accessible: *mut GtkAccessible,
        relation: GtkAccessibleRelation,
        ...
    ) -> *mut c_char;
    pub fn gtk_test_accessible_check_state(
        accessible: *mut GtkAccessible,
        state: GtkAccessibleState,
        ...
    ) -> *mut c_char;
    pub fn gtk_test_accessible_has_property(
        accessible: *mut GtkAccessible,
        property: GtkAccessibleProperty,
    ) -> gboolean;
    pub fn gtk_test_accessible_has_relation(
        accessible: *mut GtkAccessible,
        relation: GtkAccessibleRelation,
    ) -> gboolean;
    pub fn gtk_test_accessible_has_role(
        accessible: *mut GtkAccessible,
        role: GtkAccessibleRole,
    ) -> gboolean;
    pub fn gtk_test_accessible_has_state(
        accessible: *mut GtkAccessible,
        state: GtkAccessibleState,
    ) -> gboolean;
    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_widget_wait_for_draw(widget: *mut GtkWidget);
    pub fn gtk_tree_create_row_drag_content(
        tree_model: *mut GtkTreeModel,
        path: *mut GtkTreePath,
    ) -> *mut gdk::GdkContentProvider;
    pub fn gtk_tree_get_row_drag_data(
        value: *const gobject::GValue,
        tree_model: *mut *mut GtkTreeModel,
        path: *mut *mut GtkTreePath,
    ) -> gboolean;
    pub fn gtk_value_dup_expression(value: *const gobject::GValue) -> *mut GtkExpression;
    pub fn gtk_value_get_expression(value: *const gobject::GValue) -> *mut GtkExpression;
    pub fn gtk_value_set_expression(value: *mut gobject::GValue, expression: *mut GtkExpression);
    pub fn gtk_value_take_expression(value: *mut gobject::GValue, expression: *mut GtkExpression);

}
