Spec-Zone.ru › GTK 3.20

GtkWidget

GtkWidget — Базовый класс для всех виджетов

Функции

void (GtkCallback) ()
GtkWidget * gtk_widget_new ()
void gtk_widget_destroy ()
gboolean gtk_widget_in_destruction ()
void gtk_widget_destroyed ()
void gtk_widget_unparent ()
void gtk_widget_show ()
void gtk_widget_show_now ()
void gtk_widget_hide ()
void gtk_widget_show_all ()
void gtk_widget_map ()
void gtk_widget_unmap ()
void gtk_widget_realize ()
void gtk_widget_unrealize ()
void gtk_widget_draw ()
void gtk_widget_queue_draw ()
void gtk_widget_queue_resize ()
void gtk_widget_queue_resize_no_redraw ()
void gtk_widget_queue_allocate ()
GdkFrameClock * gtk_widget_get_frame_clock ()
gint gtk_widget_get_scale_factor ()
gboolean (*GtkTickCallback) ()
guint gtk_widget_add_tick_callback ()
void gtk_widget_remove_tick_callback ()
void gtk_widget_size_request ()
void gtk_widget_get_child_requisition ()
void gtk_widget_size_allocate ()
void gtk_widget_size_allocate_with_baseline ()
void gtk_widget_add_accelerator ()
gboolean gtk_widget_remove_accelerator ()
void gtk_widget_set_accel_path ()
GList * gtk_widget_list_accel_closures ()
gboolean gtk_widget_can_activate_accel ()
gboolean gtk_widget_event ()
gboolean gtk_widget_activate ()
void gtk_widget_reparent ()
gboolean gtk_widget_intersect ()
gboolean gtk_widget_is_focus ()
void gtk_widget_grab_focus ()
void gtk_widget_grab_default ()
void gtk_widget_set_name ()
const gchar * gtk_widget_get_name ()
void gtk_widget_set_state ()
void gtk_widget_set_sensitive ()
void gtk_widget_set_parent ()
void gtk_widget_set_parent_window ()
GdkWindow * gtk_widget_get_parent_window ()
void gtk_widget_set_events ()
gint gtk_widget_get_events ()
void gtk_widget_add_events ()
void gtk_widget_set_device_events ()
GdkEventMask gtk_widget_get_device_events ()
void gtk_widget_add_device_events ()
void gtk_widget_set_device_enabled ()
gboolean gtk_widget_get_device_enabled ()
GtkWidget * gtk_widget_get_toplevel ()
GtkWidget * gtk_widget_get_ancestor ()
GdkVisual * gtk_widget_get_visual ()
void gtk_widget_set_visual ()
void gtk_widget_get_pointer ()
gboolean gtk_widget_is_ancestor ()
gboolean gtk_widget_translate_coordinates ()
gboolean gtk_widget_hide_on_delete ()
void gtk_widget_set_style ()
void gtk_widget_ensure_style ()
GtkStyle * gtk_widget_get_style ()
void gtk_widget_reset_rc_styles ()
GtkStyle * gtk_widget_get_default_style ()
void gtk_widget_set_direction ()
GtkTextDirection gtk_widget_get_direction ()
void gtk_widget_set_default_direction ()
GtkTextDirection gtk_widget_get_default_direction ()
void gtk_widget_shape_combine_region ()
void gtk_widget_input_shape_combine_region ()
void gtk_widget_path ()
void gtk_widget_class_path ()
gchar * gtk_widget_get_composite_name ()
void gtk_widget_override_background_color ()
void gtk_widget_override_color ()
void gtk_widget_override_font ()
void gtk_widget_override_symbolic_color ()
void gtk_widget_override_cursor ()
void gtk_widget_modify_style ()
GtkRcStyle * gtk_widget_get_modifier_style ()
void gtk_widget_modify_fg ()
void gtk_widget_modify_bg ()
void gtk_widget_modify_text ()
void gtk_widget_modify_base ()
void gtk_widget_modify_font ()
void gtk_widget_modify_cursor ()
PangoContext * gtk_widget_create_pango_context ()
PangoContext * gtk_widget_get_pango_context ()
void gtk_widget_set_font_options ()
const cairo_font_options_t * gtk_widget_get_font_options ()
void gtk_widget_set_font_map ()
PangoFontMap * gtk_widget_get_font_map ()
PangoLayout * gtk_widget_create_pango_layout ()
GdkPixbuf * gtk_widget_render_icon ()
GdkPixbuf * gtk_widget_render_icon_pixbuf ()
void gtk_widget_pop_composite_child ()
void gtk_widget_push_composite_child ()
void gtk_widget_queue_draw_area ()
void gtk_widget_queue_draw_region ()
void gtk_widget_set_app_paintable ()
void gtk_widget_set_double_buffered ()
void gtk_widget_set_redraw_on_allocate ()
void gtk_widget_set_composite_name ()
gboolean gtk_widget_mnemonic_activate ()
void gtk_widget_class_install_style_property ()
void gtk_widget_class_install_style_property_parser ()
GParamSpec * gtk_widget_class_find_style_property ()
GParamSpec ** gtk_widget_class_list_style_properties ()
cairo_region_t * gtk_widget_region_intersect ()
gint gtk_widget_send_expose ()
gboolean gtk_widget_send_focus_change ()
void gtk_widget_style_get ()
void gtk_widget_style_get_property ()
void gtk_widget_style_get_valist ()
void gtk_widget_style_attach ()
void gtk_widget_class_set_accessible_type ()
void gtk_widget_class_set_accessible_role ()
AtkObject * gtk_widget_get_accessible ()
gboolean gtk_widget_child_focus ()
void gtk_widget_child_notify ()
void gtk_widget_freeze_child_notify ()
gboolean gtk_widget_get_child_visible ()
GtkWidget * gtk_widget_get_parent ()
GtkSettings * gtk_widget_get_settings ()
GtkClipboard * gtk_widget_get_clipboard ()
GdkDisplay * gtk_widget_get_display ()
GdkWindow * gtk_widget_get_root_window ()
GdkScreen * gtk_widget_get_screen ()
gboolean gtk_widget_has_screen ()
void gtk_widget_get_size_request ()
void gtk_widget_set_child_visible ()
void gtk_widget_set_size_request ()
void gtk_widget_thaw_child_notify ()
void gtk_widget_set_no_show_all ()
gboolean gtk_widget_get_no_show_all ()
GList * gtk_widget_list_mnemonic_labels ()
void gtk_widget_add_mnemonic_label ()
void gtk_widget_remove_mnemonic_label ()
gboolean gtk_widget_is_composited ()
void gtk_widget_error_bell ()
gboolean gtk_widget_keynav_failed ()
gchar * gtk_widget_get_tooltip_markup ()
void gtk_widget_set_tooltip_markup ()
gchar * gtk_widget_get_tooltip_text ()
void gtk_widget_set_tooltip_text ()
GtkWindow * gtk_widget_get_tooltip_window ()
void gtk_widget_set_tooltip_window ()
gboolean gtk_widget_get_has_tooltip ()
void gtk_widget_set_has_tooltip ()
void gtk_widget_trigger_tooltip_query ()
GdkWindow * gtk_widget_get_window ()
void gtk_widget_register_window ()
void gtk_widget_unregister_window ()
gboolean gtk_cairo_should_draw_window ()
void gtk_cairo_transform_to_window ()
int gtk_widget_get_allocated_width ()
int gtk_widget_get_allocated_height ()
void gtk_widget_get_allocation ()
void gtk_widget_set_allocation ()
int gtk_widget_get_allocated_baseline ()
void gtk_widget_get_allocated_size ()
void gtk_widget_get_clip ()
void gtk_widget_set_clip ()
gboolean gtk_widget_get_app_paintable ()
gboolean gtk_widget_get_can_default ()
void gtk_widget_set_can_default ()
gboolean gtk_widget_get_can_focus ()
void gtk_widget_set_can_focus ()
gboolean gtk_widget_get_focus_on_click ()
void gtk_widget_set_focus_on_click ()
gboolean gtk_widget_get_double_buffered ()
gboolean gtk_widget_get_has_window ()
void gtk_widget_set_has_window ()
gboolean gtk_widget_get_sensitive ()
gboolean gtk_widget_is_sensitive ()
GtkStateType gtk_widget_get_state ()
gboolean gtk_widget_get_visible ()
gboolean gtk_widget_is_visible ()
void gtk_widget_set_visible ()
void gtk_widget_set_state_flags ()
void gtk_widget_unset_state_flags ()
GtkStateFlags gtk_widget_get_state_flags ()
gboolean gtk_widget_has_default ()
gboolean gtk_widget_has_focus ()
gboolean gtk_widget_has_visible_focus ()
gboolean gtk_widget_has_grab ()
gboolean gtk_widget_has_rc_style ()
gboolean gtk_widget_is_drawable ()
gboolean gtk_widget_is_toplevel ()
void gtk_widget_set_window ()
void gtk_widget_set_receives_default ()
gboolean gtk_widget_get_receives_default ()
void gtk_widget_set_support_multidevice ()
gboolean gtk_widget_get_support_multidevice ()
void gtk_widget_set_realized ()
gboolean gtk_widget_get_realized ()
void gtk_widget_set_mapped ()
gboolean gtk_widget_get_mapped ()
void gtk_widget_get_requisition ()
gboolean gtk_widget_device_is_shadowed ()
GdkModifierType gtk_widget_get_modifier_mask ()
void gtk_widget_insert_action_group ()
double gtk_widget_get_opacity ()
void gtk_widget_set_opacity ()
const gchar ** gtk_widget_list_action_prefixes ()
GActionGroup * gtk_widget_get_action_group ()
GtkWidgetPath * gtk_widget_get_path ()
GtkStyleContext * gtk_widget_get_style_context ()
void gtk_widget_reset_style ()
const char * gtk_widget_class_get_css_name ()
void gtk_widget_class_set_css_name ()
GtkRequisition * gtk_requisition_new ()
GtkRequisition * gtk_requisition_copy ()
void gtk_requisition_free ()
void gtk_widget_get_preferred_height ()
void gtk_widget_get_preferred_width ()
void gtk_widget_get_preferred_height_for_width ()
void gtk_widget_get_preferred_width_for_height ()
void gtk_widget_get_preferred_height_and_baseline_for_width ()
GtkSizeRequestMode gtk_widget_get_request_mode ()
void gtk_widget_get_preferred_size ()
gint gtk_distribute_natural_allocation ()
GtkAlign gtk_widget_get_halign ()
void gtk_widget_set_halign ()
GtkAlign gtk_widget_get_valign ()
GtkAlign gtk_widget_get_valign_with_baseline ()
void gtk_widget_set_valign ()
gint gtk_widget_get_margin_left ()
void gtk_widget_set_margin_left ()
gint gtk_widget_get_margin_right ()
void gtk_widget_set_margin_right ()
gint gtk_widget_get_margin_start ()
void gtk_widget_set_margin_start ()
gint gtk_widget_get_margin_end ()
void gtk_widget_set_margin_end ()
gint gtk_widget_get_margin_top ()
void gtk_widget_set_margin_top ()
gint gtk_widget_get_margin_bottom ()
void gtk_widget_set_margin_bottom ()
gboolean gtk_widget_get_hexpand ()
void gtk_widget_set_hexpand ()
gboolean gtk_widget_get_hexpand_set ()
void gtk_widget_set_hexpand_set ()
gboolean gtk_widget_get_vexpand ()
void gtk_widget_set_vexpand ()
gboolean gtk_widget_get_vexpand_set ()
void gtk_widget_set_vexpand_set ()
void gtk_widget_queue_compute_expand ()
gboolean gtk_widget_compute_expand ()
void gtk_widget_init_template ()
void gtk_widget_class_set_template ()
void gtk_widget_class_set_template_from_resource ()
GObject * gtk_widget_get_template_child ()
#define gtk_widget_class_bind_template_child()
#define gtk_widget_class_bind_template_child_internal()
#define gtk_widget_class_bind_template_child_private()
#define gtk_widget_class_bind_template_child_internal_private()
void gtk_widget_class_bind_template_child_full ()
#define gtk_widget_class_bind_template_callback()
void gtk_widget_class_bind_template_callback_full ()
void gtk_widget_class_set_connect_func ()

Свойства

gboolean app-paintable Чтение / Запись
gboolean can-default Чтение / Запись
gboolean can-focus Чтение / Запись
gboolean composite-child Чтение
gboolean double-buffered Чтение / Запись
GdkEventMask events Чтение / Запись
gboolean expand Чтение / Запись
gboolean focus-on-click Чтение / Запись
GtkAlign halign Чтение / Запись
gboolean has-default Чтение / Запись
gboolean has-focus Чтение / Запись
gboolean has-tooltip Чтение / Запись
gint height-request Чтение / Запись
gboolean hexpand Чтение / Запись
gboolean hexpand-set Чтение / Запись
gboolean is-focus Чтение / Запись
gint margin Чтение / Запись
gint margin-bottom Чтение / Запись
gint margin-end Чтение / Запись
gint margin-left Чтение / Запись
gint margin-right Чтение / Запись
gint margin-start Чтение / Запись
gint margin-top Чтение / Запись
gchar * name Чтение / Запись
gboolean no-show-all Чтение / Запись
gdouble opacity Чтение / Запись
GtkContainer * parent Чтение / Запись
gboolean receives-default Чтение / Запись
gint scale-factor Чтение
gboolean sensitive Чтение / Запись
GtkStyle * style Чтение / Запись
gchar * tooltip-markup Чтение / Запись
gchar * tooltip-text Чтение / Запись
GtkAlign valign Чтение / Запись
gboolean vexpand Чтение / Запись
gboolean vexpand-set Чтение / Запись
gboolean visible Чтение / Запись
gint width-request Чтение / Запись
GdkWindow * window Чтение

Свойства стиля

gfloat cursor-aspect-ratio Чтение
GdkColor * cursor-color Чтение
gchar * focus-line-pattern Чтение
gint focus-line-width Чтение
gint focus-padding Чтение
gboolean interior-focus Чтение
GdkColor * link-color Чтение
gint scroll-arrow-hlength Чтение
gint scroll-arrow-vlength Чтение
GdkColor * secondary-cursor-color Чтение
gint separator-height Чтение
gint separator-width Чтение
gint text-handle-height Чтение
gint text-handle-width Чтение
GdkColor * visited-link-color Чтение
gboolean wide-separators Чтение
gboolean window-dragging Чтение

Сигналы

void accel-closures-changed
gboolean button-press-event Выполнить последним
gboolean button-release-event Выполнить последним
gboolean can-activate-accel Выполнить последним
void child-notify Без хуков
void composited-changed Действие
gboolean configure-event Выполнить последним
gboolean damage-event Выполнить последним
gboolean delete-event Выполнить последним
void destroy Без хуков
gboolean destroy-event Выполнить последним
void direction-changed Выполнить первым
void drag-begin Выполнить последним
void drag-data-delete Выполнить последним
void drag-data-get Выполнить последним
void drag-data-received Выполнить последним
gboolean drag-drop Выполнить последним
void drag-end Выполнить последним
gboolean drag-failed Выполнить последним
void drag-leave Выполнить последним
gboolean drag-motion Выполнить последним
gboolean draw Выполнить последним
gboolean enter-notify-event Выполнить последним
gboolean event Выполнить последним
void event-after
gboolean focus Выполнить последним
gboolean focus-in-event Выполнить последним
gboolean focus-out-event Выполнить последним
gboolean grab-broken-event Выполнить последним
void grab-focus Действие
void grab-notify Выполнить сначала
void hide Выполнить сначала
void hierarchy-changed Выполнить последним
gboolean key-press-event Выполнить последним
gboolean key-release-event Выполнить последним
gboolean keynav-failed Выполнить последним
gboolean leave-notify-event Выполнить последним
void map Выполнить сначала
gboolean map-event Выполнить последним
gboolean mnemonic-activate Выполнить последним
gboolean motion-notify-event Выполнить последним
void move-focus Действие
void parent-set Выполнить сначала
gboolean popup-menu Действие
gboolean property-notify-event Выполнить последним
gboolean proximity-in-event Выполнить последним
gboolean proximity-out-event Выполнить последним
gboolean query-tooltip Выполнить последним
void realize Выполнить сначала
void screen-changed Выполнить последним
gboolean scroll-event Выполнить последним
gboolean selection-clear-event Выполнить последним
void selection-get Выполнить последним
gboolean selection-notify-event Выполнить последним
void selection-received Выполнить последним
gboolean selection-request-event Выполнить последним
void show Выполнить сначала
gboolean show-help Действие
void size-allocate Выполнить первым
void state-changed Выполнить первым
void state-flags-changed Выполнить первым
void style-set Выполнить первым
void style-updated Выполнить первым
gboolean touch-event Выполнить последним
void unmap Выполнить первым
gboolean unmap-event Выполнить последним
void unrealize Выполнить последним
gboolean visibility-notify-event Выполнить последним
gboolean window-state-event Выполнить последним

Типы и значения

GtkWidget
struct GtkWidgetClass
GtkRequisition
typedef GtkAllocation
перечисление GtkWidgetHelpType
перечисление GtkTextDirection
перечисление GtkStateType
перечисление GtkSizeRequestMode
struct GtkRequestedSize
перечисление GtkAlign

Иерархия объектов

    GBoxed
    ╰── GtkRequisition
    GObject
    ╰── GInitiallyUnowned
        ╰── GtkWidget
            ├── GtkContainer
            ├── GtkMisc
            ├── GtkCalendar
            ├── GtkCellView
            ├── GtkDrawingArea
            ├── GtkEntry
            ├── GtkGLArea
            ├── GtkRange
            ├── GtkSeparator
            ├── GtkHSV
            ├── GtkInvisible
            ├── GtkProgressBar
            ├── GtkSpinner
            ├── GtkSwitch
            ╰── GtkLevelBar

Известные производные интерфейсы

GtkWidget требуется для GtkActionable, GtkAppChooser, GtkCellEditable и GtkToolShell.

Реализованные интерфейсы

GtkWidget реализует AtkImplementorIface и GtkBuildable.

Файлы

#include <gtk/gtk.h>

Описание

GtkWidget — базовый класс, от которого наследуются все виджеты в GTK+. Он управляет жизненным циклом виджета, его состояниями и стилем.

Управление геометрией по высоте для ширины

GTK+ использует систему управления геометрией по высоте для ширины (и ширине для высоты). Высота для ширины означает, что виджет может изменять необходимый вертикальный размер в зависимости от предоставленного горизонтального размера (и аналогично для ширины для высоты). Наиболее распространённым примером является метка, которая перестраивается, чтобы заполнить доступную ширину, переходит на меньшее количество строк и, следовательно, требует меньшей высоты.

Управление геометрией по высоте для ширины в GTK+ реализовано с помощью пяти виртуальных методов:

  • GtkWidgetClass.get_request_mode()

  • GtkWidgetClass.get_preferred_width()

  • GtkWidgetClass.get_preferred_height()

  • GtkWidgetClass.get_preferred_height_for_width()

  • GtkWidgetClass.get_preferred_width_for_height()

  • GtkWidgetClass.get_preferred_height_and_baseline_for_width()

При реализации управления геометрией по высоте для ширины и при использовании её в контейнерах следует учитывать некоторые важные моменты.

Система управления геометрией будет запрашивать иерархию виджетов только в одном направлении за раз. Когда виджеты первоначально запрашиваются для получения минимальных размеров, это обычно делается в двух начальных проходах в режиме GtkSizeRequestMode, выбранном верхним уровнем.

Например, при запросе в обычном режиме GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH: сначала вычисляется минимальная и естественная ширина каждого виджета в интерфейсе с помощью gtk_widget_get_preferred_width(). Поскольку предпочтительные ширины для каждого контейнера зависят от предпочтительных ширин их дочерних элементов, эта информация распространяется вверх по иерархии, и, в конечном итоге, определяется минимальная и естественная ширина для всего верхнего уровня. Далее, верхний уровень будет использовать минимальную ширину для запроса минимальной высоты, контекстуальной к этой ширине, с помощью gtk_widget_get_preferred_height_for_width(), что также будет высокорекурсивной операцией. Минимальная высота для минимальной ширины обычно используется для установки ограничения минимального размера на верхнем уровне (если явно не используется gtk_window_set_geometry_hints()).

После того, как окно верхнего уровня первоначально запросило свой размер по обеим осям, оно может приступить к выделению себе разумного размера (или размера, предварительно заданного с помощью gtk_window_set_default_size()). Во время рекурсивного процесса распределения важно отметить, что циклы запросов будут выполняться рекурсивно, пока контейнерные виджеты распределяют своих дочерние элементы. Каждый контейнерный виджет, получив размер, в первую очередь распределит пространство по одной оси среди своих дочерних элементов, а затем запросит высоту каждого дочернего элемента для целевой выделенной ширины или ширину для выделенной высоты, в зависимости от случая. Таким образом, GtkWidget обычно запрашивает свой размер несколько раз, прежде чем ему будет фактически выделен размер. Размер, который в конечном итоге будет выделен виджету, конечно же, может отличаться от запрошенного размера. По этой причине GtkWidget кэширует небольшое количество результатов, чтобы избежать повторного запроса тех же размеров в одном цикле распределения.

Дополнительную информацию о том, как контейнерные виджеты выполняют распределения по высоте для ширины, см. в разделе по управлению геометрией GtkContainer.

Если виджет перемещает содержимое, чтобы разумно использовать выделенный размер, то он должен поддерживать запрос в обоих режимах GtkSizeRequestModes, даже если виджет в вопросе обменивается размерами только в одном направлении.

Например, GtkLabel, который выполняет перенос слов по высоте для ширины, не ожидает вызова GtkWidgetClass.get_preferred_height(), поскольку этот вызов специфичен для запросов по ширине для высоты. В этом случае метка должна вернуть высоту, необходимую для своей минимально возможной ширины. Следуя этому правилу, любой виджет, обрабатывающий запросы по высоте для ширины или ширине для высоты, всегда будет выделять достаточно места для размещения собственного содержимого.

Вот несколько примеров того, как виджет GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH обычно обрабатывает запросы по ширине для высоты, для GtkWidgetClass.get_preferred_height() он будет:

А в GtkWidgetClass.get_preferred_width_for_height() он просто вернёт минимальную и естественную ширину:

Зачастую виджету необходимо получить свой собственный запрос во время запроса размера или распределения. Например, при вычислении высоты ему может потребоваться также вычислить ширину. Или при принятии решения о том, как использовать выделение, виджету может потребоваться узнать свой естественный размер. В этих случаях виджет должен быть внимателен при прямом вызове своих виртуальных методов, как это:

Использовать обертки функций, таких как gtk_widget_get_preferred_width() внутри собственной реализации запроса размера не сработает. Они возвращают запрос, скорректированный GtkSizeGroup и виртуальным методом GtkWidgetClass.adjust_size_request(). Если виджет использовал обертки внутри своих виртуальных методов, то корректировки (такие как отступы виджета) применялись бы дважды. GTK+ поэтому не допускает этого и выведет предупреждение, если вы попытаетесь это сделать.

Конечно, если вы получаете запрос размера для другого виджета, например, дочернего элемента контейнера, вы должны использовать API оберток. В противном случае вы не учтёте отступы виджета, GtkSizeGroup и т.д.

Начиная с версии 3.10 GTK+ также поддерживает вертикальное выравнивание по отметке базовой линии виджетов. Это означает, что виджеты позиционируются так, что типографические отметки базовых линий виджетов в одной строке выровнены. Это происходит, если виджет поддерживает отметки базовых линий, имеет вертикальное выравнивание GTK_ALIGN_BASELINE и находится внутри контейнера, который поддерживает отметки базовых линий и имеет естественный «ряд», к которому он выравнивается по отметке базовой линии, или отметку базовой линии, присвоенную ему родительским контейнером.

Поддержка выравнивания по отметке базовой линии для виджета выполняется виртуальной функцией GtkWidgetClass.get_preferred_height_and_baseline_for_width(). Она позволяет сообщать отметку базовой линии вместе с минимальной и естественной высотой. Если отметки базовой линии нет, вы можете вернуть -1, чтобы указать это. По умолчанию эта виртуальная функция обращается к GtkWidgetClass.get_preferred_height() и GtkWidgetClass.get_preferred_height_for_width(), поэтому если отметки базовых линий не поддерживаются, её реализовывать не обязательно.

Если виджет выровнен по отметке базовой линии, ему будет выделено всё пространство в родителе, как будто он был GTK_ALIGN_FILL, но выбранную отметку базовой линии можно найти с помощью gtk_widget_get_allocated_baseline(). Если у неё есть значение, отличное от -1, вам необходимо выровнять виджет таким образом, чтобы отметка базовой линии появлялась в нужном месте.

Свойства стиля

GtkWidget вводит «свойства стиля» — это, по сути, свойства объекта, которые хранятся не в объекте, а в объекте стиля, связанном с виджетом. Свойства стиля устанавливаются в файлах ресурсов. Этот механизм используется для настройки таких вещей, как положение стрелок полосы прокрутки с помощью темы, давая авторам тем больше контроля над внешним видом приложений без необходимости написания движка темы на C.

Используйте gtk_widget_class_install_style_property() для установки свойств стиля для класса виджета, gtk_widget_class_find_style_property() или gtk_widget_class_list_style_properties() для получения информации о существующих свойствах стиля и gtk_widget_style_get_property(), gtk_widget_style_get() или gtk_widget_style_get_valist() для получения значения свойства стиля.

GtkWidget как GtkBuildable

Реализация GtkWidget интерфейса GtkBuildable поддерживает пользовательский элемент <accelerator>, у которого есть атрибуты с названиями «key», «modifiers» и «signal» и который позволяет указывать активаторы.

Пример фрагмента определения пользовательского интерфейса, задающего активатор:

В дополнение к активаторам, GtkWidget также поддерживает пользовательский элемент <accessible>, который поддерживает действия и отношения. Свойства реализации доступности объекта можно установить, обратившись к внутреннему дочернему элементу «accessible» GtkWidget.

Пример фрагмента определения пользовательского интерфейса, задающего доступность:

Наконец, GtkWidget позволяет связывать с виджетами информацию о стиле, такую как классы стиля, с помощью пользовательского элемента <style>:

Создание составных виджетов из шаблона XML

GtkWidget предоставляет средства для автоматизации процесса создания составных виджетов с использованием языка описания интерфейса GtkBuilder.

Для создания составных виджетов с помощью XML GtkBuilder необходимо связать описание интерфейса с классом виджета во время инициализации класса с помощью gtk_widget_class_set_template().

Семантика описания интерфейса, ожидаемая в описаниях составных шаблонов, немного отличается от обычного XML GtkBuilder.

В отличие от обычных описаний интерфейса, gtk_widget_class_set_template() будет ожидать тег <template> как непосредственного потомка тега <interface> верхнего уровня. Тег <template> должен содержать атрибут «class», значение которого должно быть именем типа виджета. Дополнительно можно указать атрибут «parent» для указания непосредственного родительского типа типа виджета. Этот атрибут игнорируется GtkBuilder, но необходим Glade для интроспекции свойств и внутренних потомков для данного типа, когда фактический тип не существует.

XML, содержащийся внутри тега <template>, ведет себя так, как будто он добавлен в тег <object>, определяющий widget. Вы можете задавать свойства widget, вставляя теги <property> в тег <template>, а также добавлять теги <child> для добавления потомков и расширения widget обычным образом, как и с тегами <object>.

Кроме того, теги <object> также могут быть добавлены перед и после начального тега <template> обычным способом, что позволяет определить вспомогательные объекты, которые могут быть ссылкой на другие виджеты, объявленные как потомки тега <template>.

Пример определения шаблона GtkBuilder:

Как правило, вы размещаете фрагмент шаблона в файле, который включен в ваш проект, используя GResource. Для загрузки шаблона необходимо вызвать gtk_widget_class_set_template_from_resource() из инициализации класса вашего типа GtkWidget:

Также вам необходимо вызвать gtk_widget_init_template() из функции инициализации экземпляра:

Вы можете получить доступ к виджетам, определенным в шаблоне, используя функцию gtk_widget_get_template_child(), но обычно вы объявляете указатель в структуре частных данных экземпляра вашего типа с тем же именем, что и виджет в определении шаблона, и вызываете gtk_widget_class_bind_template_child_private() с этим именем, например.

Вы также можете использовать gtk_widget_class_bind_template_callback() для подключения обратного вызова сигнала, определенного в шаблоне, к функции, видимой в области видимости класса, например.

Функции

GtkCallback ()

void
(*GtkCallback) (GtkWidget *widget,
                gpointer data);

Тип функций обратного вызова, используемых, например, для итерации по дочерним элементам контейнера, см. gtk_container_foreach().

Параметры

widget

элемент управления для обработки

data

данные, предоставленные пользователем.

[closure]

gtk_widget_new ()

GtkWidget *
gtk_widget_new (GType type,
                const gchar *first_property_name,
                ...);

Эта вспомогательная функция создает элемент управления и устанавливает его свойства за один раз. Например, вы можете написать: gtk_widget_new (GTK_TYPE_LABEL, "label", "Hello World", "xalign", 0.0, NULL) для создания выровненного по левому краю метки. Эквивалентно g_object_new(), но возвращает элемент управления, поэтому вам не нужно преобразовывать сам объект.

Параметры

type

Идентификатор типа создаваемого элемента управления

first_property_name

имя первого свойства для установки

...

значение первого свойства, за которым следуют дополнительные свойства, завершается NULL

Возвращает

новый GtkWidget типа widget_type

gtk_widget_destroy ()

void
gtk_widget_destroy (GtkWidget *widget);

Уничтожает элемент управления.

При уничтожении элемента управления он разорвет все ссылки, которые он держит на другие объекты. Если элемент управления находится внутри контейнера, элемент управления будет удален из контейнера. Если элемент управления является верхним (производным от GtkWindow), он будет удален из списка верхних элементов, и ссылка GTK+ на него будет удалена. Удаление элемента управления из его контейнера или списка верхних элементов приводит к окончанию элемента управления, если вы не добавили дополнительные ссылки на элемент управления с помощью g_object_ref().

В большинстве случаев явные уничтожение требуются только для верхних элементов управления (окон), поскольку при уничтожении верхнего уровня его дочерние элементы также будут уничтожены.

Параметры

widget

a GtkWidget

gtk_widget_in_destruction ()

gboolean
gtk_widget_in_destruction (GtkWidget *widget);

Возвращает, уничтожается ли элемент управления в настоящее время. Эта информация иногда может использоваться для избежания выполнения ненужной работы.

Параметры

widget

a GtkWidget

Возвращает

TRUE если widget уничтожается

gtk_widget_destroyed ()

void
gtk_widget_destroyed (GtkWidget *widget,
                      GtkWidget **widget_pointer);

Эта функция устанавливает *widget_pointer в NULL, если widget_pointer != NULL. Она предназначена для использования в качестве обратного вызова, подключенного к сигналу «destroy» элемента управления. Вы подключаете gtk_widget_destroyed() в качестве обработчика сигнала и передаете адрес вашей переменной элемента управления в качестве пользовательских данных. Затем, когда элемент управления уничтожается, переменная будет установлена в NULL. Полезно, например, для предотвращения нескольких копий одного и того же диалога.

Параметры

widget

a GtkWidget

widget_pointer

адрес переменной, содержащей widget .

[inout][transfer none]

gtk_widget_unparent ()

void
gtk_widget_unparent (GtkWidget *widget);

Эта функция предназначена только для использования в реализациях элементов управления. Должна вызываться реализациями метода remove в GtkContainer для отсоединения дочернего элемента от контейнера.

Параметры

widget

a GtkWidget

gtk_widget_show ()

void
gtk_widget_show (GtkWidget *widget);

Помечает элемент управления для отображения. Любой элемент управления, который не отображается, не будет отображаться на экране. Если вы хотите отобразить все элементы управления в контейнере, проще вызвать gtk_widget_show_all() для контейнера, вместо того, чтобы отображать элементы управления индивидуально.

Помните, что вам необходимо отобразить контейнеры, содержащие элемент управления, помимо самого элемента управления, прежде чем он появится на экране.

При отображении верхнего контейнера он сразу же реализуется и отображается; другие отображенные элементы управления реализуются и отображаются, когда их верхний контейнер реализуется и отображается.

Параметры

widget

a GtkWidget

gtk_widget_show_now ()

void
gtk_widget_show_now (GtkWidget *widget);

Отображает элемент управления. Если элемент управления является неотображенным верхним элементом управления (т. е. GtkWindow, который еще не отображен), запустите главный цикл и подождите, пока окно фактически отобразится. Будьте осторожны; поскольку главный цикл работает, все может произойти во время выполнения этой функции.

Параметры

widget

a GtkWidget

gtk_widget_hide ()

void
gtk_widget_hide (GtkWidget *widget);

Отменяет действие gtk_widget_show(), делая элемент управления скрытым (невидимым для пользователя).

Параметры

widget

a GtkWidget

gtk_widget_show_all ()

void
gtk_widget_show_all (GtkWidget *widget);

Рекурсивно отображает элемент управления и все дочерние элементы управления (если элемент управления является контейнером).

Параметры

widget

a GtkWidget

gtk_widget_map ()

void
gtk_widget_map (GtkWidget *widget);

Эта функция предназначена только для использования в реализациях элементов управления. Приводит к отображению элемента управления, если он еще не отображается.

Параметры

widget

a GtkWidget

gtk_widget_unmap ()

void
gtk_widget_unmap (GtkWidget *widget);

Эта функция предназначена только для использования в реализациях элементов управления. Приводит к отображению элемента управления, если он отображается в настоящее время.

Параметры

widget

a GtkWidget

gtk_widget_realize ()

void
gtk_widget_realize (GtkWidget *widget);

Создаёт ресурсы GDK (системы оконного менеджера) для виджета. Например, widget->window будет создан, когда виджет будет реализован. Обычно реализация происходит неявно; если вы отображаете виджет и все его контейнеры-родители, виджет будет реализован и отображён автоматически.

Для реализации виджета необходимо, чтобы все его родительские виджеты были реализованы; вызов gtk_widget_realize() реализует родителей виджета помимо самого widget. Если виджет ещё не находится внутри верхнего окна при его реализации, могут возникнуть проблемы.

Эта функция в основном используется в реализациях виджетов и не очень полезна в других случаях. Во многих ситуациях, когда вам кажется, что она может понадобиться, лучше подключиться к сигналу, который будет вызван после автоматической реализации виджета, например, к сигналу “draw”. Или просто g_signal_connect() к сигналу “realize”.

Параметры

widget

a GtkWidget

gtk_widget_unrealize ()

void
gtk_widget_unrealize (GtkWidget *widget);

Эта функция полезна только в реализациях виджетов. Приводит к тому, что виджет не реализован (освобождает все ресурсы GDK, связанные с виджетом, такие как widget->window).

Параметры

widget

a GtkWidget

gtk_widget_draw ()

void
gtk_widget_draw (GtkWidget *widget,
                 cairo_t *cr);

Отображает widget на cr. Левый верхний угол виджета будет отображён в текущей точке начала координат cr.

Вы должны передать контекст cairo в качестве аргумента cr, который находится в исходном состоянии. В противном случае результат отрисовки не определён. Например, изменение оператора с помощью cairo_set_operator() или ширины линии с помощью cairo_set_line_width() может иметь нежелательные побочные эффекты. Однако вы можете изменить матрицу преобразования контекста — например, с помощью cairo_scale(), cairo_translate() или cairo_set_matrix(), а также область обрезки с помощью cairo_clip() перед вызовом этой функции. Также разрешается изменять контекст с помощью cairo_save() и cairo_push_group() перед вызовом этой функции.

Обратите внимание, что виджеты со специальным назначением могут содержать специальный код для рендеринга на экран и могут отображаться по-разному на экране и при рендеринге с помощью gtk_widget_draw().

Параметры

widget

виджет для отрисовки. Он должен быть отображаемым (см. gtk_widget_is_drawable()), и должна быть выделена область.

cr

контекст cairo для отрисовки

С версии: 3.0

gtk_widget_queue_draw ()

void
gtk_widget_queue_draw (GtkWidget *widget);

Эквивалентно вызову gtk_widget_queue_draw_area() для всей области виджета.

Параметры

widget

a GtkWidget

gtk_widget_queue_resize ()

void
gtk_widget_queue_resize (GtkWidget *widget);

Эта функция предназначена только для использования в реализациях виджетов. Помечает виджет для пересчёта размеров; должна вызываться, когда у виджета по какой-либо причине запрашивается новый размер. Например, при изменении текста в GtkLabel, GtkLabel вызывает пересчёт размера, чтобы обеспечить достаточное пространство для нового текста.

Обратите внимание, что вы не можете вызвать gtk_widget_queue_resize() для виджета изнутри реализации виртуального метода GtkWidgetClass::size_allocate. Вызовы gtk_widget_queue_resize() изнутри GtkWidgetClass::size_allocate будут проигнорированы.

Параметры

widget

a GtkWidget

gtk_widget_queue_resize_no_redraw ()

void
gtk_widget_queue_resize_no_redraw (GtkWidget *widget);

Эта функция работает аналогично gtk_widget_queue_resize(), но виджет не делает недействительным.

Параметры

widget

a GtkWidget

С версии: 2.4

gtk_widget_queue_allocate ()

void
gtk_widget_queue_allocate (GtkWidget *widget);

Эта функция предназначена только для использования в реализациях виджетов.

Помечает виджет для повторного выполнения функции GtkWidgetClass::size_allocate. Используйте эту функцию вместо gtk_widget_queue_resize(), когда запрос размера widget не изменился, но нужно переместить содержимое.

Пример использования этой функции — gtk_widget_set_halign().

Параметры

widget

a GtkWidget

gtk_widget_get_frame_clock ()

GdkFrameClock *
gtk_widget_get_frame_clock (GtkWidget *widget);

Получает таймер кадра для виджета. Таймер кадра — это глобальный «счётчик», который можно использовать для управления анимацией и перерисовкой. Чаще всего таймер кадра используется для вызова gdk_frame_clock_get_frame_time() с целью получения времени для анимации. Например, вы можете записать начало анимации с начальным значением из gdk_frame_clock_get_frame_time(), а затем обновить анимацию, вызвав gdk_frame_clock_get_frame_time() снова во время каждой перерисовки.

gdk_frame_clock_request_phase() приведёт к появлению нового кадра в таймере, но не обязательно перерисует какие-либо виджеты. Для перерисовки виджета используйте gtk_widget_queue_draw(), которое делает виджет недействительным (то есть планирует отрисовку в следующем кадре). gtk_widget_queue_draw() также приведёт к запросу кадра в соответствующем таймере кадра.

Таймер кадра виджета не меняется, пока виджет отображён. Перемещение виджета (что подразумевает временное скрытие) может изменить таймер кадра виджета.

У нереализованных виджетов нет таймера кадра.

Параметры

widget

a GtkWidget

Возвращаемое значение

a GdkFrameClock, или NULL, если виджет не реализован.

[nullable][transfer none]

С версии: 3.8

gtk_widget_get_scale_factor ()

gint
gtk_widget_get_scale_factor (GtkWidget *widget);

Получает внутренний масштаб, преобразующий координаты окна в фактические пиксели устройства. На традиционных системах это 1, на устройствах с высокой плотностью пикселей — большее значение (обычно 2).

См. gdk_window_get_scale_factor().

Параметры

widget

a GtkWidget

Возвращаемое значение

масштаб для widget

С версии: 3.10

GtkTickCallback ()

gboolean
(*GtkTickCallback) (GtkWidget *widget,
                    GdkFrameClock *frame_clock,
                    gpointer user_data);

Тип обратного вызова для добавления функции обновления анимации. См. gtk_widget_add_tick_callback().

Параметры

widget

виджет

frame_clock

таймер кадров виджета (то же, что и при вызове gtk_widget_get_frame_clock())

user_data

данные пользователя, переданные в gtk_widget_add_tick_callback().

Возвращаемое значение

G_SOURCE_CONTINUE, если обратный вызов должен продолжаться, G_SOURCE_REMOVE, если обратный вызов должен быть удалён.

С версии: 3.8

gtk_widget_add_tick_callback ()

guint
gtk_widget_add_tick_callback (GtkWidget *widget,
                              GtkTickCallback callback,
                              gpointer user_data,
                              GDestroyNotify notify);

Планирует обновление кадра анимации и добавляет обратный вызов, который будет вызываться перед каждым кадром. Пока обратный вызов не удалён, он будет вызываться часто (обычно со скоростью кадров устройства вывода или так быстро, как приложение может перерисоваться, что медленнее). По этой причине, он наиболее подходит для обработки графики, которая изменяется в каждом или в нескольких кадрах. Обратный вызов для таймера кадров не подразумевает автоматическое перераспределение или перерисовку. Если вам нужна перерисовка или перераспределение, и вы не меняете свойства виджета, которые бы это спровоцировали (например, изменение текста GtkLabel), то вам нужно вызвать gtk_widget_queue_resize() или gtk_widget_queue_draw_area() самостоятельно.

gdk_frame_clock_get_frame_time() обычно используется для тайминга непрерывной анимации, и gdk_frame_timings_get_predicted_presentation_time(), если вы пытаетесь отобразить отдельные кадры в определённые моменты времени.

Это более удобная альтернатива прямому подключению к сигналу “update” объекта GdkFrameClock, так как вам не нужно беспокоиться о том, когда GdkFrameClock назначен виджету.

Параметры

widget

a GtkWidget

callback

функция для обновления анимации

user_data

данные, передаваемые в callback

notify

функция для освобождения user_data при удалении обратного вызова.

Возвращаемое значение

идентификатор подключения этого обратного вызова. Удалите обратный вызов, передав его в gtk_widget_remove_tick_callback()

С версии: 3.8

gtk_widget_remove_tick_callback ()

void
gtk_widget_remove_tick_callback (GtkWidget *widget,
                                 guint id);

Удаляет обратный вызов для таймера кадров, ранее зарегистрированный с помощью gtk_widget_add_tick_callback().

Параметры

widget

a GtkWidget

id

идентификатор, возвращённый gtk_widget_add_tick_callback()

С версии: 3.8

gtk_widget_size_request ()

void
gtk_widget_size_request (GtkWidget *widget,
                         GtkRequisition *requisition);

gtk_widget_size_request устарел с версии 3.0 и не должен использоваться в новом коде.

Используйте gtk_widget_get_preferred_size() вместо него.

Эта функция обычно используется при реализации подкласса GtkContainer. Получает предпочтительный размер виджета. Контейнер использует эту информацию для размещения своих дочерних виджетов и определения размеров, которые им следует предоставить с помощью gtk_widget_size_allocate().

Вы также можете вызвать эту функцию из приложения, с некоторыми оговорками. Наиболее важно, что получение запроса размера требует, чтобы виджет был связан с экраном, поскольку могут потребоваться сведения о шрифтах. Приложения, поддерживающие несколько мониторов, должны учитывать это.

Также помните, что запрос размера не обязательно является размером, который виджету фактически будет предоставлен.

Параметры

widget

a GtkWidget

requisition

a GtkRequisition для заполнения.

[out]

gtk_widget_get_child_requisition ()

void
gtk_widget_get_child_requisition (GtkWidget *widget,
                                  GtkRequisition *requisition);

gtk_widget_get_child_requisition устарело с версии 3.0 и не должно использоваться в новых кодах.

Используйте gtk_widget_get_preferred_size() вместо него.

Эта функция предназначена только для реализации виджетов. Получает widget->requisition, если на виджет не навязана определённая геометрия (например, с помощью gtk_widget_set_size_request()), в противном случае возвращает заданную геометрию вместо запросов на выделение места виджета.

Эта функция отличается от gtk_widget_size_request() тем, что она извлекает последнее значение запрошенного размера из widget->requisition, в то время как gtk_widget_size_request() фактически вызывает метод «size_request» у widget для вычисления запрошенного размера и заполнения widget->requisition, и только после этого возвращает widget->requisition.

Так как эта функция не вызывает метод «size_request», она может использоваться только когда известно, что widget->requisition актуальна, то есть, gtk_widget_size_request() был вызван после последнего запроса на изменение размера. В общем случае, такой информацией обладают только реализации контейнеров; приложения должны использовать gtk_widget_size_request().

Параметры

widget

a GtkWidget

requisition

a GtkRequisition для заполнения.

[out]

gtk_widget_size_allocate ()

void
gtk_widget_size_allocate (GtkWidget *widget,
                          GtkAllocation *allocation);

Эта функция используется только подклассами GtkContainer для назначения размера и положения дочерним виджетам.

В этой функции выделение может быть скорректировано. Оно будет принудительно ограничено минимальным размером 1x1, и будет использован виртуальный метод adjust_size_allocation дочернего виджета для корректировки выделения. Стандартные корректировки включают удаление отступов виджета и применение свойств «halign» и «valign» виджета.

Для базовой поддержки в контейнерах необходимо использовать gtk_widget_size_allocate_with_baseline() вместо этого.

Параметры

widget

a GtkWidget

allocation

позиция и размер, которые будут выделены для widget

gtk_widget_size_allocate_with_baseline ()

void
gtk_widget_size_allocate_with_baseline
                               (GtkWidget *widget,
                                GtkAllocation *allocation,
                                gint baseline);

Эта функция используется только подклассами GtkContainer для назначения размера, позиции и (необязательно) базовой линии для их дочерних виджетов.

В этой функции выделение и базовая линия могут быть скорректированы. Она будет принудительно ограничена минимальным размером 1x1, и будут использованы виртуальные методы adjust_size_allocation и adjust_baseline_allocation дочернего виджета для корректировки выделения и базовой линии. Стандартные корректировки включают удаление отступов виджета и применение свойств «halign» и «valign» виджета.

Если у дочернего виджета нет выравнивания по базовой линии (GTK_ALIGN_BASELINE), параметр baseline игнорируется, и используется значение -1.

Параметры

widget

a GtkWidget

allocation

позиция и размер, которые будут выделены для widget

baseline

Базовая линия дочернего виджета или -1

С версии: 3.10

gtk_widget_add_accelerator ()

void
gtk_widget_add_accelerator (GtkWidget *widget,
                            const gchar *accel_signal,
                            GtkAccelGroup *accel_group,
                            guint accel_key,
                            GdkModifierType accel_mods,
                            GtkAccelFlags accel_flags);

Устанавливает ускоритель для данного widget в accel_group, который вызывает событие accel_signal при активации ускорителя. accel_group необходимо добавить к верхнему уровню виджета через gtk_window_add_accel_group(), и сигнал должен быть типа G_SIGNAL_ACTION. Ускорители, добавленные с помощью этой функции, нельзя изменить во время выполнения. Если требуется поддержка ускорителей, которые можно изменять пользователем, используйте gtk_accel_map_add_entry() и gtk_widget_set_accel_path() или gtk_menu_item_set_accel_path().

Параметры

widget

виджет, для которого устанавливается ускоритель

accel_signal

сигнал виджета, который должен быть вызван при активации ускорителя

accel_group

группа ускорителей для этого виджета, добавленная в его родительский элемент

accel_key

значение клавиши GDK ускорителя

accel_mods

комбинация модификаторов клавиш ускорителя

accel_flags

флаги ускорителей, например GTK_ACCEL_VISIBLE

gtk_widget_remove_accelerator ()

gboolean
gtk_widget_remove_accelerator (GtkWidget *widget,
                               GtkAccelGroup *accel_group,
                               guint accel_key,
                               GdkModifierType accel_mods);

Удаляет ускоритель из widget, установленный ранее с помощью gtk_widget_add_accelerator().

Параметры

widget

виджет, для которого устанавливается ускоритель

accel_group

группа ускорителей для этого виджета

accel_key

значение клавиши GDK ускорителя

accel_mods

комбинация модификаторов клавиш ускорителя

Возвращает

значение, указывающее, был ли ускоритель установлен и может ли быть удалён

gtk_widget_set_accel_path ()

void
gtk_widget_set_accel_path (GtkWidget *widget,
                           const gchar *accel_path,
                           GtkAccelGroup *accel_group);

Учитывая группу акселераторов, accel_group, и путь акселератора, accel_path, настраивает акселератор в accel_group, так что всякий раз, когда нажимается сочетание клавиш, определённое для accel_path, будет активирован widget. Это удаляет все акселераторы (для любой группы акселераторов), установленные предыдущими вызовами gtk_widget_set_accel_path(). Ассоциация акселераторов с путями позволяет пользователю их изменять, а изменения сохранять для последующего использования. (См. gtk_accel_map_save().)

Эта функция — низкоуровневая функция, скорее всего, используемая системой создания меню, например, GtkUIManager. Если используется GtkUIManager, настройка путей акселераторов выполняется автоматически.

Даже если вы не используете GtkUIManager, если вы хотите настроить акселераторы только для пунктов меню, gtk_menu_item_set_accel_path() предоставляет несколько более удобный интерфейс.

Обратите внимание, что строка accel_path будет храниться в GQuark. Следовательно, если вы передаёте статическую строку, вы можете сэкономить некоторое количество памяти, предварительно интернировав её с помощью g_intern_static_string().

Параметры

widget

a GtkWidget

accel_path

путь для поиска акселератора.

[allow-none]

accel_group

a GtkAccelGroup.

[allow-none]

gtk_widget_list_accel_closures ()

GList *
gtk_widget_list_accel_closures (GtkWidget *widget);

Выводит замыкания, используемые widget для соединений с группами акселераторов с помощью gtk_accel_group_connect_by_path() или gtk_accel_group_connect(). Замыкания могут быть использованы для отслеживания изменений акселераторов на widget, подключившись к сигналу GtkAccelGroup ::accel-changed группы акселераторов GtkAccelGroup, который можно получить с помощью gtk_accel_group_from_accel_closure().

Параметры

widget

виджет, для которого требуется список замыканий акселераторов

Возвращает

новый выделенный список GList замыканий.

[transfer container][element-type GClosure]

gtk_widget_can_activate_accel ()

gboolean
gtk_widget_can_activate_accel (GtkWidget *widget,
                               guint signal_id);

Определяет, можно ли в данный момент активировать акселератор, активирующий сигнал, идентифицируемый signal_id. Это делается путём передачи сигнала “can-activate-accel” на widget; если сигнал не переопределён обработчиком или в производном виджете, то проверка по умолчанию заключается в том, что виджет должен быть активным, а виджет и все его предки должны быть отображены.

Параметры

widget

a GtkWidget

signal_id

идентификатор сигнала, установленного на widget

Возвращает

TRUE, если акселератор можно активировать.

С: 2.4

gtk_widget_event ()

gboolean
gtk_widget_event (GtkWidget *widget,
                  GdkEvent *event);

Редко используемая функция. Эта функция используется для передачи сигналов событий на виджет (эти сигналы никогда не должны передаваться без использования этой функции). Если вы хотите синтезировать событие, не используйте эту функцию; вместо этого используйте gtk_main_do_event(), чтобы событие вело себя так, как если бы оно находилось в очереди событий. Не синтезируйте события expose; вместо этого используйте gdk_window_invalidate_rect() для обновления области окна.

Параметры

widget

a GtkWidget

event

a GdkEvent

Возвращает

результат передачи сигнала события (TRUE, если событие было обработано)

gtk_widget_activate ()

gboolean
gtk_widget_activate (GtkWidget *widget);

Для виджетов, которые могут быть «активированы» (кнопки, пункты меню и т. д.), эта функция активирует их. Активация — это то, что происходит при нажатии клавиши Ввод на виджете во время навигации по клавиатуре. Если widget не может быть активирован, функция возвращает FALSE.

Параметры

widget

a GtkWidget that’s activatable

Возвращает

TRUE, если виджет можно активировать

gtk_widget_reparent ()

void
gtk_widget_reparent (GtkWidget *widget,
                     GtkWidget *new_parent);

gtk_widget_reparent устарела с версии 3.14 и не должна использоваться в новом коде.

Используйте gtk_container_remove() и gtk_container_add().

Перемещает виджет из одного GtkContainer в другой, обрабатывая проблемы с счётчиками ссылок, чтобы избежать уничтожения виджета.

Параметры

widget

a GtkWidget

new_parent

a GtkContainer to move the widget into

gtk_widget_intersect ()

gboolean
gtk_widget_intersect (GtkWidget *widget,
                      const GdkRectangle *area,
                      GdkRectangle *intersection);

Вычисляет пересечение области виджета widget и area, сохраняя пересечение в intersection, и возвращает TRUE, если пересечение произошло. intersection может быть NULL, если вас интересует только факт наличия пересечения.

Параметры

widget

a GtkWidget

area

прямоугольник

intersection

прямоугольник для сохранения пересечения widget и area .

[nullable]

Возвращаемое значение

TRUE, если пересечение произошло

gtk_widget_is_focus ()

gboolean
gtk_widget_is_focus (GtkWidget *widget);

Определяет, является ли виджет виджетом фокуса внутри своего верхнего уровня. (Это не означает, что свойство “has-focus” обязательно установлено; свойство “has-focus” будет установлено только в том случае, если виджет верхнего уровня дополнительно имеет глобальный фокус ввода.)

Параметры

widget

a GtkWidget

Возвращаемое значение

TRUE, если виджет является виджетом фокуса.

gtk_widget_grab_focus ()

void
gtk_widget_grab_focus (GtkWidget *widget);

Принудительно устанавливает фокус клавиатуры для widget внутри GtkWindow, в котором он находится. widget должен быть фокусируемым виджетом, например, GtkEntry; что-то вроде GtkFrame не сработает.

Точнее, у него должен быть установлен флаг GTK_CAN_FOCUS. Используйте gtk_widget_set_can_focus() для изменения этого флага.

Виджет также должен быть реализован и отображен. Это указывается соответствующими сигналами. Попытка получить фокус сразу после создания виджета, скорее всего, потерпит неудачу и вызовет критические предупреждения.

Параметры

widget

a GtkWidget

gtk_widget_grab_default ()

void
gtk_widget_grab_default (GtkWidget *widget);

Принудительно устанавливает widget в качестве виджета по умолчанию. widget должен быть виджетом по умолчанию; обычно вы сами обеспечиваете это, вызывая gtk_widget_set_can_default() со значением TRUE. Виджет по умолчанию активируется, когда пользователь нажимает Enter в окне. Виджеты по умолчанию должны быть активируемыми, то есть gtk_widget_activate() должно их затрагивать. Обратите внимание, что для виджетов GtkEntry свойство «activates-default» должно быть установлено в TRUE, прежде чем они активируют виджет по умолчанию при нажатии Enter и фокусировке на GtkEntry.

Параметры

widget

a GtkWidget

gtk_widget_set_name ()

void
gtk_widget_set_name (GtkWidget *widget,
                     const gchar *name);

Виджеты могут иметь имена, что позволяет ссылаться на них из файла CSS. Вы можете применить стиль к виджетам с определённым именем в файле CSS. Смотрите документацию по синтаксису CSS (на той же странице, что и документация по GtkStyleContext).

Обратите внимание, что синтаксис CSS имеет определённые специальные символы для разграничения и представления элементов в селекторе (точка, #, >, *...), поэтому использование этих символов сделает ваш виджет несовместимым по имени. Любая комбинация буквенно-цифровых символов, дефисов и подчёркиваний подойдёт.

Параметры

widget

a GtkWidget

name

имя виджета

gtk_widget_get_name ()

const gchar *
gtk_widget_get_name (GtkWidget *widget);

Возвращает имя виджета. Смотрите gtk_widget_set_name() для значения имён виджетов.

Параметры

widget

a GtkWidget

Возвращаемое значение

имя виджета. Эта строка принадлежит GTK+ и не должна изменяться или освобождаться

gtk_widget_set_state ()

void
gtk_widget_set_state (GtkWidget *widget,
                      GtkStateType state);

gtk_widget_set_state устарело с версии 3.0 и не должно использоваться в новых кодах.

Используйте gtk_widget_set_state_flags() вместо этого.

Эта функция предназначена для использования в реализации виджетов. Устанавливает состояние виджета (нечувствительность, предварительное освещение и т.д.). Обычно вы должны устанавливать состояние с помощью оберток функций, таких как gtk_widget_set_sensitive().

Параметры

widget

a GtkWidget

state

новое состояние для widget

gtk_widget_set_sensitive ()

void
gtk_widget_set_sensitive (GtkWidget *widget,
                          gboolean sensitive);

Устанавливает чувствительность виджета. Виджет чувствителен, если пользователь может взаимодействовать с ним. Нечувствительные виджеты «серые» и пользователь с ними взаимодействовать не может. Нечувствительные виджеты также известны как «неактивные», «отключенные» или «призрачные» в некоторых других наборах инструментов.

Параметры

widget

a GtkWidget

sensitive

TRUE, чтобы сделать виджет чувствительным

gtk_widget_set_parent ()

void
gtk_widget_set_parent (GtkWidget *widget,
                       GtkWidget *parent);

Эта функция полезна только при реализации подклассов GtkContainer. Устанавливает контейнер в качестве родительского для widget и обрабатывает некоторые детали, такие как обновление состояния и стиля дочернего элемента, чтобы отразить его новое местоположение. Противоположная функция — gtk_widget_unparent().

Параметры

widget

a GtkWidget

parent

родительский контейнер

gtk_widget_set_parent_window ()

void
gtk_widget_set_parent_window (GtkWidget *widget,
                              GdkWindow *parent_window);

Устанавливает родительское окно по умолчанию для widget .

Для классов GtkWindow установка parent_window влияет на то, является ли окно главным окном или может быть вложено в другие виджеты.

Для классов GtkWindow это необходимо выполнить до реализации окна.

Параметры

widget

a GtkWidget.

parent_window

новое родительское окно.

gtk_widget_get_parent_window ()

GdkWindow *
gtk_widget_get_parent_window (GtkWidget *widget);

Возвращает родительское окно widget .

Параметры

widget

a GtkWidget.

Возвращает

родительское окно widget .

[transfer none]

gtk_widget_set_events ()

void
gtk_widget_set_events (GtkWidget *widget,
                       gint events);

Устанавливает маску событий (см. GdkEventMask) для виджета. Маска событий определяет, какие события будет получать виджет. Имейте в виду, что у разных виджетов разные значения маски событий по умолчанию, и изменение маски может нарушить функциональность виджета, поэтому будьте осторожны. Эту функцию необходимо вызвать, пока виджет не реализован. Рассмотрите gtk_widget_add_events() для уже реализованных виджетов или если вы хотите сохранить существующую маску событий. Эта функция не может быть использована с виджетами без окна. (См. gtk_widget_get_has_window()). Чтобы получить события для этих виджетов, поместите их внутрь GtkEventBox и получайте события на нём.

Параметры

widget

a GtkWidget

events

маска событий

gtk_widget_get_events ()

gint
gtk_widget_get_events (GtkWidget *widget);

Возвращает маску событий (см. GdkEventMask) для виджета. Это события, которые получит виджет.

Примечание: Внутренне, маска событий виджета будет логическим ИЛИ маски событий, установленной с помощью gtk_widget_set_events() или gtk_widget_add_events(), и маски событий, необходимой для каждого GtkEventController, созданного для виджета.

Параметры

widget

a GtkWidget

Возвращает

маску событий для widget

gtk_widget_add_events ()

void
gtk_widget_add_events (GtkWidget *widget,
                       gint events);

Добавляет события из битового поля events к маске событий для widget . Подробности см. в gtk_widget_set_events() и в обзоре обработки событий.

Параметры

widget

a GtkWidget

events

маска событий, см. GdkEventMask

gtk_widget_set_device_events ()

void
gtk_widget_set_device_events (GtkWidget *widget,
                              GdkDevice *device,
                              GdkEventMask events);

Устанавливает маску событий устройства (см. GdkEventMask) для виджета. Маска событий определяет, какие события виджет будет получать от device . Имейте в виду, что у разных виджетов разные значения маски событий по умолчанию, и изменение маски может нарушить функциональность виджета, поэтому будьте осторожны. Эту функцию необходимо вызвать, пока виджет не реализован. Рассмотрите gtk_widget_add_device_events() для уже реализованных виджетов или если вы хотите сохранить существующую маску событий. Эта функция не может быть использована с виджетами без окна (которые возвращают FALSE из gtk_widget_get_has_window()); для получения событий на этих виджетах поместите их внутрь GtkEventBox и получайте события на нём.

Параметры

widget

a GtkWidget

device

a GdkDevice

events

маска событий

Since: 3.0

gtk_widget_get_device_events ()

GdkEventMask
gtk_widget_get_device_events (GtkWidget *widget,
                              GdkDevice *device);

Возвращает маску событий для виджета, соответствующую определенному устройству. Это события, которые виджет будет получать, когда device взаимодействует с ним.

Параметры

widget

a GtkWidget

device

a GdkDevice

Возвращает

маску событий устройства для widget

Since: 3.0

gtk_widget_add_device_events ()

void
gtk_widget_add_device_events (GtkWidget *widget,
                              GdkDevice *device,
                              GdkEventMask events);

Добавляет события устройства из битового поля events к маске событий для widget . Подробности см. в gtk_widget_set_device_events().

Параметры

widget

a GtkWidget

device

a GdkDevice

events

маска событий, см. GdkEventMask

Since: 3.0

gtk_widget_set_device_enabled ()

void
gtk_widget_set_device_enabled (GtkWidget *widget,
                               GdkDevice *device,
                               gboolean enabled);

Включает или отключает GdkDevice для взаимодействия с widget и всеми его дочерними элементами.

Это делается путём обхода иерархии GdkWindow и включения той же маски, что и для основных событий (т.е. той, что возвращает gdk_window_get_events()).

Параметры

widget

a GtkWidget

device

a GdkDevice

enabled

включить ли устройство

С: 3.0

gtk_widget_get_device_enabled ()

gboolean
gtk_widget_get_device_enabled (GtkWidget *widget,
                               GdkDevice *device);

Возвращает, может ли device взаимодействовать с widget и его дочерними элементами. См. gtk_widget_set_device_enabled().

Параметры

widget

a GtkWidget

device

a GdkDevice

Возвращает

TRUE, если device включён для widget

С: 3.0

gtk_widget_get_toplevel ()

GtkWidget *
gtk_widget_get_toplevel (GtkWidget *widget);

Эта функция возвращает самый верхний виджет в иерархии контейнеров, частью которой является widget. Если у widget нет родительских виджетов, он возвращается как самый верхний виджет. Ссылка на возвращённый виджет не добавляется; его не нужно удалять.

Обратите внимание на различие в поведении по сравнению с gtk_widget_get_ancestor(); gtk_widget_get_ancestor (widget, GTK_TYPE_WINDOW) вернёт NULL, если widget не находился в окне верхнего уровня, и если окно находилось внутри виджета, производного от GtkWindow, который, в свою очередь, находился внутри верхнего окна GtkWindow. Хотя второй случай может показаться маловероятным, он действительно происходит, когда GtkPlug вставлен внутрь GtkSocket в одном и том же приложении.

Для надёжного поиска верхнего окна GtkWindow используйте gtk_widget_get_toplevel() и вызовите gtk_widget_is_toplevel() для результата.

Параметры

widget

a GtkWidget

Возвращает

самый верхний предок widget или widget сам по себе, если предка нет.

[transfer none]

gtk_widget_get_ancestor ()

GtkWidget *
gtk_widget_get_ancestor (GtkWidget *widget,
                         GType widget_type);

Получает первого предка widget типа widget_type. Например, gtk_widget_get_ancestor (widget, GTK_TYPE_BOX) получает первый GtkBox, являющийся предком widget. Ссылка на возвращённый виджет не добавляется; его не нужно удалять. См. примечание о проверке верхнего GtkWindow в документации для gtk_widget_get_toplevel().

Обратите внимание, что в отличие от gtk_widget_is_ancestor(), gtk_widget_get_ancestor() считает widget предком самого себя.

Параметры

widget

a GtkWidget

widget_type

тип предка

Возвращает

виджет предка, или NULL, если не найдено.

[transfer none][nullable]

gtk_widget_get_visual ()

GdkVisual *
gtk_widget_get_visual (GtkWidget *widget);

Получает визуальное представление, которое будет использоваться для отрисовки widget.

Параметры

widget

a GtkWidget

Возвращает

визуальное представление для widget.

[transfer none]

gtk_widget_set_visual ()

void
gtk_widget_set_visual (GtkWidget *widget,
                       GdkVisual *visual);

Устанавливает визуальное представление, которое должно использоваться виджетом и его дочерними элементами для создания GdkWindows. Визуальное представление должно находиться на том же GdkScreen, что и возвращает gtk_widget_get_screen(), поэтому необходимо обработать сигнал “screen-changed”.

Установка нового visual не заставит widget пересоздать свои окна, поэтому вы должны вызвать эту функцию до того, как widget будет реализован.

Параметры

widget

a GtkWidget

visual

используемое визуальное представление или NULL для отмены предыдущего.

[allow-none]

gtk_widget_get_pointer ()

void
gtk_widget_get_pointer (GtkWidget *widget,
                        gint *x,
                        gint *y);

gtk_widget_get_pointer устарело начиная с версии 3.4 и не должно использоваться в новом коде.

Используйте gdk_window_get_device_position() вместо этого.

Получает положение указателя мыши в координатах виджета. Координаты виджета немного необычны; по историческим причинам они определяются как widget->window координаты для виджетов, которые возвращают TRUE для gtk_widget_get_has_window(); и относительны к widget->allocation.x , widget->allocation.y в противном случае.

Параметры

widget

a GtkWidget

x

место возврата для координаты X или NULL.

[out][allow-none]

y

место возврата для координаты Y или NULL.

[out][allow-none]

gtk_widget_is_ancestor ()

gboolean
gtk_widget_is_ancestor (GtkWidget *widget,
                        GtkWidget *ancestor);

Определяет, находится ли widget где-то внутри ancestor, возможно, с промежуточными контейнерами.

Параметры

widget

a GtkWidget

ancestor

another GtkWidget

Возвращает

TRUE, если ancestor содержит widget в качестве дочернего элемента, внука, правнука и т.д.

gtk_widget_translate_coordinates ()

gboolean
gtk_widget_translate_coordinates (GtkWidget *src_widget,
                                  GtkWidget *dest_widget,
                                  gint src_x,
                                  gint src_y,
                                  gint *dest_x,
                                  gint *dest_y);

Преобразует координаты, относительные к размещению src_widget, в координаты, относительные к размещениям dest_widget. Для выполнения этой операции оба виджета должны быть реализованы и должны иметь общий верхний уровень.

Параметры

src_widget

a GtkWidget

dest_widget

a GtkWidget

src_x

X-координата относительно src_widget

src_y

Y-координата относительно src_widget

dest_x

место хранения X-координаты относительно dest_widget .

[out][optional]

dest_y

место хранения Y-координаты относительно dest_widget .

[out][optional]

Возвращает

FALSE, если ни один из виджетов не был реализован или не было общего предка. В этом случае ничего не хранится в *dest_x и *dest_y. В противном случае TRUE.

gtk_widget_hide_on_delete ()

gboolean
gtk_widget_hide_on_delete (GtkWidget *widget);

Вспомогательная функция; предназначена для подключения к сигналу “delete-event” на GtkWindow. Функция вызывает gtk_widget_hide() для своего аргумента, затем возвращает TRUE. При подключении к ::delete-event, это означает, что нажатие кнопки закрытия окна (обычно в правом верхнем углу рамки окна) скроет, но не уничтожит окно. По умолчанию GTK+ уничтожает окна при получении ::delete-event.

Параметры

widget

a GtkWidget

Возвращает

TRUE

gtk_widget_set_style ()

void
gtk_widget_set_style (GtkWidget *widget,
                      GtkStyle *style);

gtk_widget_set_style устарело начиная с версии 3.0 и не должно использоваться в новом коде.

Используйте GtkStyleContext вместо этого

Используется для установки GtkStyle для виджета (widget->style ). Начиная с GTK 3, эта функция ничего не делает, переданный стиль игнорируется.

Параметры

widget

a GtkWidget

style

a GtkStyle, или NULL для удаления эффекта предыдущего вызова gtk_widget_set_style() и возврата к стилю по умолчанию.

[allow-none]

gtk_widget_ensure_style ()

void
gtk_widget_ensure_style (GtkWidget *widget);

gtk_widget_ensure_style устарело начиная с версии 3.0 и не должно использоваться в новом коде.

Используйте GtkStyleContext вместо этого

Обеспечивает наличие стиля у widget (widget->style).

Не очень полезная функция; в большинстве случаев, если вам нужен стиль, виджет реализован, и реализованные виджеты гарантированно уже имеют стиль.

Параметры

widget

a GtkWidget

gtk_widget_get_style ()

GtkStyle *
gtk_widget_get_style (GtkWidget *widget);

gtk_widget_get_style устарел начиная с версии 3.0 и не должен использоваться в новом коде.

Используйте GtkStyleContext вместо этого.

Просто функция доступа, возвращающая widget->style.

Параметры

widget

a GtkWidget

Возвращаемое значение

стиль виджета GtkStyle.

[transfer none]

gtk_widget_reset_rc_styles ()

void
gtk_widget_reset_rc_styles (GtkWidget *widget);

gtk_widget_reset_rc_styles устарел начиная с версии 3.0 и не должен использоваться в новом коде.

Используйте GtkStyleContext вместо этого, и gtk_widget_reset_style()

Сбросьте стили widget и всех потомков, чтобы при повторном запросе они получали правильные значения из текущего загруженного файла RC.

Эта функция не полезна для приложений.

Параметры

widget

a GtkWidget.

gtk_widget_get_default_style ()

GtkStyle *
gtk_widget_get_default_style (void);

gtk_widget_get_default_style устарел начиная с версии 3.0 и не должен использоваться в новом коде.

Используйте GtkStyleContext вместо этого, и gtk_css_provider_get_default() для получения GtkStyleProvider с информацией о стиле по умолчанию для виджетов.

Возвращает стиль по умолчанию, используемый всеми виджетами изначально.

Возвращаемое значение

стиль по умолчанию. Объект GtkStyle принадлежит GTK+ и не должен изменяться или освобождаться.

[transfer none]

gtk_widget_set_direction ()

void
gtk_widget_set_direction (GtkWidget *widget,
                          GtkTextDirection dir);

Устанавливает направление чтения для определённого виджета. Это направление управляет основным направлением для виджетов, содержащих текст, а также направлением, в котором потомки контейнера упаковываются. Возможность установить направление предусмотрена для правильной локализации в языках с направлением чтения справа налево. Обычно приложения будут использовать направление чтения по умолчанию, за исключением контейнеров, где контейнеры упорядочены в порядке, который явно визуальный, а не логический (например, кнопки для выравнивания текста).

Если направление установлено в GTK_TEXT_DIR_NONE, то будет использоваться значение, установленное функцией gtk_widget_set_default_direction().

Параметры

widget

a GtkWidget

dir

новое направление

gtk_widget_get_direction ()

GtkTextDirection
gtk_widget_get_direction (GtkWidget *widget);

Получает направление чтения для определённого виджета. См. gtk_widget_set_direction().

Параметры

widget

a GtkWidget

Возвращаемое значение

направление чтения для виджета.

gtk_widget_set_default_direction ()

void
gtk_widget_set_default_direction (GtkTextDirection dir);

Устанавливает направление чтения по умолчанию для виджетов, для которых направление не было явно установлено с помощью gtk_widget_set_direction().

Параметры

dir

новое направление по умолчанию. Оно не может быть GTK_TEXT_DIR_NONE.

gtk_widget_get_default_direction ()

GtkTextDirection
gtk_widget_get_default_direction (void);

Получает текущее направление чтения по умолчанию. См. gtk_widget_set_default_direction().

Возвращаемое значение

текущее направление по умолчанию.

gtk_widget_shape-combine-region ()

void
gtk_widget_shape_combine_region (GtkWidget *widget,
                                 cairo_region_t *region);

Устанавливает форму для окна GDK этого виджета. Это позволяет создавать прозрачные окна и т. п., см. gdk_window_shape_combine_region() для получения дополнительной информации.

Параметры

widget

a GtkWidget

region

фигура для добавления, или NULL для удаления существующей фигуры.

[allow-none]

С: 3.0

gtk_widget_input-shape-combine-region ()

void
gtk_widget_input_shape_combine_region (GtkWidget *widget,
                                       cairo_region_t *region);

Устанавливает форму ввода для окна GDK этого виджета. Это позволяет создавать окна, которые реагируют на щелчок мыши в непрямоугольной области, см. gdk_window_input_shape_combine_region() для получения дополнительной информации.

Параметры

widget

a GtkWidget

region

фигура для добавления, или NULL для удаления существующей фигуры.

[allow-none]

С: 3.0

gtk_widget_path ()

void
gtk_widget_path (GtkWidget *widget,
                 guint *path_length,
                 gchar **path,
                 gchar **path_reversed);

gtk_widget_path устарел с версии 3.0 и не должен использоваться в новом коде.

Используйте gtk_widget_get_path() вместо этого

Получает полный путь к widget. Путь — это просто имя виджета и всех его родительских элементов в иерархии контейнеров, разделенных точками. Имя виджета берётся из gtk_widget_get_name(). Пути используются для применения стилей к виджету в файлах конфигурации gtkrc. Имена виджетов по умолчанию — это тип виджета (например, «GtkButton»), но их можно задать значением, специфичным для приложения, с помощью gtk_widget_set_name(). Задавая имя виджета, вы позволяете пользователям или авторам тем применять стили к этому конкретному виджету в своём файле gtkrc. path_reversed_p заполняет путь в обратном порядке, начиная с имени widget, а не с имени самого внешнего предка widget.

Параметры

widget

виджет GtkWidget

path_length

место для хранения длины пути, или NULL.

[out][allow-none]

path

место для хранения выделенной строки пути, или NULL.

[out][allow-none]

path_reversed

место для хранения выделенной строки обратного пути, или NULL.

[out][allow-none]

gtk_widget_class_path ()

void
gtk_widget_class_path (GtkWidget *widget,
                       guint *path_length,
                       gchar **path,
                       gchar **path_reversed);

gtk_widget_class_path устарел с версии 3.0 и не должен использоваться в новом коде.

Используйте gtk_widget_get_path() вместо этого

Аналогично gtk_widget_path(), но всегда использует имя типа виджета, а не пользовательское имя, заданное с помощью gtk_widget_set_name().

Параметры

widget

виджет GtkWidget

path_length

место для хранения длины пути класса, или NULL.

[out][optional]

path

место для хранения пути класса в виде выделенной строки, или NULL.

[out][optional]

path_reversed

место для хранения строки обратного пути класса в виде выделенной строки, или NULL.

[out][optional]

gtk_widget_get_composite_name ()

gchar *
gtk_widget_get_composite_name (GtkWidget *widget);

gtk_widget_get_composite_name устарел с версии 3.10 и не должен использоваться в новом коде.

Используйте gtk_widget_class_set_template(), или вообще не используйте эту API.

Получает составное имя виджета.

Параметры

widget

виджет GtkWidget

Возвращает

составное имя widget, или NULL, если widget не является составным потомком. Строка должна быть освобождена, когда она больше не нужна.

gtk_widget_override_background_color ()

void
gtk_widget_override_background_color (GtkWidget *widget,
                                      GtkStateFlags state,
                                      const GdkRGBA *color);

gtk_widget_override_background_color устарел с версии 3.16 и не должен использоваться в новом коде.

Эта функция бесполезна в контексте рендеринга на основе CSS. Если вы хотите изменить способ отрисовки фона виджета, используйте пользовательский CSS-стиль через приложение-специфичный GtkStyleProvider и CSS-класс стиля. Вы также можете переопределить стандартную отрисовку виджета с помощью сигнала “draw” и использовать Cairo для отрисовки определённого цвета независимо от CSS-стиля.

Устанавливает цвет фона для использования виджетом.

Все остальные значения стиля остаются без изменений. См. gtk_widget_override_color().

Параметры

widget

виджет GtkWidget

state

состояние, для которого нужно установить цвет фона

color

цвет для назначения, или NULL для отмены эффекта предыдущих вызовов gtk_widget_override_background_color().

[allow-none]

С версии: 3.0

gtk_widget_override_color ()

void
gtk_widget_override_color (GtkWidget *widget,
                           GtkStateFlags state,
                           const GdkRGBA *color);

gtk_widget_override_color устарело начиная с версии 3.16 и не должно использоваться в новом коде.

Используйте пользовательский поставщик стилей и классы стилей вместо этого.

Устанавливает цвет, используемый для виджета.

Все другие значения стиля остаются неизменными.

Эта функция не действует рекурсивно. Установка цвета контейнера не влияет на его дочерние элементы. Обратите внимание, что некоторые виджеты, которые вы можете не считать контейнерами, например, GtkButtons, на самом деле являются контейнерами.

Этот API в основном предназначен как быстрый способ для приложений изменить внешний вид виджета. Если вы разрабатываете библиотеку виджетов и намерены, чтобы это изменение было тематически оформлено, лучше это сделать, задав осмысленные CSS-классы в вашей реализации виджета/контейнера через gtk_style_context_add_class().

Таким образом, ваша библиотека виджетов может установить GtkCssProvider с приоритетом GTK_STYLE_PROVIDER_PRIORITY_FALLBACK, чтобы обеспечить стандартное стилирование для тех виджетов, которые в этом нуждаются, и эта тема может быть полностью перекрыта темой пользователя.

Обратите внимание, что для сложных виджетов это может привести к нежелательным результатам (например, однородному цвету фона повсюду), в этих случаях лучше полностью стилизовать такие виджеты с помощью GtkCssProvider с приоритетом GTK_STYLE_PROVIDER_PRIORITY_APPLICATION.

Параметры

widget

a GtkWidget

state

состояние, для которого нужно установить цвет

color

цвет для назначения, или NULL, чтобы отменить эффект предыдущих вызовов gtk_widget_override_color().

[allow-none]

С: 3.0

gtk_widget_override_font ()

void
gtk_widget_override_font (GtkWidget *widget,
                          const PangoFontDescription *font_desc);

gtk_widget_override_font устарело начиная с версии 3.16 и не должно использоваться в новом коде.

Эта функция не полезна в контексте рендеринга на основе CSS. Если вы хотите изменить шрифт, используемый виджетом для отображения текста, вы должны использовать пользовательский CSS-стиль через специфичный для приложения GtkStyleProvider и класс CSS-стиля.

Устанавливает шрифт, используемый для виджета. Все другие значения стиля остаются неизменными. См. gtk_widget_override_color().

Параметры

widget

a GtkWidget

font_desc

описание шрифта для использования, или NULL, чтобы отменить эффект предыдущих вызовов gtk_widget_override_font().

[allow-none]

С: 3.0

gtk_widget_override_symbolic_color ()

void
gtk_widget_override_symbolic_color (GtkWidget *widget,
                                    const gchar *name,
                                    const GdkRGBA *color);

gtk_widget_override_symbolic_color устарело начиная с версии 3.16 и не должно использоваться в новом коде.

Эта функция не полезна в контексте рендеринга на основе CSS. Если вы хотите изменить цвет, используемый для отображения символьных значков, вы должны использовать пользовательский CSS-стиль через специфичный для приложения GtkStyleProvider и класс CSS-стиля.

Устанавливает символьный цвет для виджета.

Все остальные значения стиля остаются неизменными. См. gtk_widget_override_color(), чтобы переопределить цвет переднего или заднего плана.

Параметры

widget

a GtkWidget

name

имя символьного цвета для изменения

color

цвет для назначения (не нужно выделять), или NULL, чтобы отменить эффект предыдущих вызовов gtk_widget_override_symbolic_color().

[allow-none]

С: 3.0

gtk_widget_override_cursor ()

void
gtk_widget_override_cursor (GtkWidget *widget,
                            const GdkRGBA *cursor,
                            const GdkRGBA *secondary_cursor);

gtk_widget_override_cursor устарело начиная с версии 3.16 и не должно использоваться в новом коде.

Эта функция не полезна в контексте рендеринга на основе CSS. Если вы хотите изменить цвет, используемый для отображения первичного и вторичного курсоров, вы должны использовать пользовательский CSS-стиль через специфичный для приложения GtkStyleProvider и класс CSS-стиля.

Устанавливает цвет курсора, используемый в виджете, переопределяя свойства стиля cursor-color и secondary-cursor-color. Все остальные значения стиля остаются неизменными. См. также gtk_widget_modify_style().

Обратите внимание, что основополагающие свойства имеют тип GdkColor, поэтому значение альфа-канала в primary и secondary будет проигнорировано.

Параметры

widget

a GtkWidget

cursor

цвет, используемый для основного курсора (не нужно выделять), или NULL, чтобы отменить эффект предыдущих вызовов функции gtk_widget_override_cursor().

[allow-none]

secondary_cursor

цвет, используемый для вторичного курсора (не нужно выделять), или NULL, чтобы отменить эффект предыдущих вызовов функции gtk_widget_override_cursor().

[allow-none]

С: 3.0

gtk_widget_modify_style ()

void
gtk_widget_modify_style (GtkWidget *widget,
                         GtkRcStyle *style);

gtk_widget_modify_style устарело с версии 3.0 и не должно использоваться в новом коде.

Вместо этого используйте GtkStyleContext со своим GtkStyleProvider

Изменяет значения стиля виджета.

Изменения, внесённые с помощью этого метода, имеют приоритет над значениями стиля, заданными в файле RC, но они будут перезаписаны, если стиль явно задан для виджета с помощью gtk_widget_set_style(). GtkRcStyle разработан так, чтобы каждый элемент мог быть установлен или сброшен, поэтому с помощью этой функции можно изменить некоторые значения стиля, оставив другие без изменений.

Обратите внимание, что изменения, внесённые с помощью этой функции, не суммируются с предыдущими вызовами gtk_widget_modify_style() или такими функциями, как gtk_widget_modify_fg(). Если вы хотите сохранить предыдущие значения, сначала вызовите gtk_widget_get_modifier_style(), внесите изменения в возвращаемый стиль, а затем вызовите gtk_widget_modify_style() с этим стилем. С другой стороны, если вы сначала вызовете gtk_widget_modify_style(), последующие вызовы таких функций gtk_widget_modify_fg() будут суммировать эффект с начальными изменениями.

Параметры

widget

a GtkWidget

style

the GtkRcStyle содержащий изменения стиля

gtk_widget_get_modifier_style ()

GtkRcStyle *
gtk_widget_get_modifier_style (GtkWidget *widget);

gtk_widget_get_modifier_style устарело с версии 3.0 и не должно использоваться в новом коде.

Вместо этого используйте GtkStyleContext со своим GtkStyleProvider

Возвращает текущий стиль модификатора для виджета. (Как задано gtk_widget_modify_style().) Если стиль ранее не был задан, будет создан новый GtkRcStyle со всеми значениями, сброшенными как стиль модификатора для виджета. Если вы вносите изменения в этот rc-стиль, вы должны вызвать gtk_widget_modify_style(), передав возвращённый rc-стиль, чтобы убедиться, что ваши изменения вступят в силу.

Внимание: передача стиля обратно в gtk_widget_modify_style() обычно приводит к его уничтожению, потому что gtk_widget_modify_style() копирует переданный стиль и устанавливает копию в качестве нового стиля модификатора, тем самым удаляя любую ссылку на старый стиль модификатора. Добавьте ссылку на стиль модификатора, если хотите сохранить его.

Параметры

widget

a GtkWidget

Возвращаемое значение

стиль модификатора для виджета. Этот rc-стиль принадлежит виджету. Если вы хотите сохранить указатель на значение, вам нужно добавить счётчик ссылок, используя g_object_ref().

[transfer none]

gtk_widget_modify_fg ()

void
gtk_widget_modify_fg (GtkWidget *widget,
                      GtkStateType state,
                      const GdkColor *color);

gtk_widget_modify_fg устарело с версии 3.0 и не должно использоваться в новом коде.

Вместо этого используйте gtk_widget_override_color()

Устанавливает цвет переднего плана для виджета в определённом состоянии.

Все остальные значения стиля остаются неизменными. См. также gtk_widget_modify_style().

Параметры

widget

a GtkWidget

state

состояние, для которого устанавливается цвет переднего плана

color

присваиваемый цвет (не нужно выделять), или NULL для отмены эффекта предыдущих вызовов gtk_widget_modify_fg().

[allow-none]

gtk_widget_modify_bg ()

void
gtk_widget_modify_bg (GtkWidget *widget,
                      GtkStateType state,
                      const GdkColor *color);

gtk_widget_modify_bg устарело с версии 3.0 и не должно использоваться в новом коде.

Вместо этого используйте gtk_widget_override_background_color()

Устанавливает цвет фона для виджета в определённом состоянии.

Все остальные значения стиля остаются неизменными. См. также gtk_widget_modify_style().

Обратите внимание, что виджеты «без окна» (у которых установлен флаг GTK_NO_WINDOW) рисуют на окне своего родителя и, следовательно, могут не рисовать фон сами. Так, например, обстоит дело с GtkLabel.

Чтобы изменить фон таких виджетов, вам нужно установить цвет фона на их родителя; если вы хотите установить цвет фона прямоугольной области вокруг метки, попробуйте поместить метку в виджет GtkEventBox и установить цвет фона на нём.

Параметры

widget

a GtkWidget

state

состояние, для которого устанавливается цвет фона

color

присваиваемый цвет (не нужно выделять), или NULL для отмены эффекта предыдущих вызовов gtk_widget_modify_bg().

[allow-none]

gtk_widget_modify_text ()

void
gtk_widget_modify_text (GtkWidget *widget,
                        GtkStateType state,
                        const GdkColor *color);

gtk_widget_modify_text устарело начиная с версии 3.0 и не должно использоваться в новом коде.

Используйте gtk_widget_override_color() вместо этого

Устанавливает цвет текста для виджета в определённом состоянии.

Все остальные значения стиля остаются без изменений. Цвет текста — это цвет переднего плана, используемый вместе с базовым цветом (см. gtk_widget_modify_base()) для виджетов, таких как GtkEntry и GtkTextView. См. также gtk_widget_modify_style().

Параметры

widget

a GtkWidget

state

состояние, для которого нужно установить цвет текста

color

присваиваемый цвет (не нужно выделять), или NULL для отмены эффекта предыдущих вызовов gtk_widget_modify_text().

[allow-none]

gtk_widget_modify_base ()

void
gtk_widget_modify_base (GtkWidget *widget,
                        GtkStateType state,
                        const GdkColor *color);

gtk_widget_modify_base устарело начиная с версии 3.0 и не должно использоваться в новом коде.

Используйте gtk_widget_override_background_color() вместо этого

Устанавливает базовый цвет виджета в определённом состоянии. Все остальные значения стиля остаются без изменений. Базовый цвет — это цвет фона, используемый вместе с цветом текста (см. gtk_widget_modify_text()) для виджетов, таких как GtkEntry и GtkTextView. См. также gtk_widget_modify_style().

Обратите внимание, что виджеты «без окна» (у которых установлен флаг GTK_NO_WINDOW) рисуют на окне родительского контейнера и, следовательно, могут не рисовать фон самостоятельно. Например, это относится к GtkLabel.

Чтобы изменить фон таких виджетов, нужно установить базовый цвет на их родительском виджете. Если вы хотите установить фон прямоугольной области вокруг метки, поместите метку в виджет GtkEventBox и установите базовый цвет для этого виджета.

Параметры

widget

a GtkWidget

state

состояние, для которого нужно установить базовый цвет

color

присваиваемый цвет (не нужно выделять), или NULL для отмены эффекта предыдущих вызовов gtk_widget_modify_base().

[allow-none]

gtk_widget_modify_font ()

void
gtk_widget_modify_font (GtkWidget *widget,
                        PangoFontDescription *font_desc);

gtk_widget_modify_font устарело начиная с версии 3.0 и не должно использоваться в новом коде.

Используйте gtk_widget_override_font() вместо этого

Устанавливает шрифт для использования виджетом.

Все остальные значения стиля остаются без изменений. См. также gtk_widget_modify_style().

Параметры

widget

a GtkWidget

font_desc

описание шрифта для использования, или NULL для отмены эффекта предыдущих вызовов gtk_widget_modify_font().

[allow-none]

gtk_widget_modify_cursor ()

void
gtk_widget_modify_cursor (GtkWidget *widget,
                          const GdkColor *primary,
                          const GdkColor *secondary);

gtk_widget_modify_cursor устарело начиная с версии 3.0 и не должно использоваться в новом коде.

Используйте gtk_widget_override_cursor() вместо этого.

Устанавливает цвет курсора для использования в виджете, перезаписывая свойства стиля GtkWidget cursor-color и secondary-cursor-color.

Все остальные значения стиля остаются без изменений. См. также gtk_widget_modify_style().

Параметры

widget

a GtkWidget

primary

цвет для первичного курсора (не нужно выделять), или NULL для отмены эффекта предыдущих вызовов gtk_widget_modify_cursor().

[nullable]

secondary

цвет для вторичного курсора (не нужно выделять), или NULL для отмены эффекта предыдущих вызовов gtk_widget_modify_cursor().

[nullable]

С: 2.12

gtk_widget_create_pango_context ()

PangoContext *
gtk_widget_create_pango_context (GtkWidget *widget);

Создаёт новый PangoContext с соответствующей картой шрифтов, опциями шрифтов, описанием шрифта и основным направлением для рисования текста для данного виджета. См. также gtk_widget_get_pango_context().

Параметры

widget

a GtkWidget

Возвращаемое значение

новый PangoContext.

[transfer full]

gtk_widget_get_pango_context ()

PangoContext *
gtk_widget_get_pango_context (GtkWidget *widget);

Получает PangoContext с соответствующей картой шрифтов, описанием шрифта и основным направлением для данного виджета. В отличие от контекста, возвращаемого функцией gtk_widget_create_pango_context(), этот контекст принадлежит виджету (его можно использовать до тех пор, пока не изменится экран для виджета или виджет не будет удален из его верхнего уровня), и он будет обновлен в соответствии с любыми изменениями атрибутов виджета. Это можно отслеживать, используя сигнал “screen-changed” для виджета.

Параметры

widget

a GtkWidget

Возвращаемое значение

PangoContext для виджета.

[transfer none]

gtk_widget_set_font_options ()

void
gtk_widget_set_font_options (GtkWidget *widget,
                             const cairo_font_options_t *options);

Устанавливает cairo_font_options_t, используемые для рендеринга Pango в этом виджете. Если не установлено, будут использоваться параметры шрифта по умолчанию для GdkScreen.

Параметры

widget

a GtkWidget

options

a cairo_font_options_t, или NULL для сброса ранее установленных параметров шрифта по умолчанию.

[allow-none]

С: 3.18

gtk_widget_get_font_options ()

const cairo_font_options_t *
gtk_widget_get_font_options (GtkWidget *widget);

Возвращает cairo_font_options_t, используемые для рендеринга Pango. Если не установлено, будут использованы параметры шрифта по умолчанию для GdkScreen.

Параметры

widget

a GtkWidget

Возвращаемое значение

cairo_font_options_t или NULL, если не установлено.

[transfer none][nullable]

С: 3.18

gtk_widget_set_font_map ()

void
gtk_widget_set_font_map (GtkWidget *widget,
                         PangoFontMap *font_map);

Устанавливает карту шрифтов для использования при рендеринге Pango. Если не установлено, виджет унаследует карту шрифтов от своего родителя.

Параметры

widget

a GtkWidget

font_map

PangoFontMap, или NULL для сброса ранее установленной карты шрифтов.

[allow-none]

С: 3.18

gtk_widget_get_font_map ()

PangoFontMap *
gtk_widget_get_font_map (GtkWidget *widget);

Получает карту шрифтов, установленную с помощью gtk_widget_set_font_map().

Параметры

widget

a GtkWidget

Возвращаемое значение

PangoFontMap или NULL.

[transfer none][nullable]

С: 3.18

gtk_widget_create_pango_layout ()

PangoLayout *
gtk_widget_create_pango_layout (GtkWidget *widget,
                                const gchar *text);

Создает новый PangoLayout с соответствующей картой шрифтов, описанием шрифта и основным направлением для отображения текста для этого виджета.

Если вы сохраняете PangoLayout, созданный таким образом, вам нужно его пересоздать, когда PangoContext виджета заменяется. Это можно отследить, используя сигнал “screen-changed” виджета.

Параметры

widget

a GtkWidget

text

текст для установки в макете (может быть NULL).

[nullable]

Возвращаемое значение

новый PangoLayout.

[transfer full]

gtk_widget_render_icon ()

GdkPixbuf *
gtk_widget_render_icon (GtkWidget *widget,
                        const gchar *stock_id,
                        GtkIconSize size,
                        const gchar *detail);

gtk_widget_render_icon устарел начиная с версии 3.0 и не должен использоваться в новом коде.

Используйте gtk_widget_render_icon_pixbuf() вместо этого.

Вспомогательная функция, которая использует настройки темы для widget для поиска stock_id и отрисовки его в pixbuf. stock_id должен быть идентификатором значка по умолчанию, таким как GTK_STOCK_OPEN или GTK_STOCK_OK. size должен быть размером, таким как GTK_ICON_SIZE_MENU. detail должна быть строкой, которая идентифицирует виджет или код, выполняющий отрисовку, чтобы движки темы могли обрабатывать отрисовку для этого виджета или кода.

Пиксели в возвращаемом GdkPixbuf совместно используются с остальной частью приложения и не должны изменяться. Pixbuf следует освободить после использования с помощью g_object_unref().

Параметры

widget

a GtkWidget

stock_id

идентификатор значка

size

размер значка (GtkIconSize). Значение (GtkIconSize)-1 означает отрисовку в размере источника без масштабирования (если есть несколько размеров источника, GTK+ выбирает один из доступных размеров).

[type int]

detail

детали отрисовки для передачи в движок темы.

[allow-none]

Возвращает

новый pixbuf или NULL, если идентификатор значка не был найден.

[transfer full]

gtk_widget_render_icon_pixbuf ()

GdkPixbuf *
gtk_widget_render_icon_pixbuf (GtkWidget *widget,
                               const gchar *stock_id,
                               GtkIconSize size);

gtk_widget_render_icon_pixbuf устарел начиная с версии 3.10 и не должен использоваться в новом коде.

Используйте gtk_icon_theme_load_icon() вместо этого.

Удобная функция, которая использует движок темы и настройки стиля для widget, чтобы найти stock_id и отобразить его в pixbuf. stock_id должен быть идентификатором значка по умолчанию, таким как GTK_STOCK_OPEN или GTK_STOCK_OK. size должен быть размером, таким как GTK_ICON_SIZE_MENU.

Пиксели в возвращаемом GdkPixbuf совместно используются с остальной частью приложения и не должны изменяться. Pixbuf следует освободить после использования с помощью g_object_unref().

Параметры

widget

a GtkWidget

stock_id

идентификатор значка

size

размер значка (GtkIconSize). Значение (GtkIconSize)-1 означает отрисовку в размере источника без масштабирования (если есть несколько размеров источника, GTK+ выбирает один из доступных размеров).

[type int]

Возвращает

новый pixbuf или NULL, если идентификатор значка не был найден.

[transfer full][nullable]

С: 3.0

gtk_widget_pop_composite_child ()

void
gtk_widget_pop_composite_child (void);

gtk_widget_pop_composite_child устарел начиная с версии 3.10 и не должен использоваться в новом коде.

Используйте gtk_widget_class_set_template() или не используйте эту API вообще.

Отменяет действие предыдущего вызова gtk_widget_push_composite_child().

gtk_widget_push_composite_child ()

void
gtk_widget_push_composite_child (void);

gtk_widget_push_composite_child устарел начиная с версии 3.10 и не должен использоваться в новом коде.

Эта API никогда не работала хорошо и была в основном неиспользуемой. Теперь у нас есть более полная система для составных дочерних элементов, см. gtk_widget_class_set_template().

Делает все вновь созданные виджеты составными дочерними элементами до соответствующего вызова gtk_widget_pop_composite_child().

Составной дочерний элемент — это дочерний элемент, являющийся деталью реализации контейнера, в котором он находится, и который не должен быть видим пользователями контейнера. Составные дочерние элементы не обрабатываются GTK+ по-другому (но см. gtk_container_foreach() против gtk_container_forall()), но, например, создатели графического интерфейса могут захотеть обработать их по-другому.

gtk_widget_queue_draw_area ()

void
gtk_widget_queue_draw_area (GtkWidget *widget,
                            gint x,
                            gint y,
                            gint width,
                            gint height);

Вспомогательная функция, которая вызывает gtk_widget_queue_draw_region() на области, созданной из заданных координат.

Здесь область задается в координатах виджета. Координаты виджета немного необычны; по историческим причинам они определяются как widget->window координаты для виджетов, которые возвращают TRUE для gtk_widget_get_has_window(), и относятся к widget->allocation.x , widget->allocation.y в противном случае.

width или height могут быть 0, в этом случае эта функция ничего не делает. Отрицательные значения для width и height запрещены.

Параметры

widget

a GtkWidget

x

координата x верхнего левого угла прямоугольника для перерисовки

y

координата y верхнего левого угла прямоугольника для перерисовки

width

ширина области для отрисовки

height

высота области для отрисовки

gtk_widget_queue_draw_region ()

void
gtk_widget_queue_draw_region (GtkWidget *widget,
                              const cairo_region_t *region);

Отмечает область widget, определённую параметром region, для перерисовки, вызвав gdk_window_invalidate_region() в окне виджета и всех его дочерних окон. После того, как основной цикл станет бездействующим (после обработки текущей партии событий), окно получит события expose для объединения всех отмеченных областей.

Обычно эта функция используется только в реализациях виджетов. Также её можно использовать для планирования перерисовки GtkDrawingArea или его части.

Параметры

widget

виджет GtkWidget

region

область для перерисовки

С версии: 3.0

gtk_widget_set_app_paintable ()

void
gtk_widget_set_app_paintable (GtkWidget *widget,
                              gboolean app_paintable);

Устанавливает, будет ли приложение рисовать на виджете в обработчике события “draw”.

Это подсказка для виджета и не влияет на поведение ядра GTK+; многие виджеты полностью игнорируют этот флаг. Для виджетов, которые обращают внимание на этот флаг, таких как GtkEventBox и GtkWindow, эффект заключается в подавлении стандартного рисования фоном виджета темой. (Дети виджета всё ещё будут отрисовываться). Затем приложение полностью отвечает за отрисовку фона виджета.

Обратите внимание, что фон всё ещё отрисовывается, когда виджет отображается.

Параметры

widget

виджет GtkWidget

app_paintable

TRUE, если приложение будет рисовать на виджете

gtk_widget_set_double_buffered ()

void
gtk_widget_set_double_buffered (GtkWidget *widget,
                                gboolean double_buffered);

gtk_widget_set_double_buffered устарел с версии 3.14 и не должен использоваться в новом коде.

Эта функция не работает с бекендами, отличными от X11, или с неродными окнами. Она не должна использоваться в новом коде.

Виджеты по умолчанию с двойной буферизацией; вы можете использовать эту функцию, чтобы отключить буферизацию. «Двойная буферизация» просто означает, что gdk_window_begin_paint_region() и gdk_window_end_paint() вызываются автоматически вокруг событий expose, отправленных в виджет. gdk_window_begin_paint_region() перенаправляет всё рисование в окно виджета на буфер без отображения, и gdk_window_end_paint() отображает буфер на экран. Результат заключается в том, что пользователи видят обновление окна за один плавный шаг, и не видят отдельных графических примитивов, которые рендерятся.

Проще говоря, виджеты с двойной буферизацией не мерцают, поэтому вы будете использовать эту функцию только для отключения двойной буферизации, если у вас есть особые потребности и вы действительно знаете, что делаете.

Примечание: если вы отключаете двойную буферизацию, вы должны обработать события expose, так как даже очистка до фонового цвета или растрового изображения не будет происходить автоматически (как это делается в gdk_window_begin_paint_region()).

В GTK и GDK 3.10 была перестроена для полупрозрачного рисования. С тех пор события expose для виджетов с двойной буферизацией сводятся к одному событию для верхнего GDK окна. Если вы теперь отключаете двойную буферизацию, вы вызовете отдельный этап рендеринга для каждого виджета. Это, вероятно, вызовет проблемы с рендерингом (в частности, связанные со стекированием) и, как правило, значительно увеличивает время рендеринга.

Параметры

widget

виджет GtkWidget

double_buffered

TRUE для двойной буферизации виджета

gtk_widget_set_redraw_on_allocate ()

void
gtk_widget_set_redraw_on_allocate (GtkWidget *widget,
                                   gboolean redraw_on_allocate);

Устанавливает, будет ли весь виджет помещён в очередь для перерисовки при изменении его размера. По умолчанию это значение TRUE, и весь виджет перерисовывается при каждом изменении размера. Если ваш виджет оставляет верхний левый угол неизменным, когда он становится больше, отключение этого параметра улучшит производительность.

Обратите внимание, что для виджетов, где gtk_widget_get_has_window() равно FALSE, установка этого флага в FALSE отключает все выделения при изменении размера: виджет даже не перерисуется, если его положение изменится; это позволяет контейнерам, которые ничего не рисуют, избегать избыточных отметок для перерисовки. Если вы установите этот флаг на виджет без окна, который рисует на widget->window, вы несёте ответственность за выделение как старого, так и нового выделения виджета при перемещении виджета и за выделение новых областей, когда размер виджета увеличивается.

Параметры

widget

виджет GtkWidget

redraw_on_allocate

если TRUE, весь виджет будет перерисован, когда он назначен на новый размер. В противном случае, будет перерисован только новый фрагмент виджета.

gtk_widget_set_composite_name ()

void
gtk_widget_set_composite_name (GtkWidget *widget,
                               const gchar *name);

gtk_widget_set_composite_name устарел с версии 3.10 и не должен использоваться в новом коде.

Используйте gtk_widget_class_set_template(), или вообще не используйте эту API.

Устанавливает составное имя виджета. Виджет должен быть составным потомком своего родителя; см. gtk_widget_push_composite_child().

Параметры

widget

виджет GtkWidget.

name

имя для установки

gtk_widget_mnemonic_activate ()

gboolean
gtk_widget_mnemonic_activate (GtkWidget *widget,
                              gboolean group_cycling);

Вызывает событие “mnemonic-activate”.

Обработчик по умолчанию для этого события активирует widget, если group_cycling равно FALSE, и просто получает фокус, если group_cycling равно TRUE.

Параметры

widget

виджет GtkWidget

group_cycling

TRUE, если существуют другие виджеты с тем же mnemonic

Возвращает

TRUE, если событие было обработано

gtk_widget_class_install_style_property ()

void
gtk_widget_class_install_style_property
                               (GtkWidgetClass *klass,
                                GParamSpec *pspec);

Устанавливает свойство стиля для класса виджета. Парсер для свойства стиля определяется типом значения pspec .

Параметры

klass

a GtkWidgetClass

pspec

the GParamSpec для свойства

gtk_widget_class_install_style_property_parser ()

void
gtk_widget_class_install_style_property_parser
                               (GtkWidgetClass *klass,
                                GParamSpec *pspec,
                                GtkRcPropertyParser parser);

Устанавливает свойство стиля для класса виджета.

[skip]

Параметры

klass

a GtkWidgetClass

pspec

the GParamSpec для свойства стиля

parser

парсер для свойства стиля

gtk_widget_class_find_style_property ()

GParamSpec *
gtk_widget_class_find_style_property (GtkWidgetClass *klass,
                                      const gchar *property_name);

Находит свойство стиля класса виджета по имени.

Параметры

klass

a GtkWidgetClass

property_name

имя свойства стиля для поиска

Возвращает

the GParamSpec свойства стиля или NULL, если у class нет свойства стиля с таким именем.

[transfer none]

С: 2.2

gtk_widget_class_list_style_properties ()

GParamSpec **
gtk_widget_class_list_style_properties
                               (GtkWidgetClass *klass,
                                guint *n_properties);

Возвращает все свойства стиля класса виджета.

Параметры

klass

a GtkWidgetClass

n_properties

место для возврата количества найденных свойств стиля.

[out]

Возвращает

динамически выделенный массив GParamSpec*. Массив необходимо освободить с помощью g_free().

[array length=n_properties][transfer container]

С: 2.2

gtk_widget_region_intersect ()

cairo_region_t *
gtk_widget_region_intersect (GtkWidget *widget,
                             const cairo_region_t *region);

gtk_widget_region_intersect устарел с версии 3.14 и не должен использоваться в новых кодах.

Используйте gtk_widget_get_allocation() и cairo_region_intersect_rectangle() для получения аналогичного поведения.

Вычисляет пересечение области widget и region , возвращая пересечение. Результат может быть пустым, используйте cairo_region_is_empty() для проверки.

Параметры

widget

a GtkWidget

region

a cairo_region_t, в той же системе координат, что и widget->allocation . То есть, относительно widget->window для виджетов, которые возвращают FALSE из gtk_widget_get_has_window(); относительно родительского окна widget->window в противном случае.

Возвращает

Динамически выделенная область, содержащая пересечение widget и region .

gtk_widget_send_expose ()

gint
gtk_widget_send_expose (GtkWidget *widget,
                        GdkEvent *event);

Функция, которую очень редко используют. Эта функция используется для отправки события expose на виджет. Эту функцию обычно не используют напрямую. Единственный случай её использования — при распространении события expose на виджет без окна (gtk_widget_get_has_window() — FALSE), и это обычно выполняется с помощью gtk_container_propagate_draw().

Если вы хотите принудительно перерисовать область окна, используйте gdk_window_invalidate_rect() или gdk_window_invalidate_region(). Чтобы заставить перерисовку выполняться немедленно, вызовите gdk_window_process_updates() после этого вызова.

Параметры

widget

a GtkWidget

event

a expose GdkEvent

Возвращает

результат от отправки сигнала события (TRUE, если событие было обработано)

gtk_widget_send_focus_change ()

gboolean
gtk_widget_send_focus_change (GtkWidget *widget,
                              GdkEvent *event);

Отправляет событие изменения фокуса event в widget

Эта функция не предназначена для использования приложениями. Единственный случай её использования — когда необходимо, чтобы GtkWidget назначил фокус виджету, который семантически принадлежит первому виджету, даже если он не является прямым потомком — например, строке поиска в плавающем окне, подобном быстрому поиску в GtkTreeView.

Пример его использования:

Параметры

widget

a GtkWidget

event

a GdkEvent типа GDK_FOCUS_CHANGE

Возвращает

возвращаемое значение от отправки сигнала события: TRUE, если событие было обработано, и FALSE в противном случае

С: 2.20

gtk_widget_style_get ()

void
gtk_widget_style_get (GtkWidget *widget,
                      const gchar *first_property_name,
                      ...);

Получает значения нескольких свойств стиля widget .

Параметры

widget

a GtkWidget

first_property_name

имя первого свойства для получения

...

пары имён свойств и местоположений для возврата значений свойств, начиная с местоположения для first_property_name , завершающиеся NULL.

gtk_widget_style_get_property ()

void
gtk_widget_style_get_property (GtkWidget *widget,
                               const gchar *property_name,
                               GValue *value);

Получает значение свойства стиля widget .

Параметры

widget

a GtkWidget

property_name

имя свойства стиля

value

местоположение для возврата значения свойства

gtk_widget_style_get_valist ()

void
gtk_widget_style_get_valist (GtkWidget *widget,
                             const gchar *first_property_name,
                             va_list var_args);

Вариант без использования переменных аргументов функции gtk_widget_style_get(). Используется в основном для языковых библиотек.

Параметры

widget

a GtkWidget

first_property_name

имя первого свойства для получения

var_args

va_list пар имён свойств и местоположений для возврата значений свойств, начиная с местоположения для first_property_name .

gtk_widget_style_attach ()

void
gtk_widget_style_attach (GtkWidget *widget);

gtk_widget_style_attach устарела с версии 3.0 и не должна использоваться в новом коде.

Этот шаг не нужен с GtkStyleContext.

Эта функция прикрепляет стиль виджета GtkStyle к окну виджета GdkWindow. Она является заменой

и должна вызываться только в реализации «realize» производного виджета, которая не вызывает реализацию «realize» родительского класса, поскольку один из родительских классов (в конечном итоге GtkWidget) прикрепит сам стиль.

Параметры

widget

a GtkWidget

С: 2.20

gtk_widget_class_set_accessible_type ()

void
gtk_widget_class_set_accessible_type (GtkWidgetClass *widget_class,
                                      GType type);

Устанавливает тип, используемый для создания объектов доступности для виджетов widget_class . Указанный type должен быть подтипом типа, используемого для объектов доступности родительского класса.

Эта функция должна вызываться только из функций инициализации класса виджетов.

Параметры

widget_class

класс, для которого устанавливается тип доступности

type

Тип объекта, реализующего доступность для widget_class

С: 3.2

gtk_widget_class_set_accessible_role ()

void
gtk_widget_class_set_accessible_role (GtkWidgetClass *widget_class,
                                      AtkRole role);

Устанавливает значение по умолчанию AtkRole для объектов доступности, создаваемых для виджетов widget_class . Объекты доступности могут принять решение не придерживаться этого параметра, если их информация о роли более точная. Вызовы gtk_widget_class_set_accessible_type() сбросят это значение.

В случаях, когда вам нужен более точный контроль над ролью объектов доступности, созданных для widget_class, вы должны предоставить свой собственный тип доступности и использовать gtk_widget_class_set_accessible_type() вместо этого.

Если role равно ATK_ROLE_INVALID, значение по умолчанию для роли не изменится, и вместо него будет использоваться значение по умолчанию для объекта доступности.

Эта функция должна вызываться только из функций инициализации класса виджетов.

Параметры

widget_class

класс, для которого устанавливается роль доступности

role

Роль, используемая для объектов доступности, создаваемых для widget_class

С: 3.2

gtk_widget_get_accessible ()

AtkObject *
gtk_widget_get_accessible (GtkWidget *widget);

Возвращает объект доступности, описывающий виджет для программы с поддержкой вспомогательных технологий.

Если поддержка доступности недоступна, этот экземпляр AtkObject может быть бесполезным. Также, если для экземпляра виджета в вопросе не доступна реализация AtkObject для данного класса, он будет наследовать реализацию AtkObject от первого предкового класса, для которого такая реализация определена.

Документация библиотеки ATK содержит дополнительную информацию об объектах доступности и их использовании.

Параметры

widget

a GtkWidget

Возвращаемое значение

ассоциированный с widget объект AtkObject .

[передача none]

gtk_widget_child_focus ()

gboolean
gtk_widget_child_focus (GtkWidget *widget,
                        GtkDirectionType direction);

Эта функция используется реализациями пользовательских виджетов; если вы пишете приложение, вы бы использовали gtk_widget_grab_focus(), чтобы переместить фокус на конкретный виджет, и gtk_container_set_focus_chain(), чтобы изменить порядок переключения фокуса. Поэтому вам, возможно, стоит рассмотреть эти функции вместо.

gtk_widget_child_focus() вызывается контейнерами, когда пользователь перемещает фокус по окну с помощью сочетаний клавиш. direction указывает, какой вид движения происходит (вверх, вниз, влево, вправо, табуляция вперёд, табуляция назад). gtk_widget_child_focus() излучает сигнал “focus”; виджеты переопределяют обработчик по умолчанию для этого сигнала, чтобы реализовать соответствующее поведение фокуса.

Обработчик ::focus по умолчанию для виджета должен возвращать TRUE, если перемещение в direction оставило фокус на фокусируемом элементе внутри этого виджета, и FALSE, если перемещение в direction вывело фокус за пределы виджета. Если возвращается TRUE, виджеты обычно вызывают gtk_widget_grab_focus(), чтобы соответственно установить фокус; если возвращается FALSE, они не изменяют текущее местоположение фокуса.

Параметры

widget

a GtkWidget

direction

направление перемещения фокуса

Возвращаемое значение

TRUE, если фокус оказался внутри widget

gtk_widget_child_notify ()

void
gtk_widget_child_notify (GtkWidget *widget,
                         const gchar *child_property);

Излучает сигнал “child-notify” для свойства дочернего элемента child_property в widget .

Это аналог g_object_notify() для свойств дочерних элементов.

Также см. gtk_container_child_notify().

Параметры

widget

a GtkWidget

child_property

имя свойства дочернего элемента, установленного для класса родителя widget

gtk_widget_freeze_child_notify ()

void
gtk_widget_freeze_child_notify (GtkWidget *widget);

Останавливает излучение сигналов “child-notify” для widget. Сигналы будут в очереди до вызова gtk_widget_thaw_child_notify() для widget.

Это аналог g_object_freeze_notify() для свойств дочерних элементов.

Параметры

widget

a GtkWidget

gtk_widget_get_child_visible ()

gboolean
gtk_widget_get_child_visible (GtkWidget *widget);

Получает значение, установленное с помощью gtk_widget_set_child_visible(). Если вам кажется необходимым использовать эту функцию, ваш код, вероятно, нуждается в перестройке.

Эта функция полезна только для реализации контейнеров и никогда не должна вызываться приложением.

Параметры

widget

a GtkWidget

Возвращаемое значение

TRUE, если виджет отображается вместе с родителем.

gtk_widget_get_parent ()

GtkWidget *
gtk_widget_get_parent (GtkWidget *widget);

Возвращает родительский контейнер widget.

Параметры

widget

a GtkWidget

Возвращаемое значение

родительский контейнер widget или NULL.

[transfer none][nullable]

gtk_widget_get_settings ()

GtkSettings *
gtk_widget_get_settings (GtkWidget *widget);

Получает объект настроек, содержащий настройки, используемые для этого виджета.

Обратите внимание, что эту функцию можно вызывать только когда GtkWidget прикреплён к верхнему уровню, так как объект настроек специфичен для конкретного GdkScreen.

Параметры

widget

a GtkWidget

Возвращаемое значение

соответствующий объект GtkSettings.

[transfer none]

gtk_widget_get_clipboard ()

GtkClipboard *
gtk_widget_get_clipboard (GtkWidget *widget,
                          GdkAtom selection);

Возвращает объект буфера обмена для заданного выделения, который будет использоваться с widget. widget должен иметь связанный с ним GdkDisplay, поэтому должен быть прикреплён к окну верхнего уровня.

Параметры

widget

a GtkWidget

selection

a GdkAtom который идентифицирует буфер обмена для использования. GDK_SELECTION_CLIPBOARD задаёт стандартный буфер обмена. Другое часто используемое значение — GDK_SELECTION_PRIMARY, которое задаёт первичное X-выделение.

Возвращаемое значение

соответствующий объект буфера обмена. Если буфер обмена ещё не существует, он будет создан. После создания объект буфера обмена сохраняется всегда.

[transfer none]

Since: 2.2

gtk_widget_get_display ()

GdkDisplay *
gtk_widget_get_display (GtkWidget *widget);

Получение GdkDisplay для главного окна, связанного с этим виджетом. Данную функцию можно вызывать только после того, как виджет был добавлен в иерархию виджетов с GtkWindow вверху.

В целом, следует создавать ресурсы, специфичные для дисплея, только когда виджет был реализован, и освобождать эти ресурсы при разреализации виджета.

Параметры

widget

a GtkWidget

Возвращаемое значение

GdkDisplay для главного окна для данного виджета.

[transfer none]

С версии: 2.2

gtk_widget_get_root_window ()

GdkWindow *
gtk_widget_get_root_window (GtkWidget *widget);

gtk_widget_get_root_window устарела с версии 3.12 и не должна использоваться в новом коде.

Используйте gdk_screen_get_root_window() вместо этого.

Получение корневого окна, где расположен этот виджет. Данную функцию можно вызывать только после того, как виджет был добавлен в иерархию виджетов с GtkWindow вверху.

Корневое окно полезно для создания всплывающего GdkWindow, связанного с окном. В целом, следует создавать ресурсы, специфичные для дисплея, только когда виджет был реализован, и освобождать эти ресурсы при разрeализации виджета.

Параметры

widget

a GtkWidget

Возвращаемое значение

корневое GdkWindow окно для главного окна для этого виджета.

[transfer none]

С версии: 2.2

gtk_widget_get_screen ()

GdkScreen *
gtk_widget_get_screen (GtkWidget *widget);

Получение GdkScreen из главного окна, связанного с этим виджетом. Данную функцию можно вызывать только после того, как виджет был добавлен в иерархию виджетов с GtkWindow вверху.

В целом, следует создавать ресурсы, специфичные для экрана, только когда виджет был реализован, и освобождать эти ресурсы при разрeализации виджета.

Параметры

widget

a GtkWidget

Возвращаемое значение

GdkScreen для главного окна для этого виджета.

[transfer none]

С версии: 2.2

gtk_widget_has_screen ()

gboolean
gtk_widget_has_screen (GtkWidget *widget);

Проверка, связан ли с этим виджетом GdkScreen. У всех виджетов верхнего уровня есть связанный экран, и у всех виджетов, добавленных в иерархию с окном верхнего уровня, тоже.

Параметры

widget

a GtkWidget

Возвращаемое значение

TRUE, если с виджетом связан GdkScreen.

С версии: 2.2

gtk_widget_get_size_request ()

void
gtk_widget_get_size_request (GtkWidget *widget,
                             gint *width,
                             gint *height);

Получение запрошенных размеров виджета, которые были явно заданы с помощью gtk_widget_set_size_request(). Значение -1, хранящееся в width или height, указывает, что эта размерность не была явно задана, и вместо этого будет использоваться естественный запрос виджета. См. gtk_widget_set_size_request(). Для получения размера, который виджет запросит на самом деле, вызовите gtk_widget_get_preferred_size() вместо этой функции.

Параметры

widget

a GtkWidget

width

место для возвращаемой ширины, или NULL.

[out][allow-none]

height

место для возвращаемой высоты, или NULL.

[out][allow-none]

gtk_widget_set_child_visible ()

void
gtk_widget_set_child_visible (GtkWidget *widget,
                              gboolean is_visible);

Устанавливает, должен ли widget отображаться вместе со своим родителем, когда родитель отображается, и widget был показан с помощью gtk_widget_show().

Видимость дочернего элемента можно установить для виджета до его добавления в контейнер с помощью gtk_widget_set_parent(), чтобы избежать ненужного отображения дочерних элементов перед их немедленным скрытием. Однако она будет сброшена до своего исходного состояния TRUE при удалении виджета из контейнера.

Обратите внимание, что изменение видимости дочернего виджета не вызывает перерасчет размера виджета. В большинстве случаев размер виджета вычисляется из всех видимых дочерних элементов, отображаются ли они или нет. Если это не так, контейнер может сам вызвать перерасчет размера.

Эта функция полезна только для реализации контейнеров и никогда не должна вызываться приложением.

Параметры

widget

a GtkWidget

is_visible

если TRUE, widget должен отображаться вместе с родителем.

gtk_widget_set_size_request ()

void
gtk_widget_set_size_request (GtkWidget *widget,
                             gint width,
                             gint height);

Устанавливает минимальный размер виджета; то есть, запрос размера виджета будет как минимум width по height. Вы можете использовать эту функцию, чтобы принудительно сделать виджет больше, чем обычно.

В большинстве случаев, gtk_window_set_default_size() является лучшим выбором для окон верхнего уровня, чем эта функция; установка размера по умолчанию всё ещё позволит пользователям уменьшать окно. Установка запрошенного размера заставит их оставить окно по крайней мере таким же большим, как запрос размера. При работе с размерами окон, gtk_window_set_geometry_hints() также может быть полезной функцией.

Обратите внимание на потенциальную опасность установки любого фиксированного размера — темы, переводы на другие языки, разные шрифты и действия пользователя могут изменить подходящий размер для данного виджета. Таким образом, практически невозможно захардкодить размер, который всегда будет правильным.

Запрос размера виджета — это наименьший размер, который виджет может принять, сохраняя при этом хорошую работу и правильное отображение. Однако в некоторых странных случаях виджету может быть выделено меньше места, чем запрошенного, и во многих случаях виджету может быть выделено больше места, чем он запросил.

Если запрос размера в данном направлении равен -1 (не задан), то вместо него будет использован «естественный» запрос размера виджета.

Запрос размера, установленный здесь, не включает отступы от свойств GtkWidget margin-left, margin-right, margin-top и margin-bottom, но включает практически все другие свойства отступа или границы, установленные любым подклассом GtkWidget.

Параметры

widget

a GtkWidget

width

ширина, которую widget должен запросить, или -1 для сброса

height

высота, которую widget должен запросить, или -1 для сброса

gtk_widget_thaw_child_notify ()

void
gtk_widget_thaw_child_notify (GtkWidget *widget);

Отменяет действие предыдущего вызова gtk_widget_freeze_child_notify(). Это заставляет все очереди сигналов “child-notify” на widget быть отправленными.

Параметры

widget

a GtkWidget

gtk_widget_set_no_show_all ()

void
gtk_widget_set_no_show_all (GtkWidget *widget,
                            gboolean no_show_all);

Устанавливает свойство “no-show-all”, которое определяет, будут ли вызовы gtk_widget_show_all() влиять на этот виджет.

Это в основном используется для построения иерархии виджетов с внешним управлением видимостью, см. GtkUIManager.

Параметры

widget

a GtkWidget

no_show_all

новое значение для свойства “no-show-all”

С: 2.4

gtk_widget_get_no_show_all ()

gboolean
gtk_widget_get_no_show_all (GtkWidget *widget);

Возвращает текущее значение свойства “no-show-all”, которое определяет, будут ли вызовы gtk_widget_show_all() влиять на этот виджет.

Параметры

widget

a GtkWidget

Возвращает

текущее значение свойства “no-show-all”.

С: 2.4

gtk_widget_list_mnemonic_labels ()

GList *
gtk_widget_list_mnemonic_labels (GtkWidget *widget);

Возвращает новый список виджетов, обычно меток, для которых этот виджет является целевым для мнемонического кода (см., например, gtk_label_set_mnemonic_widget()).

Виджеты в списке не ссылаются индивидуально. Если вы хотите перебрать список и выполнить действия, связанные с обратными вызовами, которые могут уничтожить виджеты, вы должны сначала вызвать g_list_foreach (result, (GFunc)g_object_ref, NULL), а затем убрать ссылки со всех виджетов.

Параметры

widget

a GtkWidget

Возвращает

список мнемонических меток; освободите этот список с помощью g_list_free(), когда вы закончите с ним.

[element-type GtkWidget][transfer container]

С: 2.4

gtk_widget_add_mnemonic_label ()

void
gtk_widget_add_mnemonic_label (GtkWidget *widget,
                               GtkWidget *label);

Добавляет виджет в список мнемонических меток для этого виджета. (См. gtk_widget_list_mnemonic_labels()). Обратите внимание, что список мнемонических меток для виджета очищается при уничтожении виджета, поэтому вызывающий должен позаботиться об обновлении своего внутреннего состояния в этот момент, используя подключение к сигналу “destroy” или слабый нотификатор.

Параметры

widget

a GtkWidget

label

a GtkWidget, который действует как мнемоническая метка для widget

С: 2.4

gtk_widget_remove_mnemonic_label ()

void
gtk_widget_remove_mnemonic_label (GtkWidget *widget,
                                  GtkWidget *label);

Удаляет виджет из списка мнемонических меток для этого виджета. (См. gtk_widget_list_mnemonic_labels()). Виджет должен был быть добавлен в список с помощью gtk_widget_add_mnemonic_label().

Параметры

widget

a GtkWidget

label

a GtkWidget, который был ранее установлен в качестве мнемонической метки для widget с помощью gtk_widget_add_mnemonic_label().

С: 2.4

gtk_widget_is_composited ()

gboolean
gtk_widget_is_composited (GtkWidget *widget);

Указывает, может ли widget полагаться на правильное отображение его альфа-канала. В X11 эта функция возвращает, запущен ли менеджер композитинга для экрана widget.

Обратите внимание, что семантика этого вызова изменится в будущем, если он используется с виджетом, который имеет композиционное окно в своей иерархии (как установлено с помощью gdk_window_set_composited()).

Параметры

widget

a GtkWidget

Возвращает

TRUE, если виджет может полагаться на корректное отображение его альфа-канала.

С: 2.10

gtk_widget_error_bell ()

void
gtk_widget_error_bell (GtkWidget *widget);

Уведомляет пользователя об ошибке, связанной с вводом, на данном виджете. Если значение настройки “gtk-error-bell” равно TRUE, вызывается gdk_window_beep(), в противном случае ничего не делается.

Обратите внимание, что действие gdk_window_beep() может быть настроено различными способами, в зависимости от оконного бэкенда и используемой среды рабочего стола или менеджера окон.

Параметры

widget

a GtkWidget

С версии: 2.12

gtk_widget_keynav_failed ()

gboolean
gtk_widget_keynav_failed (GtkWidget *widget,
                          GtkDirectionType direction);

Эта функция должна вызываться всякий раз, когда навигация по клавиатуре внутри отдельного виджета достигает границы. Функция генерирует сигнал “keynav-failed” на виджете, и значение возврата должно интерпретироваться подобно значению возврата gtk_widget_child_focus():

Если возвращается TRUE, оставайтесь в пределах виджета; навигация по клавиатуре завершилась успешно или нет необходимости/невозможно перемещать фокус.

Если возвращается FALSE, вызывающий код должен продолжить навигацию по клавиатуре за пределами виджета, например, вызвав gtk_widget_child_focus() на главном виджете.

По умолчанию обработчик ::keynav-failed возвращает TRUE для GTK_DIR_TAB_FORWARD и GTK_DIR_TAB_BACKWARD. Для других значений GtkDirectionType он возвращает FALSE.

Всякий раз, когда стандартный обработчик возвращает TRUE, он также вызывает gtk_widget_error_bell(), чтобы уведомить пользователя об ошибке навигации по клавиатуре.

Пример использования реализации собственного обработчика ::keynav-failed (либо путем подключения к нему, либо путем переопределения) — ряд виджетов GtkEntry, где пользователь должен иметь возможность перемещаться по всему ряду с помощью клавиш курсора, как, например, в пользовательских интерфейсах, требующих ввода лицензионных ключей.

Параметры

widget

a GtkWidget

direction

направление перемещения фокуса

Возвращаемое значение

TRUE, если можно прекратить навигацию по клавиатуре, FALSE, если виджет-источник должен попытаться обработать запрос на навигацию по клавиатуре в своих родительских контейнерах.

С версии: 2.12

gtk_widget_get_tooltip_markup ()

gchar *
gtk_widget_get_tooltip_markup (GtkWidget *widget);

Возвращает содержимое всплывающей подсказки для widget .

Параметры

widget

a GtkWidget

Возвращаемое значение

текст подсказки или NULL. После использования необходимо освободить возвращаемую строку с помощью g_free().

[nullable]

С версии: 2.12

gtk_widget_set_tooltip_markup ()

void
gtk_widget_set_tooltip_markup (GtkWidget *widget,
                               const gchar *markup);

Устанавливает markup в качестве содержимого всплывающей подсказки, форматированного с использованием языка разметки текста Pango.

Функция позаботится об установке свойства “has-tooltip” в TRUE и о стандартном обработчике сигнала “query-tooltip”.

См. также свойство “tooltip-markup” и gtk_tooltip_set_markup().

Параметры

widget

a GtkWidget

markup

содержимое всплывающей подсказки для widget, или NULL.

[allow-none]

С версии: 2.12

gtk_widget_get_tooltip_text ()

gchar *
gtk_widget_get_tooltip_text (GtkWidget *widget);

Возвращает содержимое всплывающей подсказки для widget .

Параметры

widget

a GtkWidget

Возвращаемое значение

текст подсказки или NULL. После использования необходимо освободить возвращаемую строку с помощью g_free().

[nullable]

С версии: 2.12

gtk_widget_set_tooltip_text ()

void
gtk_widget_set_tooltip_text (GtkWidget *widget,
                             const gchar *text);

Устанавливает text в качестве содержимого всплывающей подсказки. Функция позаботится об установке свойства “has-tooltip” в TRUE и о стандартном обработчике сигнала “query-tooltip”.

См. также свойство “tooltip-text” и gtk_tooltip_set_text().

Параметры

widget

a GtkWidget

text

содержимое всплывающей подсказки для widget .

[allow-none]

С версии: 2.12

gtk_widget_get_tooltip_window ()

GtkWindow *
gtk_widget_get_tooltip_window (GtkWidget *widget);

Возвращает GtkWindow текущего всплывающего подсказки. Это может быть GtkWindow, созданный по умолчанию, или пользовательское окно всплывающей подсказки, установленное с помощью gtk_widget_set_tooltip_window().

Параметры

widget

a GtkWidget

Возвращаемое значение

GtkWindow текущего всплывающего подсказки.

[transfer none]

С: 2.12

gtk_widget_set_tooltip_window ()

void
gtk_widget_set_tooltip_window (GtkWidget *widget,
                               GtkWindow *custom_window);

Заменяет окно по умолчанию, обычно жёлтого цвета, используемое для отображения всплывающих подсказок, на custom_window . GTK+ позаботится о показе и скрытии custom_window в нужный момент, чтобы вести себя так же, как окно всплывающей подсказки по умолчанию. Если custom_window равен NULL, будет использоваться окно всплывающей подсказки по умолчанию.

Если пользовательское окно должно иметь стандартную тему, ему необходимо задать имя «gtk-tooltip», см. gtk_widget_set_name().

Параметры

widget

a GtkWidget

custom_window

a GtkWindow, или NULL.

[allow-none]

С: 2.12

gtk_widget_get_has_tooltip ()

gboolean
gtk_widget_get_has_tooltip (GtkWidget *widget);

Возвращает текущее значение свойства has-tooltip. Для получения дополнительной информации см. “has-tooltip”.

Параметры

widget

a GtkWidget

Возвращаемое значение

текущее значение has-tooltip для widget.

С: 2.12

gtk_widget_set_has_tooltip ()

void
gtk_widget_set_has_tooltip (GtkWidget *widget,
                            gboolean has_tooltip);

Устанавливает свойство has-tooltip для widget на has_tooltip . Для получения дополнительной информации см. “has-tooltip”.

Параметры

widget

a GtkWidget

has_tooltip

отображать ли всплывающую подсказку для widget.

С: 2.12

gtk_widget_trigger_tooltip_query ()

void
gtk_widget_trigger_tooltip_query (GtkWidget *widget);

Вызывает запрос всплывающей подсказки на дисплее, где находится верхний уровень widget. Для получения дополнительной информации см. gtk_tooltip_trigger_tooltip_query().

Параметры

widget

a GtkWidget

С: 2.12

gtk_widget_get_window ()

GdkWindow *
gtk_widget_get_window (GtkWidget *widget);

Возвращает окно виджета, если оно реализовано, NULL в противном случае.

Параметры

widget

a GtkWidget

Возвращаемое значение

окно widget.

[transfer none][nullable]

С: 2.14

gtk_widget_register_window ()

void
gtk_widget_register_window (GtkWidget *widget,
                            GdkWindow *window);

Регистрирует GdkWindow в виджете и настраивает его так, чтобы виджет получал события для него. Вызовите gtk_widget_unregister_window() при уничтожении окна.

До версии 3.8 вам нужно было вызвать gdk_window_set_user_data() напрямую для настройки. Теперь это устарело, и вы должны использовать gtk_widget_register_window() вместо этого. Старый код будет работать, хотя некоторые новые функции, такие как прозрачность, могут работать не идеально.

Параметры

widget

a GtkWidget

window

a GdkWindow

С: 3.8

gtk_widget_unregister_window ()

void
gtk_widget_unregister_window (GtkWidget *widget,
                              GdkWindow *window);

Удаляет GdkWindow из виджета, который был ранее настроен с помощью gtk_widget_register_window(). Вам нужно вызвать это, когда окно больше не используется виджетом, например, при его уничтожении.

Параметры

widget

a GtkWidget

window

a GdkWindow

С: 3.8

gtk_cairo_should_draw_window ()

gboolean
gtk_cairo_should_draw_window (cairo_t *cr,
                              GdkWindow *window);

Эта функция должна вызываться в реализациях сигнала “draw” для виджетов, поддерживающих несколько окон. cr должен быть не изменён после вызова функции рисования. Эта функция вернёт TRUE, если содержимое указанного window должно быть нарисовано, и FALSE в противном случае. Обратите внимание, что когда рисование не инициировано системой окон, эта функция вернёт TRUE для всех окон, поэтому вам нужно сначала нарисовать самое нижнее окно. Также не используйте операторы «else if» для проверки, какое окно нужно рисовать.

Параметры

cr

контекст cairo

window

окно для проверки. window может быть не окном только для ввода.

Возвращаемое значение

TRUE, если window должно быть нарисовано

С момента: 3.0

gtk_cairo_transform_to_window ()

void
gtk_cairo_transform_to_window (cairo_t *cr,
                               GtkWidget *widget,
                               GdkWindow *window);

Преобразует заданный контекст cairo cr из координат, относительных к widget, в координаты, относительные к window. Если окно widget не является предком window, никакие изменения не будут применены.

Это обратное преобразование к преобразованию, которое GTK применяет при подготовке события expose для вывода с сигналом “draw”. Оно предназначено для переноса многооконных виджетов из GTK+ 2 в архитектуру рендеринга GTK+ 3.

Параметры

cr

контекст cairo для преобразования

widget

виджет, для которого в данный момент центрирован контекст

window

окно для преобразования контекста

С момента: 3.0

gtk_widget_get_allocated_width ()

int
gtk_widget_get_allocated_width (GtkWidget *widget);

Возвращает ширину, которая была выделена для widget. Эта функция предназначена для использования при реализации обработчиков функции “draw”.

Параметры

widget

виджет для запроса

Возвращаемое значение

ширина widget

gtk_widget_get_allocated_height ()

int
gtk_widget_get_allocated_height (GtkWidget *widget);

Возвращает высоту, которая была выделена для widget. Эта функция предназначена для использования при реализации обработчиков функции “draw”.

Параметры

widget

виджет для запроса

Возвращаемое значение

высота widget

gtk_widget_get_allocation ()

void
gtk_widget_get_allocation (GtkWidget *widget,
                           GtkAllocation *allocation);

Получает выделение виджета.

Обратите внимание, при реализации GtkContainer: выделение виджета будет его «откорректированным» выделением, то есть контейнер-родитель виджета обычно вызывает gtk_widget_size_allocate() с выделением, а это выделение затем корректируется (например, для обработки отступов и выравнивания) перед присвоением виджету. gtk_widget_get_allocation() возвращает скорректированное выделение, которое фактически было присвоено виджету. Однако скорректированное выделение гарантированно полностью содержится в выделении, переданном в gtk_widget_size_allocate(). Таким образом, GtkContainer гарантирует, что его дочерние элементы остаются внутри заданных границ, но не гарантирует, что они будут иметь точно те же границы, что и контейнер назначил. Нет способа получить исходное выделение, назначенное функцией gtk_widget_size_allocate(), так как оно не хранится; если реализации контейнера нужна эта информация, она должна отслеживать её самостоятельно.

Параметры

widget

виджет GtkWidget

allocation

указатель на GtkAllocation, в который будет скопировано выделение.

[out]

С момента: 2.18

gtk_widget_set_allocation ()

void
gtk_widget_set_allocation (GtkWidget *widget,
                           const GtkAllocation *allocation);

Устанавливает выделение виджета. Его следует использовать не напрямую, а внутри метода size_allocate виджета.

Устанавливаемое выделение должно быть «откорректированным» или фактическим выделением. Если вы реализуете GtkContainer, используйте gtk_widget_size_allocate() вместо gtk_widget_set_allocation(). Виртуальный метод GtkWidgetClass::adjust_size_allocation внутри gtk_widget_size_allocate() корректирует выделение для создания откорректированного выделения.

Параметры

widget

виджет GtkWidget

allocation

указатель на GtkAllocation для копирования

С момента: 2.18

gtk_widget_get_allocated_baseline ()

int
gtk_widget_get_allocated_baseline (GtkWidget *widget);

Возвращает базовую линию, которая была выделена для widget. Эта функция предназначена для использования при реализации обработчиков функции “draw” и при выделении дочерних виджетов в “size_allocate”.

Параметры

widget

виджет для запроса

Возвращаемое значение

базовая линия widget, или -1, если нет

С момента: 3.10

gtk_widget_get_allocated_size ()

void
gtk_widget_get_allocated_size (GtkWidget *widget,
                               GtkAllocation *allocation,
                               int *baseline);

Получает размер, выделенный виджету.

Эта функция возвращает последние значения, переданные в gtk_widget_size_allocate_with_baseline(). Это значение отличается от размера, возвращаемого в gtk_widget_get_allocation(), поскольку такие функции, как gtk_widget_set_halign(), могут изменять выделение, но не значение, возвращаемое этой функцией.

Если виджет не отображается, его выделенный размер равен 0.

Параметры

widget

a GtkWidget

allocation

указатель на GtkAllocation, в который будет скопирован размер.

[out]

baseline

указатель на целое число, в который будет скопировано значение.

[out][allow-none]

С момента: 3.20

gtk_widget_get_clip ()

void
gtk_widget_get_clip (GtkWidget *widget,
                     GtkAllocation *clip);

Получает область обрезки виджета.

Область обрезки — это область, в которой будут происходить все операции рисования widget. В других наборах инструментов она называется ограничивающей рамкой.

Исторически в GTK+ область обрезки была равна выделению, полученному с помощью gtk_widget_get_allocation().

Параметры

widget

a GtkWidget

clip

указатель на GtkAllocation, в который будет скопирована область обрезки.

[out]

С момента: 3.14

gtk_widget_set_clip ()

void
gtk_widget_set_clip (GtkWidget *widget,
                     const GtkAllocation *clip);

Устанавливает область обрезки виджета. Необходимо использовать косвенно, но внутри метода size_allocate виджета. Вызывать после gtk_widget_set_allocation() (или после вызова родительского класса), потому что эта функция сбрасывает область обрезки.

Установленная область обрезки должна быть областью, на которой widget рисует. Если widget является GtkContainer, область должна содержать области обрезки всех дочерних элементов.

Если эта функция не вызывается widget во время обработчика ::size-allocate, область обрезки будет установлена равной выделению widget.

Параметры

widget

a GtkWidget

clip

указатель на GtkAllocation для копирования

С момента: 3.14

gtk_widget_get_app_paintable ()

gboolean
gtk_widget_get_app_paintable (GtkWidget *widget);

Определяет, намерено ли приложение рисовать на виджете в обработчике “draw”.

См. gtk_widget_set_app_paintable()

Параметры

widget

a GtkWidget

Возвращает

TRUE, если виджет поддерживает рисование приложением

С момента: 2.18

gtk_widget_get_can_default ()

gboolean
gtk_widget_get_can_default (GtkWidget *widget);

Определяет, может ли widget быть виджетом по умолчанию. См. gtk_widget_set_can_default().

Параметры

widget

a GtkWidget

Возвращает

TRUE, если widget может быть виджетом по умолчанию, FALSE в противном случае

С момента: 2.18

gtk_widget_set_can_default ()

void
gtk_widget_set_can_default (GtkWidget *widget,
                            gboolean can_default);

Устанавливает, может ли widget быть виджетом по умолчанию. См. gtk_widget_grab_default() для подробностей о значении «по умолчанию».

Параметры

widget

a GtkWidget

can_default

может ли widget быть виджетом по умолчанию.

С момента: 2.18

gtk_widget_get_can_focus ()

gboolean
gtk_widget_get_can_focus (GtkWidget *widget);

Определяет, может ли widget получить фокус ввода. См. gtk_widget_set_can_focus().

Параметры

widget

a GtkWidget

Возвращает

TRUE, если widget может получить фокус ввода, FALSE в противном случае

С момента: 2.18

gtk_widget_set_can_focus ()

void
gtk_widget_set_can_focus (GtkWidget *widget,
                          gboolean can_focus);

Устанавливает, может ли widget получить фокус ввода. См. gtk_widget_grab_focus() для получения фокуса ввода на виджете.

Параметры

widget

a GtkWidget

can_focus

может ли widget получить фокус ввода.

С момента: 2.18

gtk_widget_get_focus_on_click ()

gboolean
gtk_widget_get_focus_on_click (GtkWidget *widget);

Возвращает, нужно ли виджету получить фокус при нажатии мышью. См. gtk_widget_set_focus_on_click().

Параметры

widget

a GtkWidget

Возвращаемое значение

TRUE, если виджету нужно получить фокус при нажатии мышью.

С: 3.20

gtk_widget_set_focus_on_click ()

void
gtk_widget_set_focus_on_click (GtkWidget *widget,
                               gboolean focus_on_click);

Устанавливает, нужно ли виджету получить фокус при нажатии мышью. Отключение захвата фокуса полезно в таких местах, как панели инструментов, где вы не хотите, чтобы фокус клавиатуры снимался с основной области приложения.

Параметры

widget

a GtkWidget

focus_on_click

получает ли виджет фокус при нажатии мышью

С: 3.20

gtk_widget_get_double_buffered ()

gboolean
gtk_widget_get_double_buffered (GtkWidget *widget);

gtk_widget_get_double_buffered устарел и не должен использоваться в новом коде.

Определяет, использует ли виджет двойную буферизацию.

См. gtk_widget_set_double_buffered()

Параметры

widget

a GtkWidget

Возвращаемое значение

TRUE, если виджет использует двойную буферизацию

С: 2.18

gtk_widget_get_has_window ()

gboolean
gtk_widget_get_has_window (GtkWidget *widget);

Определяет, имеет ли widget свой собственный GdkWindow. См. gtk_widget_set_has_window().

Параметры

widget

a GtkWidget

Возвращаемое значение

TRUE, если у widget есть окно, FALSE в противном случае

С: 2.18

gtk_widget_set_has_window ()

void
gtk_widget_set_has_window (GtkWidget *widget,
                           gboolean has_window);

Указывает, имеет ли widget свой собственный GdkWindow. Обратите внимание, что все реализованные виджеты имеют указатель на «окно», отличного от NULL (gtk_widget_get_window() никогда не возвращает окно NULL когда виджет реализован), но для многих из них это на самом деле окно одного из его родительских виджетов. Виджеты, которые не создают window для себя в сигнале “realize” должны объявить об этом, вызвав эту функцию с has_window = FALSE.

Эта функция должна вызываться только реализациями виджетов, и они должны вызывать её в своей функции init().

Параметры

widget

a GtkWidget

has_window

имеет ли widget окно.

С: 2.18

gtk_widget_get_sensitive ()

gboolean
gtk_widget_get_sensitive (GtkWidget *widget);

Возвращает чувствительность виджета (в смысле значения, установленного с помощью gtk_widget_set_sensitive()).

Однако эффективная чувствительность виджета определяется как его собственной, так и чувствительностью родительского виджета. См. gtk_widget_is_sensitive().

Параметры

widget

a GtkWidget

Возвращаемое значение

TRUE, если виджет чувствителен

С: 2.18

gtk_widget_is_sensitive ()

gboolean
gtk_widget_is_sensitive (GtkWidget *widget);

Возвращает эффективную чувствительность виджета, которая означает, что сам виджет чувствителен, и родительский виджет также чувствителен

Параметры

widget

a GtkWidget

Возвращаемое значение

TRUE, если виджет эффективно чувствителен

С: 2.18

gtk_widget_get_state ()

GtkStateType
gtk_widget_get_state (GtkWidget *widget);

gtk_widget_get_state устарел с версии 3.0 и не должен использоваться в новом коде.

Используйте gtk_widget_get_state_flags() вместо этого.

Возвращает состояние виджета. См. gtk_widget_set_state().

Параметры

widget

a GtkWidget

Возвращаемое значение

состояние widget .

С: 2.18

gtk_widget_get_visible ()

gboolean
gtk_widget_get_visible (GtkWidget *widget);

Определяет, виден ли виджет. Если вы хотите учитывать, является ли родительский виджет также видимым, используйте gtk_widget_is_visible() вместо этого.

Эта функция не проверяет, скрыт ли виджет каким-либо образом.

См. gtk_widget_set_visible().

Параметры

widget

a GtkWidget

Возвращаемое значение

TRUE, если виджет виден

С: 2.18

gtk_widget_is_visible ()

gboolean
gtk_widget_is_visible (GtkWidget *widget);

Определяет, помечен ли виджет и все его родительские элементы как видимые.

Эта функция не проверяет, скрыт ли виджет каким-либо образом.

См. также gtk_widget_get_visible() и gtk_widget_set_visible()

Параметры

widget

a GtkWidget

Возвращает

TRUE, если виджет и все его родительские элементы видимы

С версии: 3.8

gtk_widget_set_visible ()

void
gtk_widget_set_visible (GtkWidget *widget,
                        gboolean visible);

Устанавливает состояние видимости widget. Обратите внимание, что установка этого значения в TRUE не означает, что виджет действительно отображается, см. gtk_widget_get_visible().

Эта функция просто вызывает gtk_widget_show() или gtk_widget_hide(), но её удобнее использовать, когда видимость виджета зависит от какого-либо условия.

Параметры

widget

a GtkWidget

visible

должен ли виджет отображаться

С версии: 2.18

gtk_widget_set_state_flags ()

void
gtk_widget_set_state_flags (GtkWidget *widget,
                            GtkStateFlags flags,
                            gboolean clear);

Эта функция предназначена для использования в реализациях виджетов. Включает значения флагов в текущем состоянии виджета (нечувствительный, предварительно выделенный и т. д.).

Эта функция принимает значения GTK_STATE_FLAG_DIR_LTR и GTK_STATE_FLAG_DIR_RTL, но игнорирует их. Если вы хотите установить направление виджета, используйте gtk_widget_set_direction().

Стоит отметить, что любое состояние, кроме GTK_STATE_FLAG_INSENSITIVE, будет распространено на всех дочерних элементах, которые не являются внутренними, если widget является GtkContainer, в то время как GTK_STATE_FLAG_INSENSITIVE сам по себе будет распространён на все дочерние элементы GtkContainer различными способами, нежели путем включения флага состояния в иерархии, и gtk_widget_get_state_flags(), и gtk_widget_is_sensitive() будут использовать эти значения.

Параметры

widget

a GtkWidget

flags

Флаги состояния, которые нужно включить

clear

Нужно ли очистить состояние перед включением flags

С версии: 3.0

gtk_widget_unset_state_flags ()

void
gtk_widget_unset_state_flags (GtkWidget *widget,
                              GtkStateFlags flags);

Эта функция предназначена для использования в реализациях виджетов. Отключает значения флагов для текущего состояния виджета (нечувствительный, предварительно выделенный и т. д.). См. gtk_widget_set_state_flags().

Параметры

widget

a GtkWidget

flags

Флаги состояния, которые нужно отключить

С версии: 3.0

gtk_widget_get_state_flags ()

GtkStateFlags
gtk_widget_get_state_flags (GtkWidget *widget);

Возвращает состояние виджета в виде набора флагов. Стоит отметить, что будет возвращено эффективное состояние GTK_STATE_FLAG_INSENSITIVE, то есть также учитывая нечувствительность родителя, даже если widget сам по себе чувствителен.

Также обратите внимание, что если вам нужен способ получения GtkStateFlags для передачи методу GtkStyleContext, вы должны обратиться к gtk_style_context_get_state().

Параметры

widget

a GtkWidget

Возвращает

Флаги состояния виджета

С версии: 3.0

gtk_widget_has-default ()

gboolean
gtk_widget_has_default (GtkWidget *widget);

Определяет, является ли widget текущим виджетом по умолчанию в своем верхнем уровне. См. gtk_widget_set_can_default().

Параметры

widget

a GtkWidget

Возвращает

TRUE, если widget является текущим виджетом по умолчанию в своем верхнем уровне, FALSE в противном случае

С версии: 2.18

gtk_widget_has-focus ()

gboolean
gtk_widget_has_focus (GtkWidget *widget);

Определяет, имеет ли виджет глобальный фокус ввода. См. gtk_widget_is_focus() для различий между наличием глобального фокуса ввода и наличием фокуса только в пределах верхнего уровня.

Параметры

widget

a GtkWidget

Возвращает

TRUE, если виджет имеет глобальный фокус ввода.

С версии: 2.18

gtk_widget_has-visible-focus ()

gboolean
gtk_widget_has_visible_focus (GtkWidget *widget);

Определяет, должен ли виджет отображать визуальное указание на то, что он имеет глобальный фокус ввода. Это вспомогательная функция для использования в обработчиках ::draw, которая учитывает, следует ли в данный момент отображать указание на фокус в окне верхнего уровня widget. Дополнительную информацию об указании фокуса см. в gtk_window_get_focus_visible().

Чтобы узнать, имеет ли виджет глобальный фокус ввода, используйте gtk_widget_has_focus().

Параметры

widget

a GtkWidget

Возвращает

TRUE, если виджет должен отображать «прямоугольник фокуса»

С версии: 3.2

gtk_widget_has_grab ()

gboolean
gtk_widget_has_grab (GtkWidget *widget);

Определяет, захватывает ли виджет события в данный момент, так что это единственный виджет, получающий входные события (клавиатура и мышь).

См. также gtk_grab_add().

Параметры

виджет

a GtkWidget

Возвращаемое значение

TRUE, если виджет находится в стеке grab_widgets

С момента: 2.18

gtk_widget_has_rc_style ()

gboolean
gtk_widget_has_rc_style (GtkWidget *widget);

gtk_widget_has_rc_style устарел начиная с версии 3.0 и не должен использоваться в новом коде.

Используйте GtkStyleContext вместо этого

Определяет, был ли стиль виджета найден с помощью механизма rc.

Параметры

виджет

a GtkWidget

Возвращаемое значение

TRUE, если виджет был найден с помощью механизма rc, FALSE в противном случае.

С момента: 2.20

gtk_widget_is_drawable ()

gboolean
gtk_widget_is_drawable (GtkWidget *widget);

Определяет, можно ли рисовать на widget. На виджет можно рисовать, если он отображен и виден.

Параметры

виджет

a GtkWidget

Возвращаемое значение

TRUE, если widget можно отобразить, FALSE в противном случае

С момента: 2.18

gtk_widget_is_toplevel ()

gboolean
gtk_widget_is_toplevel (GtkWidget *widget);

Определяет, является ли widget виджетом верхнего уровня.

В настоящее время виджетами верхнего уровня являются только GtkWindow и GtkInvisible (и виджеты вне процесса GtkPlugs). Виджеты верхнего уровня не имеют родительского виджета.

Параметры

виджет

a GtkWidget

Возвращаемое значение

TRUE, если widget является виджетом верхнего уровня, FALSE в противном случае

С момента: 2.18

gtk_widget_set_window ()

void
gtk_widget_set_window (GtkWidget *widget,
                       GdkWindow *window);

Устанавливает окно виджета. Эта функция должна использоваться только в реализации “realize” виджета. Переданное window обычно является либо новым окном, созданным с помощью gdk_window_new(), либо окном родительского виджета, возвращенным функцией gtk_widget_get_parent_window().

Виджеты должны указывать, будут ли они создавать собственное GdkWindow вызовом gtk_widget_set_has_window(). Это обычно выполняется в функции init().

Обратите внимание, что эта функция не добавляет никаких ссылок на window .

Параметры

виджет

a GtkWidget

окно

a GdkWindow.

[transfer full]

С момента: 2.18

gtk_widget_set_receives_default ()

void
gtk_widget_set_receives_default (GtkWidget *widget,
                                 gboolean receives_default);

Указывает, будет ли widget рассматриваться как виджет по умолчанию в его виджете верхнего уровня при фокусе, даже если другим виджетом является виджет по умолчанию.

См. gtk_widget_grab_default() для получения подробной информации о значении «по умолчанию».

Параметры

виджет

a GtkWidget

получает_по_умолчанию

может ли widget быть виджетом по умолчанию.

С момента: 2.18

gtk_widget_get_receives_default ()

gboolean
gtk_widget_get_receives_default (GtkWidget *widget);

Определяет, всегда ли widget рассматривается как виджет по умолчанию в его виджете верхнего уровня при фокусе, даже если другим виджетом является виджет по умолчанию.

См. gtk_widget_set_receives_default().

Параметры

виджет

a GtkWidget

Возвращаемое значение

TRUE, если widget выступает в качестве виджета по умолчанию при фокусе, FALSE в противном случае

С момента: 2.18

gtk_widget_set_support_multidevice ()

void
gtk_widget_set_support_multidevice (GtkWidget *widget,
                                    gboolean support_multidevice);

Включает или выключает поддержку множественных указателей. Если это значение TRUE, widget начнет получать несколько событий входа/выхода для каждого устройства. Обратите внимание, что если пользовательские GdkWindows создаются в “realize”, gdk_window_set_support_multidevice() необходимо вызывать вручную на них.

Параметры

виджет

a GtkWidget

support_multidevice

TRUE для поддержки ввода с нескольких устройств.

С момента: 3.0

gtk_widget_get_support_multidevice ()

gboolean
gtk_widget_get_support_multidevice (GtkWidget *widget);

Возвращает TRUE, если widget поддерживает множественные указатели. См. gtk_widget_set_support_multidevice() для получения дополнительной информации.

Параметры

виджет

a GtkWidget

Возвращаемое значение

TRUE, если widget поддерживает несколько устройств.

gtk_widget_set_realized ()

void
gtk_widget_set_realized (GtkWidget *widget,
                         gboolean realized);

Помечает виджет как реализованный. Данная функция должна вызываться только после того, как все окна Gdk для widget были созданы и зарегистрированы.

Данная функция должна вызываться только в реализациях «realize» или «unrealize» производного виджета.

Параметры

widget

a GtkWidget

realized

TRUE для пометки виджета как реализованного

С: 2.20

gtk_widget_get_realized ()

gboolean
gtk_widget_get_realized (GtkWidget *widget);

Определяет, реализован ли widget.

Параметры

widget

a GtkWidget

Возвращает

TRUE, если widget реализован, FALSE в противном случае

С: 2.20

gtk_widget_set_mapped ()

void
gtk_widget_set_mapped (GtkWidget *widget,
                       gboolean mapped);

Помечает виджет как отображаемый.

Данная функция должна вызываться только в реализациях «map» или «unmap» производного виджета.

Параметры

widget

a GtkWidget

mapped

TRUE для пометки виджета как отображаемого

С: 2.20

gtk_widget_get_mapped ()

gboolean
gtk_widget_get_mapped (GtkWidget *widget);

Определяет, отображается ли виджет.

Параметры

widget

a GtkWidget

Возвращает

TRUE, если виджет отображается, FALSE в противном случае.

С: 2.20

gtk_widget_get_requisition ()

void
gtk_widget_get_requisition (GtkWidget *widget,
                            GtkRequisition *requisition);

gtk_widget_get_requisition устарел с версии 3.0 и не должен использоваться в новых кодах.

Кэш GtkRequisition виджета был удалён. Если вам необходимо кэшировать размеры через запросы и выделения, добавьте явный кэш в соответствующий виджет.

Возвращает запрос на размер виджета.

Эта функция должна использоваться только реализациями виджетов, чтобы определить, действительно ли изменился запрос на размер виджета после изменения внутреннего состояния (чтобы они могли вызвать gtk_widget_queue_resize() вместо gtk_widget_queue_draw()).

Обычно используется gtk_widget_size_request().

Параметры

widget

a GtkWidget

requisition

указатель на GtkRequisition для копирования.

[out]

С: 2.20

gtk_widget_device_is_shadowed ()

gboolean
gtk_widget_device_is_shadowed (GtkWidget *widget,
                               GdkDevice *device);

Возвращает TRUE, если device был затенён захватом устройства GTK+ на другом виджете, поэтому он перестанет отправлять события в widget . Это может использоваться в сигнале «grab-notify» для проверки конкретных устройств. См. gtk_device_grab_add().

Параметры

widget

a GtkWidget

device

a GdkDevice

Возвращает

TRUE, если существует активный захват на device другим GtkWidget, чем widget .

С: 3.0

gtk_widget_get_modifier_mask ()

GdkModifierType
gtk_widget_get_modifier_mask (GtkWidget *widget,
                              GdkModifierIntent intent);

Возвращает маску модификаторов, используемых бэкендом системы отображения widget для определённой цели.

См. gdk_keymap_get_modifier_mask().

Параметры

widget

a GtkWidget

intent

служебный случай для маски модификаторов

Возвращает

маску модификаторов, используемую для intent .

С: 3.4

gtk_widget_insert_action_group ()

void
gtk_widget_insert_action_group (GtkWidget *widget,
                                const gchar *name,
                                GActionGroup *group);

Вставляет group в widget . Подразумеваемые виджеты widget, которые реализуют GtkActionable, могут быть связаны с действиями в group, установив их «action-name» на prefix .action-name.

Если group является NULL, ранее вставленная группа для name удаляется из widget .

Параметры

widget

a GtkWidget

name

префикс для действий в group

group

a GActionGroup, или NULL.

[allow-none]

С: 3.6

gtk_widget_get_opacity ()

double
gtk_widget_get_opacity (GtkWidget *widget);

Получает запрошенную непрозрачность для этого виджета. См. gtk_widget_set_opacity().

Параметры

widget

a GtkWidget

Возвращаемое значение

запрошенную непрозрачность для этого виджета.

С: 3.8

gtk_widget_set_opacity ()

void
gtk_widget_set_opacity (GtkWidget *widget,
                        double opacity);

Запрашивает, чтобы widget отображался с частичной прозрачностью, где значение непрозрачности 0 соответствует полной прозрачности, а 1 — полной непрозрачности. (Значения непрозрачности ограничиваются диапазоном [0,1]). Это работает как для виджетов верхнего уровня, так и для дочерних виджетов, хотя существуют некоторые ограничения:

Для виджетов верхнего уровня это зависит от возможностей оконной системы. В X11 это оказывает влияние только на экраны X с работающим менеджером композиции. См. gtk_widget_is_composited(). В Windows это должно работать всегда, хотя установка непрозрачности окна после отображения окна приводит к одному миганию в Windows.

Для дочерних виджетов это не работает, если какой-либо затронутый виджет имеет собственное окно или отключает буферизацию.

Параметры

widget

a GtkWidget

opacity

желаемая непрозрачность, значение от 0 до 1

С: 3.8

gtk_widget_list_action_prefixes ()

const gchar **
gtk_widget_list_action_prefixes (GtkWidget *widget);

Возвращает массив строк, завершённый NULL, содержащий префиксы доступных GActionGroup для widget .

Параметры

widget

A GtkWidget

Возвращаемое значение

массив строк, завершённый NULL.

[transfer container]

С: 3.16

gtk_widget_get_action_group ()

GActionGroup *
gtk_widget_get_action_group (GtkWidget *widget,
                             const gchar *prefix);

Возвращает GActionGroup, зарегистрированный с помощью prefix. Результирующий GActionGroup может быть зарегистрирован для widget или любого GtkWidget в его предках.

Если не найдено соответствующего GActionGroup по префиксу prefix, возвращается NULL.

Параметры

widget

A GtkWidget

prefix

«Префикс» группы действий.

Возвращаемое значение

GActionGroup или NULL.

[transfer none][nullable]

С: 3.16

gtk_widget_get_path ()

GtkWidgetPath *
gtk_widget_get_path (GtkWidget *widget);

Возвращает GtkWidgetPath, представляющий widget. Если виджет не подключен к виджету верхнего уровня, будет создан частичный путь.

Параметры

widget

a GtkWidget

Возвращаемое значение

GtkWidgetPath, представляющий widget .

[transfer none]

gtk_widget_get_style_context ()

GtkStyleContext *
gtk_widget_get_style_context (GtkWidget *widget);

Возвращает контекст стиля, связанный с widget .

Параметры

widget

a GtkWidget

Возвращаемое значение

GtkStyleContext. Эта память принадлежит widget и не должна освобождаться.

[transfer none]

gtk_widget_reset_style ()

void
gtk_widget_reset_style (GtkWidget *widget);

Обновляет контекст стиля widget и всех его потомков, обновив его путь виджета. GtkContainers могут использовать это для дочернего виджета при его переупорядочивании, если для него может применяться другой стиль. См. также gtk_container_get_path_for_child().

Параметры

widget

a GtkWidget

С: 3.0

gtk_widget_class_get_css_name ()

const char *
gtk_widget_class_get_css_name (GtkWidgetClass *widget_class);

Получает имя, используемое этим классом для сопоставления в CSS-коде. Подробнее см. gtk_widget_class_set_css_name().

Параметры

widget_class

класс, для которого устанавливается имя

Возвращаемое значение

CSS-имя данного класса

С: 3.20

gtk_widget_class_set_css_name ()

void
gtk_widget_class_set_css_name (GtkWidgetClass *widget_class,
                               const char *name);

Устанавливает имя, используемое для сопоставления виджетов в CSS.

Если эта функция не вызывается для данного класса, используется имя родительского класса.

Параметры

widget_class

класс, для которого устанавливается имя

name

используемое имя

С: 3.20

gtk_requisition_new ()

GtkRequisition *
gtk_requisition_new (void);

Выделяет новую структуру GtkRequisition и инициализирует её элементы нулями.

Возвращает

новую пустую структуру GtkRequisition. Выделенную структуру GtkRequisition необходимо освободить с помощью gtk_requisition_free().

С момента: 3.0

gtk_requisition_copy ()

GtkRequisition *
gtk_requisition_copy (const GtkRequisition *requisition);

Копирует структуру GtkRequisition.

Параметры

requisition

структура GtkRequisition

Возвращает

копию requisition

gtk_requisition_free ()

void
gtk_requisition_free (GtkRequisition *requisition);

Освобождает структуру GtkRequisition.

Параметры

requisition

структура GtkRequisition

gtk_widget_get_preferred_height ()

void
gtk_widget_get_preferred_height (GtkWidget *widget,
                                 gint *minimum_height,
                                 gint *natural_height);

Возвращает минимальную и естественную высоту виджета.

Этот вызов специфичен для запросов ширины для высоты.

Возвращаемый запрос будет изменён виртуальным методом GtkWidgetClass::adjust_size_request и любыми GtkSizeGroups, которые были применены. То есть, возвращаемый запрос — это тот, который следует использовать для вычисления размеров, а не обязательно тот, который возвращает сам виджет.

Параметры

widget

экземпляр GtkWidget

minimum_height

место для хранения минимальной высоты или NULL.

[out][allow-none]

natural_height

место для хранения естественной высоты или NULL.

[out][allow-none]

С момента: 3.0

gtk_widget_get_preferred_width ()

void
gtk_widget_get_preferred_width (GtkWidget *widget,
                                gint *minimum_width,
                                gint *natural_width);

Возвращает минимальную и естественную ширину виджета.

Этот вызов специфичен для запросов высоты для ширины.

Возвращаемый запрос будет изменён виртуальным методом GtkWidgetClass::adjust_size_request и любыми GtkSizeGroups, которые были применены. То есть, возвращаемый запрос — это тот, который следует использовать для вычисления размеров, а не обязательно тот, который возвращает сам виджет.

Параметры

widget

экземпляр GtkWidget

minimum_width

место для хранения минимальной ширины или NULL.

[out][allow-none]

natural_width

место для хранения естественной ширины или NULL.

[out][allow-none]

С момента: 3.0

gtk_widget_get_preferred_height_for_width ()

void
gtk_widget_get_preferred_height_for_width
                               (GtkWidget *widget,
                                gint width,
                                gint *minimum_height,
                                gint *natural_height);

Возвращает минимальную и естественную высоту виджета при заданной width .

Возвращаемый запрос будет изменён виртуальным методом GtkWidgetClass::adjust_size_request и любыми GtkSizeGroups, которые были применены. То есть, возвращаемый запрос — это тот, который следует использовать для вычисления размеров, а не обязательно тот, который возвращает сам виджет.

Параметры

widget

экземпляр GtkWidget

width

ширина, доступная для размещения

minimum_height

место для хранения минимальной высоты или NULL.

[out][allow-none]

natural_height

место для хранения естественной высоты или NULL.

[out][allow-none]

С момента: 3.0

gtk_widget_get_preferred_width_for_height ()

void
gtk_widget_get_preferred_width_for_height
                               (GtkWidget *widget,
                                gint height,
                                gint *minimum_width,
                                gint *natural_width);

Возвращает минимальную и естественную ширину виджета при заданной height .

Возвращаемый запрос будет изменён виртуальным методом GtkWidgetClass::adjust_size_request и любыми GtkSizeGroups, которые были применены. То есть, возвращаемый запрос — это тот, который следует использовать для вычисления размеров, а не обязательно тот, который возвращает сам виджет.

Параметры

widget

экземпляр GtkWidget

height

высота, доступная для размещения

minimum_width

место для хранения минимальной ширины или NULL.

[out][allow-none]

natural_width

место для хранения естественной ширины или NULL.

[out][allow-none]

С момента: 3.0

gtk_widget_get_preferred_height_and_baseline_for_width ()

void
gtk_widget_get_preferred_height_and_baseline_for_width
                               (GtkWidget *widget,
                                gint width,
                                gint *minimum_height,
                                gint *natural_height,
                                gint *minimum_baseline,
                                gint *natural_baseline);

Получает минимальную и естественную высоту виджета, а также соответствующие значения базовых линий, если бы ему был предоставлен указанный width , или стандартную высоту, если width равно -1. Значения базовых линий могут быть равны -1, что означает, что для данного виджета запрос на базовую линию не требуется.

Возвращаемый запрос будет изменён виртуальными методами GtkWidgetClass::adjust_size_request и GtkWidgetClass::adjust_baseline_request, а также любыми GtkSizeGroups, которые были применены. То есть, возвращаемый запрос — тот, который следует использовать для макета, а не обязательно тот, который возвращает сам виджет.

Параметры

widget

экземпляр GtkWidget

width

доступная ширина для размещения, или -1, если таковой нет

minimum_height

место для хранения минимальной высоты, или NULL.

[out][allow-none]

natural_height

место для хранения естественной высоты, или NULL.

[out][allow-none]

minimum_baseline

место для хранения базовой линии для минимальной высоты, или NULL.

[out][allow-none]

natural_baseline

место для хранения базовой линии для естественной высоты, или NULL.

[out][allow-none]

С: 3.10

gtk_widget_get_request_mode ()

GtkSizeRequestMode
gtk_widget_get_request_mode (GtkWidget *widget);

Получает, предпочитает ли виджет макет "высота для ширины" или "ширина для высоты".

Виджеты GtkBin обычно наследуют предпочтения своего дочернего элемента; контейнерным виджетам нужно запросить что-то, либо в контексте их дочерних элементов, либо в контексте их возможностей размещения.

Параметры

widget

экземпляр GtkWidget

Возвращает

GtkSizeRequestMode , предпочитаемый widget .

С: 3.0

gtk_widget_get_preferred_size ()

void
gtk_widget_get_preferred_size (GtkWidget *widget,
                               GtkRequisition *minimum_size,
                               GtkRequisition *natural_size);

Получает минимальный и естественный размеры виджета, учитывая предпочтения виджета в управлении "высота для ширины".

Это используется контейнерными виджетами для получения подходящих размеров, которые не накладывают никаких ограничений на размещение дочерних элементов. Это можно использовать для вывода размеров верхнего окна и меню, а также дочерних виджетов в контейнерах с произвольным расположением, таких как GtkLayout.

Обратите внимание. Естественная высота виджета с управлением "высота для ширины" обычно будет меньше минимальной высоты, так как требуемая высота для естественной ширины обычно меньше требуемой высоты для минимальной ширины.

Используйте gtk_widget_get_preferred_height_and_baseline_for_width(), если вы хотите поддерживать выравнивание по базовой линии.

Параметры

widget

экземпляр GtkWidget

minimum_size

место для хранения минимального размера, или NULL.

[out][allow-none]

natural_size

место для хранения естественного размера, или NULL.

[out][allow-none]

С: 3.0

gtk_distribute_natural_allocation ()

gint
gtk_distribute_natural_allocation (gint extra_space,
                                   guint n_requested_sizes,
                                   GtkRequestedSize *sizes);

Распределяет extra_space дочерним sizes, сначала увеличивая размеры меньших дочерних элементов до естественного размера.

Остальное пространство будет добавлено к элементу minimum_size структуры GtkRequestedSize. Если все размеры достигнут своего естественного размера, то остальное пространство возвращается.

Параметры

extra_space

Дополнительное пространство для перераспределения среди дочерних элементов после вычитания минимальных размеров и любого отступа дочерних элементов из общего размещения.

n_requested_sizes

Количество запросов для размещения в размещении

sizes

Массив структур с указателем на клиентскую область и минимальным/естественным размером в направлении размещения.

Возвращает

Остаток extra_space после перераспределения пространства до sizes .

gtk_widget_get_halign ()

GtkAlign
gtk_widget_get_halign (GtkWidget *widget);

Получает значение свойства “halign”.

Для обратной совместимости этот метод никогда не вернёт GTK_ALIGN_BASELINE, а вместо этого преобразует его в GTK_ALIGN_FILL. Базовые линии не поддерживаются для горизонтального выравнивания.

Параметры

widget

GtkWidget

Возвращает

горизонтальное выравнивание widget

gtk_widget_set_halign ()

void
gtk_widget_set_halign (GtkWidget *widget,
                       GtkAlign align);

Устанавливает горизонтальное выравнивание widget . См. свойство “halign”.

Параметры

widget

GtkWidget

align

горизонтальное выравнивание

gtk_widget_get_valign ()

GtkAlign
gtk_widget_get_valign (GtkWidget *widget);

Получение значения свойства “valign”.

По соображениям обратной совместимости этот метод никогда не вернёт GTK_ALIGN_BASELINE, а вместо этого преобразует его в GTK_ALIGN_FILL. Если ваш виджет должен поддерживать выравнивание по нижней линии, необходимо использовать gtk_widget_get_valign_with_baseline(), или g_object_get (widget, "valign", &value, NULL), которые также сообщат истинное значение.

Параметры

widget

a GtkWidget

Возвращаемое значение

вертикальное выравнивание widget, игнорируя выравнивание по нижней линии

gtk_widget_get_valign_with_baseline ()

GtkAlign
gtk_widget_get_valign_with_baseline (GtkWidget *widget);

Получение значения свойства “valign”, включая GTK_ALIGN_BASELINE.

Параметры

widget

a GtkWidget

Возвращаемое значение

вертикальное выравнивание widget

С: 3.10

gtk_widget_set_valign ()

void
gtk_widget_set_valign (GtkWidget *widget,
                       GtkAlign align);

Устанавливает вертикальное выравнивание widget. См. свойство “valign”.

Параметры

widget

a GtkWidget

align

вертикальное выравнивание

gtk_widget_get_margin_left ()

gint
gtk_widget_get_margin_left (GtkWidget *widget);

gtk_widget_get_margin_left устарело с версии 3.12 и не должно использоваться в новых кодах.

Используйте gtk_widget_get_margin_start() вместо этого.

Получение значения свойства “margin-left”.

Параметры

widget

a GtkWidget

Возвращаемое значение

Левый отступ widget

С: 3.0

gtk_widget_set_margin_left ()

void
gtk_widget_set_margin_left (GtkWidget *widget,
                            gint margin);

gtk_widget_set_margin_left устарело с версии 3.12 и не должно использоваться в новых кодах.

Используйте gtk_widget_set_margin_start() вместо этого.

Устанавливает левый отступ widget. См. свойство “margin-left”.

Параметры

widget

a GtkWidget

margin

левый отступ

С: 3.0

gtk_widget_get_margin_right ()

gint
gtk_widget_get_margin_right (GtkWidget *widget);

gtk_widget_get_margin_right устарело с версии 3.12 и не должно использоваться в новых кодах.

Используйте gtk_widget_get_margin_end() вместо этого.

Получение значения свойства “margin-right”.

Параметры

widget

a GtkWidget

Возвращаемое значение

Правый отступ widget

С: 3.0

gtk_widget_set_margin_right ()

void
gtk_widget_set_margin_right (GtkWidget *widget,
                             gint margin);

gtk_widget_set_margin_right устарело с версии 3.12 и не должно использоваться в новых кодах.

Используйте gtk_widget_set_margin_end() вместо этого.

Устанавливает правый отступ widget. См. свойство “margin-right”.

Параметры

widget

a GtkWidget

margin

правый отступ

С: 3.0

gtk_widget_get_margin_start ()

gint
gtk_widget_get_margin_start (GtkWidget *widget);

Получение значения свойства “margin-start”.

Параметры

widget

a GtkWidget

Возвращаемое значение

Начальный отступ widget

С: 3.12

gtk_widget_set_margin_start ()

void
gtk_widget_set_margin_start (GtkWidget *widget,
                             gint margin);

Устанавливает начальный отступ widget. См. свойство “margin-start”.

Параметры

widget

a GtkWidget

margin

начальный отступ

С: 3.12

gtk_widget_get_margin_end ()

gint
gtk_widget_get_margin_end (GtkWidget *widget);

Получение значения свойства “margin-end”.

Параметры

widget

a GtkWidget

Возвращаемое значение

Конечный отступ widget

С: 3.12

gtk_widget_set_margin_end ()

void
gtk_widget_set_margin_end (GtkWidget *widget,
                           gint margin);

Устанавливает конечный отступ widget. См. свойство “margin-end”.

Параметры

widget

a GtkWidget

margin

конечный отступ

С момента: 3.12

gtk_widget_get_margin_top ()

gint
gtk_widget_get_margin_top (GtkWidget *widget);

Получает значение свойства “margin-top”.

Параметры

widget

a GtkWidget

Возвращает

Верхний отступ widget

С момента: 3.0

gtk_widget_set_margin_top ()

void
gtk_widget_set_margin_top (GtkWidget *widget,
                           gint margin);

Устанавливает верхний отступ widget. См. свойство “margin-top”.

Параметры

widget

a GtkWidget

margin

верхний отступ

С момента: 3.0

gtk_widget_get_margin_bottom ()

gint
gtk_widget_get_margin_bottom (GtkWidget *widget);

Получает значение свойства “margin-bottom”.

Параметры

widget

a GtkWidget

Возвращает

Нижний отступ widget

С момента: 3.0

gtk_widget_set_margin_bottom ()

void
gtk_widget_set_margin_bottom (GtkWidget *widget,
                              gint margin);

Устанавливает нижний отступ widget. См. свойство “margin-bottom”.

Параметры

widget

a GtkWidget

margin

нижний отступ

С момента: 3.0

gtk_widget_get_hexpand ()

gboolean
gtk_widget_get_hexpand (GtkWidget *widget);

Получает, хочет ли виджет дополнительного горизонтального пространства. При изменении размера GtkWindow виджеты с expand=TRUE обычно получают дополнительное пространство. Например, список, область прокрутки или документ в окне часто настраиваются на расширение.

Контейнеры должны использовать gtk_widget_compute_expand() вместо этой функции, чтобы узнать, установлен ли флаг расширения для виджета или любого из его дочерних элементов. Если любой дочерний элемент виджета хочет расширяться, родительский элемент может попросить расшириться также.

Эта функция рассматривает только собственный флаг hexpand виджета, а не вычисляет, хочет ли весь дерево виджетов, укоренённое в этом виджете, расширяться.

Параметры

widget

виджет

Возвращает

установлен ли флаг hexpand

gtk_widget_set_hexpand ()

void
gtk_widget_set_hexpand (GtkWidget *widget,
                        gboolean expand);

Устанавливает, хочет ли виджет дополнительного горизонтального пространства. При изменении размера GtkWindow виджеты с expand=TRUE обычно получают дополнительное пространство. Например, список, область прокрутки или документ в окне часто настраиваются на расширение.

Вызовите эту функцию, чтобы установить флаг расширения, если вы хотите, чтобы ваш виджет становился шире, когда у окна есть дополнительное место.

По умолчанию виджеты автоматически расширяются, если это требуется любым из их дочерних элементов. (Чтобы узнать, будет ли виджет автоматически расширяться, учитывая его текущих дочерних элементов и состояния, вызовите gtk_widget_compute_expand(). Контейнер может определить, как расширяемость дочерних элементов влияет на расширение контейнера, переопределяя виртуальный метод compute_expand на GtkWidget.).

Явное установление hexpand с помощью этой функции переопределит автоматическое поведение расширения.

Эта функция заставляет виджет расширяться или не расширяться, независимо от дочерних элементов. Переопределение происходит, потому что gtk_widget_set_hexpand() устанавливает свойство hexpand-set (см. gtk_widget_set_hexpand_set()), которое заставляет использовать значение hexpand виджета, а не рассматривать дочерние элементы и состояние виджета.

Параметры

widget

виджет

expand

расширять или нет

gtk_widget_get_hexpand_set ()

gboolean
gtk_widget_get_hexpand_set (GtkWidget *widget);

Получает, была ли использована gtk_widget_set_hexpand() для явного задания флага расширения для этого виджета.

Если hexpand установлен, он переопределяет любое вычисленное значение расширения, основанное на дочерних виджетах. Если hexpand не установлен, значение расширения зависит от того, хочет ли какой-либо из дочерних элементов виджета расширяться.

Есть несколько причин использовать эту функцию, но она здесь для полноты и последовательности.

Параметры

widget

виджет

Возвращает

установлен ли hexpand явно

gtk_widget_set_hexpand_set ()

void
gtk_widget_set_hexpand_set (GtkWidget *widget,
                            gboolean set);

Устанавливает, будет ли использоваться флаг hexpand (см. gtk_widget_get_hexpand()).

Свойство hexpand-set будет установлено автоматически, когда вы вызываете gtk_widget_set_hexpand() для установки hexpand, поэтому наиболее вероятная причина для использования этой функции — это сброс явного флага расширения.

Если hexpand установлен, он переопределяет любое вычисленное значение расширения, основанное на дочерних виджетах. Если hexpand не установлен, значение расширения зависит от того, хочет ли какой-либо из дочерних элементов виджета расширяться.

Есть несколько причин использовать эту функцию, но она здесь для полноты и последовательности.

Параметры

widget

виджет

set

значение для свойства hexpand-set

gtk_widget_get_vexpand ()

gboolean
gtk_widget_get_vexpand (GtkWidget *widget);

Получает, хочет ли виджет дополнительного вертикального пространства.

См. gtk_widget_get_hexpand() для получения более подробной информации.

Параметры

widget

виджет

Возвращает

установлен ли флаг vexpand

gtk_widget_set_vexpand ()

void
gtk_widget_set_vexpand (GtkWidget *widget,
                        gboolean expand);

Устанавливает, хочет ли виджет занять дополнительное вертикальное пространство, если оно доступно.

См. gtk_widget_set_hexpand() для получения более подробной информации.

Параметры

widget

виджет

expand

должен ли виджет расширяться

gtk_widget_get_vexpand_set ()

gboolean
gtk_widget_get_vexpand_set (GtkWidget *widget);

Получает, было ли использовано gtk_widget_set_vexpand() для явного установки флага расширения для этого виджета.

См. gtk_widget_get_hexpand_set() для получения более подробной информации.

Параметры

widget

виджет

Возвращаемое значение

был ли явно установлен флаг vexpand

gtk_widget_set_vexpand_set ()

void
gtk_widget_set_vexpand_set (GtkWidget *widget,
                            gboolean set);

Устанавливает, будет ли использоваться флаг vexpand (см. gtk_widget_get_vexpand()).

См. gtk_widget_set_hexpand_set() для получения более подробной информации.

Параметры

widget

виджет

set

значение свойства vexpand-set

gtk_widget_queue_compute_expand ()

void
gtk_widget_queue_compute_expand (GtkWidget *widget);

Помечает widget как требующий повторного вычисления флагов расширения. Вызывайте эту функцию при установке свойств расширения дочерних элементов старого типа для дочернего элемента контейнера.

См. gtk_widget_compute_expand().

Параметры

widget

a GtkWidget

gtk_widget_compute_expand ()

gboolean
gtk_widget_compute_expand (GtkWidget *widget,
                           GtkOrientation orientation);

Вычисляет, должен ли контейнер предоставить этому виджету дополнительное пространство, если возможно. Контейнеры должны проверять это, а не смотреть на gtk_widget_get_hexpand() или gtk_widget_get_vexpand().

Эта функция уже проверяет, является ли виджет видимым, поэтому проверку видимости выполнять не нужно. Невидимые виджеты не расширяются.

Вычисленное значение расширения использует либо значение расширения, явно установленное на сам виджет, или, если оно не установлено явно, виджет может расширяться, если некоторые из его дочерних элементов расширяются.

Параметры

widget

виджет

orientation

направление расширения

Возвращаемое значение

должен ли корневой элемент дерева виджетов быть расширен

gtk_widget_init_template ()

void
gtk_widget_init_template (GtkWidget *widget);

Создаёт и инициализирует дочерние виджеты, определённые в шаблонах. Эта функция должна вызываться в инициализаторе экземпляра для любого класса, который назначил себе шаблон с помощью gtk_widget_class_set_template()

Важно вызвать эту функцию в инициализаторе экземпляра подкласса GtkWidget, а не в GObject.constructed() или GObject.constructor() по двум причинам.

Одна причина заключается в том, что производные виджеты, как правило, предполагают, что составные виджеты родительского класса были созданы в их инициализаторах экземпляров.

Другая причина заключается в том, что при вызове g_object_new() на виджете с составными шаблонами важно построить составные виджеты перед установкой свойств конструктора. Свойства, передаваемые g_object_new(), должны иметь приоритет над свойствами, заданными в XML-файле частного шаблона.

Параметры

widget

a GtkWidget

С версии: 3.10

gtk_widget_class_set_template ()

void
gtk_widget_class_set_template (GtkWidgetClass *widget_class,
                               GBytes *template_bytes);

Это должно быть вызвано во время инициализации класса для указания GtkBuilder XML, который будет использоваться для расширения виджета.

Для удобства также предоставляется gtk_widget_class_set_template_from_resource().

Обратите внимание, что любой класс, который устанавливает шаблоны, должен вызвать gtk_widget_init_template() в инициализаторе экземпляра виджета.

Параметры

widget_class

A GtkWidgetClass

template_bytes

A GBytes содержащий GtkBuilder XML

С версии: 3.10

gtk_widget_class_set_template_from_resource ()

void
gtk_widget_class_set_template_from_resource
                               (GtkWidgetClass *widget_class,
                                const gchar *resource_name);

Функция для удобства вызова gtk_widget_class_set_template().

Обратите внимание, что любой класс, который устанавливает шаблоны, должен вызвать gtk_widget_init_template() в инициализаторе экземпляра виджета.

Параметры

widget_class

A GtkWidgetClass

resource_name

Имя ресурса для загрузки шаблона

С версии: 3.10

gtk_widget_get_template_child ()

GObject *
gtk_widget_get_template_child (GtkWidget *widget,
                               GType widget_type,
                               const gchar *name);

Получение объекта, созданного из XML-шаблона для widget_type в этом экземпляре widget.

Это будет отображать только дочерние элементы, которые были ранее объявлены с помощью gtk_widget_class_bind_template_child_full() или одного из его вариантов.

Эта функция предназначена только для использования кодом, который является частным для widget_type, который объявил дочерний элемент, и предназначена для языковых привязок, которые не могут легко использовать смещения структуры GObject.

Параметры

widget

A GtkWidget

widget_type

Тип GType для получения дочернего элемента шаблона

name

«Идентификатор» дочернего элемента, определённый в XML-шаблоне

Возвращаемое значение

Объект, созданный в XML-шаблоне с идентификатором name.

[transfer none]

gtk_widget_class_bind_template_child()

#define             gtk_widget_class_bind_template_child(widget_class, TypeName, member_name)

Связывает виджет-потомок, определённый в шаблоне, с widget_class.

Этот макрос — удобная обёртка вокруг функции gtk_widget_class_bind_template_child_full().

Этот макрос будет использовать смещение member_name внутри структуры экземпляра TypeName.

Параметры

widget_class

структура GtkWidgetClass

TypeName

имя типа этого виджета

member_name

имя члена экземпляра в структуре экземпляра для data_type

С момента: 3.10

gtk_widget_class_bind_template_child_internal()

#define             gtk_widget_class_bind_template_child_internal(widget_class, TypeName, member_name)

Связывает виджет-потомок, определённый в шаблоне, с widget_class и делает его доступным как внутренний виджет в GtkBuilder под именем member_name.

Этот макрос — удобная обёртка вокруг функции gtk_widget_class_bind_template_child_full().

Этот макрос будет использовать смещение member_name внутри структуры экземпляра TypeName.

Параметры

widget_class

структура GtkWidgetClass

TypeName

имя типа, в формате CamelCase

member_name

имя члена экземпляра в структуре экземпляра для data_type

С момента: 3.10

gtk_widget_class_bind_template_child_private()

#define             gtk_widget_class_bind_template_child_private(widget_class, TypeName, member_name)

Связывает виджет-потомок, определённый в шаблоне, с widget_class.

Этот макрос — удобная обёртка вокруг функции gtk_widget_class_bind_template_child_full().

Этот макрос будет использовать смещение member_name внутри структуры данных "частных" данных TypeName (он использует G_PRIVATE_OFFSET(), поэтому структура "частных" данных должна быть добавлена с помощью G_ADD_PRIVATE()).

Параметры

widget_class

структура GtkWidgetClass

TypeName

имя типа этого виджета

member_name

имя частного члена экземпляра в структуре "частных" данных для data_type

С момента: 3.10

gtk_widget_class_bind_template_child_internal_private()

#define             gtk_widget_class_bind_template_child_internal_private(widget_class, TypeName, member_name)

Связывает виджет-потомок, определённый в шаблоне, с widget_class и делает его доступным как внутренний виджет в GtkBuilder под именем member_name.

Этот макрос — удобная обёртка вокруг функции gtk_widget_class_bind_template_child_full().

Этот макрос будет использовать смещение member_name внутри структуры данных "частных" данных TypeName.

Параметры

widget_class

структура GtkWidgetClass

TypeName

имя типа, в формате CamelCase

member_name

имя частного члена экземпляра в структуре "частных" данных для data_type

С момента: 3.10

gtk_widget_class_bind_template_child_full ()

void
gtk_widget_class_bind_template_child_full
                               (GtkWidgetClass *widget_class,
                                const gchar *name,
                                gboolean internal_child,
                                gssize struct_offset);

Автоматически назначает объект, объявленный в XML шаблоне класса, для установки в местоположение в данных экземпляра, созданного с помощью gtk_widget_get_template_child().

Структура может указывать на область в общедоступной области экземпляра, в таком случае нужно использовать G_STRUCT_OFFSET(WidgetType, member) для struct_offset, или в частной структуре, в таком случае нужно использовать G_PRIVATE_OFFSET(WidgetType, member).

Будет автоматически удерживаться явная сильная ссылка на период существования экземпляра. Она автоматически будет освобождена, когда для экземпляра выполняется GObjectClass.dispose(), и если указано struct_offset != 0, тогда автоматическое местоположение в общедоступных или частных данных экземпляра установится в NULL. Тем не менее, вы можете получить доступ к автоматическому указателю на потомка в первый раз, когда для ваших классов выполняется GObjectClass.dispose(), или в GtkWidgetClass.destroy().

Если задано internal_child, GtkBuildableIface.get_internal_child() будет автоматически реализован классом GtkWidget, поэтому нет необходимости реализовывать его вручную.

Вспомогательные макросы gtk_widget_class_bind_template_child(), gtk_widget_class_bind_template_child_internal(), gtk_widget_class_bind_template_child_private() и gtk_widget_class_bind_template_child_internal_private() могут быть удобнее для использования.

Обратите внимание, что это необходимо вызвать из инициализатора класса составного виджета после вызова gtk_widget_class_set_template().

Параметры

widget_class

структура GtkWidgetClass

name

«Идентификатор» потомка, определённый в XML шаблоне

internal_child

Будет ли потомок доступен как «внутренний потомок» при использовании этого класса в GtkBuilder XML

struct_offset

Смещение в структуре общедоступных или частных данных составного виджета, где должен быть установлен автоматический указатель на потомок, или 0, чтобы не присваивать указатель.

С момента: 3.10

gtk_widget_class_bind_template_callback()

#define             gtk_widget_class_bind_template_callback(widget_class, callback)

Связывает функцию обратного вызова, определённую в шаблоне, с widget_class.

Эта макрокоманда — удобная оболочка вокруг функции gtk_widget_class_bind_template_callback_full().

Параметры

widget_class

a GtkWidgetClass

callback

символ обратного вызова

С момента: 3.10

gtk_widget_class_bind_template_callback_full ()

void
gtk_widget_class_bind_template_callback_full
                               (GtkWidgetClass *widget_class,
                                const gchar *callback_name,
                                GCallback callback_symbol);

Объявляет callback_symbol для обработки callback_name из XML-шаблона, определённого для widget_type. См. gtk_builder_add_callback_symbol().

Обратите внимание, что этот метод необходимо вызывать из инициализатора класса составных виджетов после вызова gtk_widget_class_set_template().

Параметры

widget_class

A GtkWidgetClass

callback_name

Имя обратного вызова, как ожидается в XML-шаблоне

callback_symbol

Символ обратного вызова.

[scope async]

С момента: 3.10

gtk_widget_class_set_connect_func ()

void
gtk_widget_class_set_connect_func (GtkWidgetClass *widget_class,
                                   GtkBuilderConnectFunc connect_func,
                                   gpointer connect_data,
                                   GDestroyNotify connect_data_destroy);

Для использования в языковых связках, это переопределит стандартный GtkBuilderConnectFunc для использования при разборе GtkBuilder XML из данных шаблона данного класса.

Обратите внимание, что этот метод необходимо вызывать из инициализатора класса составных виджетов после вызова gtk_widget_class_set_template().

Параметры

widget_class

A GtkWidgetClass

connect_func

The GtkBuilderConnectFunc для использования при подключении сигналов в шаблоне класса

connect_data

Данные, передаваемые в connect_func

connect_data_destroy

The GDestroyNotify для освобождения connect_data. Это будет использоваться только во время завершения работы класса, когда больше нет ни одного класса типа widget_type.

С момента: 3.10

Типы и значения

GtkWidget

typedef struct _GtkWidget GtkWidget;

struct GtkWidgetClass

struct GtkWidgetClass {
  GInitiallyUnownedClass parent_class;


  guint activate_signal;

  /* seldomly overidden */
  void (*dispatch_child_properties_changed) (GtkWidget   *widget,
					     guint        n_pspecs,
					     GParamSpec **pspecs);

  /* basics */
  void (* destroy)             (GtkWidget        *widget);
  void (* show)		       (GtkWidget        *widget);
  void (* show_all)            (GtkWidget        *widget);
  void (* hide)		       (GtkWidget        *widget);
  void (* map)		       (GtkWidget        *widget);
  void (* unmap)	       (GtkWidget        *widget);
  void (* realize)	       (GtkWidget        *widget);
  void (* unrealize)	       (GtkWidget        *widget);
  void (* size_allocate)       (GtkWidget        *widget,
				GtkAllocation    *allocation);
  void (* state_changed)       (GtkWidget        *widget,
				GtkStateType   	  previous_state);
  void (* state_flags_changed) (GtkWidget        *widget,
				GtkStateFlags  	  previous_state_flags);
  void (* parent_set)	       (GtkWidget        *widget,
				GtkWidget        *previous_parent);
  void (* hierarchy_changed)   (GtkWidget        *widget,
				GtkWidget        *previous_toplevel);
  void (* style_set)	       (GtkWidget        *widget,
				GtkStyle         *previous_style);
  void (* direction_changed)   (GtkWidget        *widget,
				GtkTextDirection  previous_direction);
  void (* grab_notify)         (GtkWidget        *widget,
				gboolean          was_grabbed);
  void (* child_notify)        (GtkWidget	 *widget,
				GParamSpec       *child_property);
  gboolean (* draw)	       (GtkWidget	 *widget,
                                cairo_t          *cr);

  /* size requests */
  GtkSizeRequestMode (* get_request_mode)               (GtkWidget      *widget);

  void               (* get_preferred_height)           (GtkWidget       *widget,
                                                         gint            *minimum_height,
                                                         gint            *natural_height);
  void               (* get_preferred_width_for_height) (GtkWidget       *widget,
                                                         gint             height,
                                                         gint            *minimum_width,
                                                         gint            *natural_width);
  void               (* get_preferred_width)            (GtkWidget       *widget,
                                                         gint            *minimum_width,
                                                         gint            *natural_width);
  void               (* get_preferred_height_for_width) (GtkWidget       *widget,
                                                         gint             width,
                                                         gint            *minimum_height,
                                                         gint            *natural_height);

  /* Mnemonics */
  gboolean (* mnemonic_activate)        (GtkWidget           *widget,
                                         gboolean             group_cycling);

  /* explicit focus */
  void     (* grab_focus)               (GtkWidget           *widget);
  gboolean (* focus)                    (GtkWidget           *widget,
                                         GtkDirectionType     direction);

  /* keyboard navigation */
  void     (* move_focus)               (GtkWidget           *widget,
                                         GtkDirectionType     direction);
  gboolean (* keynav_failed)            (GtkWidget           *widget,
                                         GtkDirectionType     direction);

  /* events */
  gboolean (* event)			(GtkWidget	     *widget,
					 GdkEvent	     *event);
  gboolean (* button_press_event) (GtkWidget	     *widget,
					 GdkEventButton      *event);
  gboolean (* button_release_event) (GtkWidget	     *widget,
					 GdkEventButton      *event);
  gboolean (* scroll_event)		(GtkWidget           *widget,
					 GdkEventScroll      *event);
  gboolean (* motion_notify_event) (GtkWidget	     *widget,
					 GdkEventMotion      *event);
  gboolean (* delete_event)		(GtkWidget	     *widget,
					 GdkEventAny	     *event);
  gboolean (* destroy_event)		(GtkWidget	     *widget,
					 GdkEventAny	     *event);
  gboolean (* key_press_event)		(GtkWidget	     *widget,
					 GdkEventKey	     *event);
  gboolean (* key_release_event) (GtkWidget	     *widget,
					 GdkEventKey	     *event);
  gboolean (* enter_notify_event) (GtkWidget	     *widget,
					 GdkEventCrossing    *event);
  gboolean (* leave_notify_event) (GtkWidget	     *widget,
					 GdkEventCrossing    *event);
  gboolean (* configure_event)		(GtkWidget	     *widget,
					 GdkEventConfigure   *event);
  gboolean (* focus_in_event)		(GtkWidget	     *widget,
					 GdkEventFocus       *event);
  gboolean (* focus_out_event)		(GtkWidget	     *widget,
					 GdkEventFocus       *event);
  gboolean (* map_event)		(GtkWidget	     *widget,
					 GdkEventAny	     *event);
  gboolean (* unmap_event)		(GtkWidget	     *widget,
					 GdkEventAny	     *event);
  gboolean (* property_notify_event) (GtkWidget	     *widget,
					 GdkEventProperty    *event);
  gboolean (* selection_clear_event) (GtkWidget	     *widget,
					 GdkEventSelection   *event);
  gboolean (* selection_request_event) (GtkWidget	     *widget,
					 GdkEventSelection   *event);
  gboolean (* selection_notify_event) (GtkWidget	     *widget,
					 GdkEventSelection   *event);
  gboolean (* proximity_in_event) (GtkWidget	     *widget,
					 GdkEventProximity   *event);
  gboolean (* proximity_out_event) (GtkWidget	     *widget,
					 GdkEventProximity   *event);
  gboolean (* visibility_notify_event) (GtkWidget	     *widget,
					 GdkEventVisibility  *event);
  gboolean (* window_state_event) (GtkWidget	     *widget,
					 GdkEventWindowState *event);
  gboolean (* damage_event)             (GtkWidget           *widget,
                                         GdkEventExpose      *event);
  gboolean (* grab_broken_event)        (GtkWidget           *widget,
                                         GdkEventGrabBroken  *event);

  /* selection */
  void     (* selection_get)       (GtkWidget          *widget,
				    GtkSelectionData   *selection_data,
				    guint               info,
				    guint               time_);
  void     (* selection_received)  (GtkWidget          *widget,
				    GtkSelectionData   *selection_data,
				    guint               time_);

  /* Source side drag signals */
  void     (* drag_begin)          (GtkWidget         *widget,
				    GdkDragContext     *context);
  void     (* drag_end)	           (GtkWidget	       *widget,
				    GdkDragContext     *context);
  void     (* drag_data_get)       (GtkWidget          *widget,
				    GdkDragContext     *context,
				    GtkSelectionData   *selection_data,
				    guint               info,
				    guint               time_);
  void     (* drag_data_delete)    (GtkWidget          *widget,
				    GdkDragContext     *context);

  /* Target side drag signals */
  void     (* drag_leave)          (GtkWidget          *widget,
				    GdkDragContext     *context,
				    guint               time_);
  gboolean (* drag_motion)         (GtkWidget	       *widget,
				    GdkDragContext     *context,
				    gint                x,
				    gint                y,
				    guint               time_);
  gboolean (* drag_drop)           (GtkWidget	       *widget,
				    GdkDragContext     *context,
				    gint                x,
				    gint                y,
				    guint               time_);
  void     (* drag_data_received)  (GtkWidget          *widget,
				    GdkDragContext     *context,
				    gint                x,
				    gint                y,
				    GtkSelectionData   *selection_data,
				    guint               info,
				    guint               time_);
  gboolean (* drag_failed)         (GtkWidget          *widget,
                                    GdkDragContext     *context,
                                    GtkDragResult       result);

  /* Signals used only for keybindings */
  gboolean (* popup_menu)          (GtkWidget          *widget);

  /* If a widget has multiple tooltips/whatsthis, it should show the
   * one for the current focus location, or if that doesn't make
   * sense, should cycle through them showing each tip alongside
   * whatever piece of the widget it applies to.
   */
  gboolean (* show_help)           (GtkWidget          *widget,
                                    GtkWidgetHelpType   help_type);

  /* accessibility support
   */
  AtkObject *  (* get_accessible)     (GtkWidget *widget);

  void         (* screen_changed)     (GtkWidget *widget,
                                       GdkScreen *previous_screen);
  gboolean     (* can_activate_accel) (GtkWidget *widget,
                                       guint      signal_id);


  void         (* composited_changed) (GtkWidget *widget);

  gboolean     (* query_tooltip)      (GtkWidget  *widget,
				       gint        x,
				       gint        y,
				       gboolean    keyboard_tooltip,
				       GtkTooltip *tooltip);

  void         (* compute_expand)     (GtkWidget  *widget,
                                       gboolean   *hexpand_p,
                                       gboolean   *vexpand_p);

  void         (* adjust_size_request)    (GtkWidget         *widget,
                                           GtkOrientation     orientation,
                                           gint              *minimum_size,
                                           gint              *natural_size);
  void         (* adjust_size_allocation) (GtkWidget         *widget,
                                           GtkOrientation     orientation,
                                           gint              *minimum_size,
                                           gint              *natural_size,
                                           gint              *allocated_pos,
                                           gint              *allocated_size);

  void         (* style_updated)          (GtkWidget *widget);

  gboolean     (* touch_event)            (GtkWidget     *widget,
                                           GdkEventTouch *event);

  void         (* get_preferred_height_and_baseline_for_width)  (GtkWidget     *widget,
								 gint           width,
								 gint          *minimum_height,
								 gint          *natural_height,
								 gint          *minimum_baseline,
								 gint          *natural_baseline);
  void         (* adjust_baseline_request)(GtkWidget         *widget,
                                           gint              *minimum_baseline,
                                           gint              *natural_baseline);
  void         (* adjust_baseline_allocation) (GtkWidget         *widget,
					       gint              *baseline);
  void         (*queue_draw_region)           (GtkWidget         *widget,
					       const cairo_region_t *region);
};

Члены

guint activate_signal;

Сигнал для отправки, когда виджет данного класса активирован, gtk_widget_activate() обрабатывает отправку. Реализация этого сигнала необязательна.

dispatch_child_properties_changed ()

Редко переопределяется.

destroy ()

Сигнализирует всем держателям ссылки на виджет, что они должны освободить удерживаемую ими ссылку.

show ()

Сигнал, отправляемый, когда виджет отображается

show_all ()

Рекурсивно отображает виджет и все дочерние виджеты (если виджет является контейнером).

hide ()

Сигнал, отправляемый, когда виджет скрыт.

map ()

Сигнал, отправляемый, когда виджет будет сопоставлен, то есть когда виджет видим (что управляется с помощью gtk_widget_set_visible()), и все его родительские виджеты до самого верхнего виджета также видны.

unmap ()

Сигнал, отправляемый, когда виджет будет не сопоставлен, что означает, что либо он, либо любой из его родительских виджетов до самого верхнего виджета были скрыты.

realize ()

Сигнал, отправляемый, когда виджет связан с GdkWindow, что означает, что gtk_widget_realize() был вызван или виджет был сопоставлен (то есть он будет нарисован).

unrealize ()

Сигнал, отправляемый, когда связанное с виджетом окно GdkWindow уничтожается, что означает, что gtk_widget_unrealize() был вызван или виджет был не сопоставлен (то есть он будет скрыт).

size_allocate ()

Сигнал, отправляемый для получения размещения виджета.

state_changed ()

Сигнал, отправляемый при изменении состояния виджета. Устарело: 3.0

state_flags_changed ()

Сигнал, отправляемый при изменении состояния виджета, см. gtk_widget_get_state_flags().

parent_set ()

Сигнал, отправляемый, когда для виджета задан новый родитель.

hierarchy_changed ()

Сигнал, отправляемый при изменении закрепленного состояния виджета.

style_set ()

Сигнал, отправляемый при установке нового стиля для виджета. Устарело: 3.0

direction_changed ()

Сигнал, отправляемый при изменении направления текста виджета.

grab_notify ()

Сигнал, отправляемый, когда виджет затенён захватом GTK+ (не указателем или клавиатурой) другого виджета или когда он перестаёт затеняться из-за удаления захвата.

child_notify ()

Сигнал, отправляемый для каждой дочерней свойства, которая изменилась в объекте.

draw ()

Сигнал, отправляемый, когда виджет должен отрисовать себя.

get_request_mode ()

Это позволяет виджету сообщить своему родительскому контейнеру, предпочитает ли он размещение в режиме GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH или GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT. GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH означает, что виджет предпочитает вызов GtkWidgetClass.get_preferred_width(), а затем GtkWidgetClass.get_preferred_height_for_width(). GTK_SIZE_REQUEST_CONSTANT_SIZE отключает любое управление геометрией высоты по ширине или ширины по высоте для данного виджета и является значением по умолчанию. Важно отметить (как описано ниже), что любой виджет, который меняет высоту на ширину или ширину на высоту, должен правильно реагировать на оба виртуальных метода GtkWidgetClass.get_preferred_height_for_width() и GtkWidgetClass.get_preferred_width_for_height(), так как его родительский контейнер может запросить его в любом режиме GtkSizeRequestMode.

get_preferred_height ()

Это вызывается контейнерами для получения минимальной и естественной высоты виджета. Виджет, который на самом деле не меняет высоту на ширину или ширину на высоту, должен только реализовать эти два виртуальных метода (GtkWidgetClass.get_preferred_width() и GtkWidgetClass.get_preferred_height()).

get_preferred_width_for_height ()

Это аналогично GtkWidgetClass.get_preferred_height_for_width(), за исключением того, что оно работает в обратном направлении. Редко, что виджет на самом деле запрашивает GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT, но это может произойти, например, когда виджету или контейнеру добавляются дополнительные столбцы для компенсации меньшей выделенной высоты.

get_preferred_width ()

Это вызывается контейнерами для получения минимальной и естественной ширины виджета. Виджету никогда не будет выделена ширина меньше минимальной, и ему будет выделена ширина, большая, чем естественная, только после того, как все его соседние виджеты получат свои естественные ширины. Кроме того, виджету будет выделена ширина, большая, чем естественная, только в том случае, если он был настроен на получение дополнительного расширяемого пространства от родительского контейнера.

get_preferred_height_for_width ()

Это аналогично GtkWidgetClass.get_preferred_height(), за исключением того, что ему передаётся контекстуальная ширина для запроса высоты. Реализовав этот виртуальный метод, GtkLabel может сообщить своему родителю, какой высоты потребуется метке, если ей будет назначена указанная ширина.

mnemonic_activate ()

Активирует widget, если group_cycling равен FALSE, и просто захватывает фокус, если group_cycling равен TRUE.

grab_focus ()

Принудительно устанавливает фокус клавиатуры для widget внутри окна GtkWindow.

focus ()

move_focus ()

Сигнал, генерируемый при запросе изменения фокуса.

keynav_failed ()

Сигнал, генерируемый, если навигация по клавиатуре завершилась неудачей.

event ()

Основной цикл GTK+ генерирует три сигнала для каждого события GDK, переданного виджету: общий сигнал ::event, другой, более специфичный, сигнал, соответствующий типу переданного события (например, «key-press-event»), и, наконец, общий сигнал «event-after».

button_press_event ()

Сигнал генерируется при нажатии кнопки (обычно мыши).

button_release_event ()

Сигнал генерируется при отпускании кнопки (обычно мыши).

scroll_event ()

Сигнал генерируется при нажатии кнопки в диапазоне от 4 до 7.

motion_notify_event ()

Сигнал генерируется при перемещении указателя над GdkWindow виджета.

delete_event ()

Сигнал генерируется, если пользователь запросил закрытие окна верхнего уровня.

destroy_event ()

Сигнал генерируется при уничтожении GdkWindow.

key_press_event ()

Сигнал генерируется при нажатии клавиши.

key_release_event ()

Сигнал генерируется при отпускании клавиши.

enter_notify_event ()

Сигнал события генерируется при входе указателя в окно виджета.

leave_notify_event ()

Сигнал будет генерироваться при выходе указателя из окна виджета.

configure_event ()

Сигнал генерируется при изменении размера, позиции или стека окна виджета.

focus_in_event ()

Сигнал генерируется при входе фокуса клавиатуры в окно виджета.

focus_out_event ()

Сигнал генерируется при выходе фокуса клавиатуры из окна виджета.

map_event ()

Сигнал генерируется при отображении окна виджета.

unmap_event ()

Сигнал будет генерироваться при скрытии окна виджета.

property_notify_event ()

Сигнал генерируется при изменении или удалении свойства окна виджета.

selection_clear_event ()

Сигнал генерируется, когда окно виджета теряет владение выделением.

selection_request_event ()

Сигнал генерируется, когда другой клиент запрашивает владение выделением, которым владеет окно виджета.

selection_notify_event ()

proximity_in_event ()

proximity_out_event ()

visibility_notify_event ()

Сигнал генерируется, когда окно виджета становится скрытым или видимым.

window_state_event ()

Сигнал генерируется, когда меняется состояние окна верхнего уровня, связанного с виджетом.

damage_event ()

Сигнал генерируется, когда окно виджета, перенаправленное в другое окно, получает отрисовку.

grab_broken_event ()

Сигнал генерируется, когда захват указателя или клавиатуры в окне виджета нарушается.

selection_get ()

selection_received ()

drag_begin ()

Сигнал, испускаемый источником перетаскивания при начале перетаскивания.

drag_end ()

Сигнал, испускаемый источником перетаскивания при завершении перетаскивания.

drag_data_get ()

Сигнал, испускаемый источником перетаскивания, когда место назначения запрашивает данные, которые перетаскиваются.

drag_data_delete ()

Сигнал, испускаемый источником перетаскивания, когда перетаскивание с действием GDK_ACTION_MOVE успешно завершено.

drag_leave ()

Сигнал, испускаемый местом назначения, когда курсор покидает виджет.

drag_motion ()

Сигнал, испускаемый местом назначения, когда пользователь перемещает курсор над виджетом во время перетаскивания.

drag_drop ()

Сигнал, испускаемый местом назначения, когда пользователь опускает данные на виджет.

drag_data_received ()

Сигнал, испускаемый местом назначения, когда перетаскиваемые данные были получены.

drag_failed ()

Сигнал, испускаемый источником перетаскивания, когда перетаскивание не удалось.

popup_menu ()

Сигнал, испускаемый всякий раз, когда виджет должен отобразить контекстное меню.

show_help ()

get_accessible ()

Возвращает объект доступности, который описывает виджет для технологии вспомогательной доступности.

screen_changed ()

Сигнал, испускаемый, когда экран виджета изменился.

can_activate_accel ()

Сигнал позволяет приложениям и производным виджетам переопределить стандартное обработчик GtkWidget для определения, может ли быть активирован ускоритель.

composited_changed ()

Сигнал, испускаемый, когда статус композитинга экрана виджетов изменяется. См. gdk_screen_is_composited().

query_tooltip ()

Сигнал, испускаемый, когда «has-tooltip» равен TRUE и тайм-аут зависания курсора истек, когда курсор завис «над» виджетом; или испускается, когда виджет получил фокус в режиме клавиатуры.

compute_expand ()

Вычисляет, должен ли контейнер предоставить этому виджету дополнительное пространство, когда это возможно.

adjust_size_request ()

Преобразует начальный запрос размера из виртуальных методов реализации виджета GtkSizeRequestMode в запрос размера, используемый родительскими контейнерами для размещения виджета. adjust_size_request корректирует запрос от дочернего виджета до того, что родительский контейнер должен использовать для макета. Аргумент for_size будет равен -1, если запрос не должен быть для определенного размера в противоположном направлении, т.е. если запрос не является высотой для ширины или шириной для высоты. Если for_size больше -1, это предлагаемое выделение в противоположном направлении, для которого нам нужен запрос. Реализации adjust_size_request должны быть связаны с реализацией по умолчанию, которая применяет свойства отступа GtkWidget и накладывает любые значения из gtk_widget_set_size_request(). Связывание должно быть последним, после того, как ваш подкласс скорректирует запрос, чтобы GtkWidget мог применить ограничения и правильно добавить отступ.

adjust_size_allocation ()

Преобразует начальное выделение размера, назначенное контейнером GtkContainer с использованием gtk_widget_size_allocate(), в фактическое выделение размера, которое должно использоваться виджетом. adjust_size_allocation корректирует фактическое выделение размера дочернего виджета с учетом того, что родительский контейнер вычислил для дочернего элемента. Скорректированное выделение должно полностью находиться в пределах исходного выделения. В любой пользовательской реализации необходимо связаться со стандартной реализацией GtkWidget этого метода, которая применяет свойства отступа и выравнивания GtkWidget. Связывайтесь до выполнения собственных корректировок, чтобы ваши собственные корректировки удаляли больше выделения после того, как базовый класс GtkWidget уже удалил отступ и выравнивание. Естественный размер, переданный в метод, должен быть скорректирован таким же образом, как и выделенный размер, что позволяет корректировкам выполнять выравнивание или другие изменения на основе естественного размера.

style_updated ()

Сигнал, испускаемый, когда GtkStyleContext виджета изменяется.

touch_event ()

get_preferred_height_and_baseline_for_width ()

adjust_baseline_request ()

adjust_baseline_allocation ()

queue_draw_region ()

Делает область виджета недействительной, вызывая gdk_window_invalidate_region() на окне виджета и всех его дочерних окнах.

GtkRequisition

typedef struct {
  gint width;
  gint height;
} GtkRequisition;

A GtkRequisition represents the desired size of a widget. See GtkWidget’s geometry management section for more information.

Members

gint width;

желаемая ширина виджета

gint height;

желаемая высота виджета

GtkAllocation

typedef 	GdkRectangle	   GtkAllocation;

A GtkAllocation of a widget represents region which has been allocated to the widget by its parent. It is a subregion of its parents allocation. See GtkWidget’s geometry management section for more information.

enum GtkWidgetHelpType

Виды помощи, специфичной для виджета. Используется сигналом ::show-help.

Members

GTK_WIDGET_HELP_TOOLTIP

Подсказка.

GTK_WIDGET_HELP_WHATS_THIS

Что это?

enum GtkTextDirection

Направления чтения текста.

Members

GTK_TEXT_DIR_NONE

Нет направления.

GTK_TEXT_DIR_LTR

Направление слева направо.

GTK_TEXT_DIR_RTL

Направление справа налево.

enum GtkStateType

GtkStateType устарело с версии 3.14 и не должно использоваться в новом коде.

Все API, использующие эту перечисление, устарели в пользу альтернатив, использующих GtkStateFlags.

Этот тип указывает текущее состояние виджета; состояние определяет, как рисуется виджет. Перечисление GtkStateType также используется для идентификации различных цветов в GtkStyle для отрисовки, поэтому состояния могут использоваться как для отдельных частей виджета, так и для всего виджета.

Members

GTK_STATE_NORMAL

Состояние в нормальном режиме работы.

GTK_STATE_ACTIVE

Состояние активного виджета, например, нажатой кнопки.

GTK_STATE_PRELIGHT

Состояние, указывающее, что указатель мыши находится над виджетом и виджет будет реагировать на щелчки мыши.

GTK_STATE_SELECTED

Состояние выбранного элемента, например, выбранной строки в списке.

GTK_STATE_INSENSITIVE

Состояние, указывающее, что виджет не реагирует на действия пользователя.

GTK_STATE_INCONSISTENT

Состояние виджета, не соответствующее ожидаемому состоянию. Например, флажки или переключатели, не установленные ни в TRUE, ни в FALSE состояния, или кнопки, требующие внимания пользователя.

GTK_STATE_FOCUSED

Виджет имеет фокус клавиатуры.

enum GtkSizeRequestMode

Определяет предпочтение для управления геометрией по высоте-для-ширины или ширине-для-высоты.

Members

GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH

Предпочтение управления геометрией по высоте-для-ширины

GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT

Предпочтение управления геометрией по ширине-для-высоты

GTK_SIZE_REQUEST_CONSTANT_SIZE

Не менять высоту-для-ширины или ширину-для-высоты

struct GtkRequestedSize

struct GtkRequestedSize {
  gpointer data;
  gint     minimum_size;
  gint     natural_size;
};

Представляет запрос объекта экрана в заданной ориентации. Они в основном используются в реализациях контейнеров при выделении естественного размера для дочерних элементов при вызове. См. gtk_distribute_natural_allocation().

Members

gpointer data;

Указатель клиента

gint minimum_size;

Минимальный размер, необходимый для выделения в данной ориентации

gint natural_size;

Естественный размер для выделения в заданной ориентации

enum GtkAlign

Управляет тем, как виджет обрабатывает дополнительное пространство в одном измерении (x или y).

Выравнивание имеет значение только если виджет получает “слишком большое” выделение, например, если вы добавили виджет с флагом “expand” в GtkBox, тогда виджет может получить дополнительное пространство. Если у вас, например, значок 16x16 в пространстве 32x32, значок может быть масштабирован и растянут, может быть центрирован или расположен на одной стороне пространства.

Обратите внимание, что в горизонтальном контексте GTK_ALIGN_START и GTK_ALIGN_END интерпретируются относительно направления текста.

Поддержка GTK_ALIGN_BASELINE для контейнеров и виджетов является необязательной, и она поддерживается только для вертикального выравнивания. Если она не поддерживается дочерним элементом или контейнером, она обрабатывается как GTK_ALIGN_FILL.

Members

GTK_ALIGN_FILL

растягивается, чтобы заполнить все пространство, если возможно, центрируется, если нет осмысленного способа растянуть

GTK_ALIGN_START

прилипает к левой или верхней стороне, оставляя пространство справа или снизу

GTK_ALIGN_END

прилипает к правой или нижней стороне, оставляя пространство слева или сверху

GTK_ALIGN_CENTER

центрирует естественную ширину виджета внутри выделения

GTK_ALIGN_BASELINE

выравнивает виджет относительно базовой линии. С версии 3.10.

Подробное описание свойств

Свойство “app-paintable”

  “app-paintable”            gboolean

Определяет, будет ли приложение рисовать непосредственно на виджете.

Флаги: Чтение/Запись

Значение по умолчанию: FALSE

Свойство “can-default”

  “can-default”              gboolean

Определяет, может ли виджет быть виджетом по умолчанию.

Флаги: Чтение/Запись

Значение по умолчанию: FALSE

Свойство “can-focus”

  “can-focus”                gboolean

Определяет, может ли виджет принимать фокус ввода.

Флаги: Чтение/Запись

Значение по умолчанию: FALSE

Свойство “composite-child”

  “composite-child”          gboolean

Определяет, является ли виджет частью составного виджета.

Флаги: Чтение

Значение по умолчанию: FALSE

Свойство “double-buffered”

  “double-buffered”          gboolean

Определяет, является ли виджет буферизованным с двойной буферизацией.

GtkWidget:double-buffered устарело с версии 3.14 и не должно использоваться в новом коде.

Виджеты не должны использовать это свойство.

Флаги: Чтение/Запись

Значение по умолчанию: TRUE

С версии: 2.18

Свойство “events”

  “events”                   GdkEventMask

Маска событий, определяющая, какие события GdkEvents получает этот виджет.

Флаги: Чтение/Запись

Значение по умолчанию: GDK_STRUCTURE_MASK

Свойство “expand”

  “expand”                   gboolean

Определяет, нужно ли расширять виджет в обоих направлениях. Установка этого свойства задает значения как для “hexpand”, так и для “vexpand”.

Флаги: Чтение/Запись

Значение по умолчанию: FALSE

С версии: 3.0

Свойство “focus-on-click”

  “focus-on-click”           gboolean

Определяет, должен ли виджет получить фокус при щелчке по нему мышкой.

Это свойство актуально только для виджетов, которые могут принимать фокус.

До версии 3.20 несколько виджетов (GtkButton, GtkFileChooserButton, GtkComboBox) реализовывали это свойство индивидуально.

Флаги: Чтение/Запись

Значение по умолчанию: TRUE

С версии: 3.20

Свойство “halign”

  “halign”                   GtkAlign

Как распределять горизонтальное пространство, если виджет получает дополнительное пространство, см. GtkAlign.

Флаги: Чтение/Запись

Значение по умолчанию: GTK_ALIGN_FILL

С версии: 3.0

Свойство “has-default”

  “has-default”              gboolean

Определяет, является ли виджет виджетом по умолчанию.

Флаги: Чтение/Запись

Значение по умолчанию: FALSE

Свойство “has-focus”

  “has-focus”                gboolean

Определяет, имеет ли виджет фокус ввода.

Флаги: Чтение/Запись

Значение по умолчанию: FALSE

Свойство “has-tooltip”

  “has-tooltip”              gboolean

Включает или отключает отправку сигнала “query-tooltip” на widget . Значение TRUE означает, что widget может иметь подсказку, в этом случае виджет будет запрошен с помощью сигнала “query-tooltip” для определения, предоставит ли он подсказку.

Обратите внимание, что установка этого свойства в TRUE в первый раз изменит маски событий GdkWindows этого виджета, добавив события leave-notify и motion-notify. Это невозможно и не будет отменено, когда свойство будет установлено в FALSE

Флаги: Чтение/Запись

Значение по умолчанию: FALSE

С версии: 2.12

Свойство “height-request”

  “height-request”           gint

Переопределение запрошенной высоты виджета или -1, если нужно использовать естественный запрос.

Флаги: Чтение/Запись

Допустимые значения: >= -1

Значение по умолчанию: -1

Свойство “hexpand”

  “hexpand”                  gboolean

Определяет, нужно ли расширять виджет по горизонтали. Смотрите gtk_widget_set_hexpand().

Флаги: Чтение/Запись

Значение по умолчанию: FALSE

С версии: 3.0

Свойство “hexpand-set”

  “hexpand-set”              gboolean

Определяет, нужно ли использовать свойство “hexpand”. Смотрите gtk_widget_get_hexpand_set().

Флаги: Чтение/Запись

Значение по умолчанию: FALSE

С версии: 3.0

Свойство “is-focus”

  “is-focus”                 gboolean

Определяет, является ли виджет виджетом фокуса в главном окне.

Флаги: Чтение/Запись

Значение по умолчанию: FALSE

Свойство “margin”

  “margin”                   gint

Устанавливает отступы сразу для всех четырёх сторон. Если читается, возвращает максимальный отступ для любой стороны.

Флаги: Чтение/Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.0

Свойство “margin-bottom”

  “margin-bottom”            gint

Отступ снизу виджета.

Это свойство добавляет отступ снаружи от обычного запроса размера виджета, отступ будет добавлен к размеру из gtk_widget_set_size_request(), например.

Флаги: Чтение/Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.0

Свойство “margin-end”

  “margin-end”               gint

Отступ справа от виджета по горизонтали. Это свойство поддерживает направления текста слева направо и справа налево.

Это свойство добавляет отступ снаружи от обычного запроса размера виджета, отступ будет добавлен к размеру из gtk_widget_set_size_request(), например.

Флаги: Чтение/Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.12

Свойство “margin-left”

  “margin-left”              gint

Отступ слева от виджета.

Это свойство добавляет отступ снаружи от обычного запроса размера виджета, отступ будет добавлен к размеру из gtk_widget_set_size_request(), например.

GtkWidget:margin-left устарело с версии 3.12 и не должно использоваться в новом коде.

Используйте “margin-start” вместо него.

Флаги: Чтение/Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.0

Свойство “margin-right”

  “margin-right”             gint

Отступ справа от виджета.

Это свойство добавляет отступ снаружи от обычного запроса размера виджета, отступ будет добавлен к размеру из gtk_widget_set_size_request(), например.

GtkWidget:margin-right устарело с версии 3.12 и не должно использоваться в новом коде.

Используйте “margin-end” вместо него.

Флаги: Чтение/Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.0

Свойство “margin-start”

  “margin-start”             gint

Отступ слева от виджета по горизонтали. Это свойство поддерживает направления текста слева направо и справа налево.

Это свойство добавляет отступ снаружи от обычного запроса размера виджета, отступ будет добавлен к размеру из gtk_widget_set_size_request(), например.

Флаги: Чтение/Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.12

Свойство “margin-top”

  “margin-top”               gint

Поля сверху виджета.

Это свойство добавляет поля снаружи от обычного размера запроса виджета, поля будут добавлены дополнительно к размеру из gtk_widget_set_size_request(), например.

Флаги: Чтение / Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.0

Свойство “name”

  “name”                     gchar *

Имя виджета.

Флаги: Чтение / Запись

Значение по умолчанию: NULL

Свойство “no-show-all”

  “no-show-all”              gboolean

Определяет, будет ли gtk_widget_show_all() влиять на этот виджет.

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “opacity”

  “opacity”                  gdouble

Запрошенная непрозрачность виджета. Подробнее о непрозрачности окна см. в gtk_widget_set_opacity().

До версии 3.8 это свойство было доступно только в GtkWindow

Флаги: Чтение / Запись

Допустимые значения: [0,1]

Значение по умолчанию: 1

С версии: 3.8

Свойство “parent”

  “parent”                   GtkContainer *

Родительский виджет этого виджета. Должен быть виджетом типа Контейнер.

Флаги: Чтение / Запись

Свойство “receives-default”

  “receives-default”         gboolean

Если TRUE, виджет получит действие по умолчанию при фокусировке.

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “scale-factor”

  “scale-factor”             gint

Коэффициент масштабирования виджета. Подробнее о масштабировании виджетов см. в gtk_widget_get_scale_factor().

Флаги: Чтение

Допустимые значения: >= 1

Значение по умолчанию: 1

С версии: 3.10

Свойство “sensitive”

  “sensitive”                gboolean

Определяет, реагирует ли виджет на входные данные.

Флаги: Чтение / Запись

Значение по умолчанию: TRUE

Свойство “style”

  “style”                    GtkStyle *

Стиль виджета, содержащий информацию о его внешнем виде (цвета и т. д.).

Флаги: Чтение / Запись

Свойство “tooltip-markup”

  “tooltip-markup”           gchar *

Устанавливает текст всплывающей подсказки в виде заданной строки, отформатированной с помощью языка разметки текста Pango. Также см. gtk_tooltip_set_markup().

Это удобное свойство, которое позаботится о отображении всплывающей подсказки, если заданная строка не равна NULL: свойство “has-tooltip” будет автоматически установлено в TRUE, и будет обработано событие “query-tooltip” в обработчике сигнала по умолчанию.

Обратите внимание, что если установлены оба свойства “tooltip-text” и “tooltip-markup”, то приоритет отдается последнему.

Флаги: Чтение / Запись

Значение по умолчанию: NULL

С версии: 2.12

Свойство “tooltip-text”

  “tooltip-text”             gchar *

Устанавливает текст всплывающей подсказки в виде заданной строки.

Также см. gtk_tooltip_set_text().

Это удобное свойство, которое позаботится о отображении всплывающей подсказки, если заданная строка не равна NULL: свойство “has-tooltip” будет автоматически установлено в TRUE, и будет обработано событие “query-tooltip” в обработчике сигнала по умолчанию.

Обратите внимание, что если установлены оба свойства “tooltip-text” и “tooltip-markup”, то приоритет отдается последнему.

Флаги: Чтение / Запись

Значение по умолчанию: NULL

С версии: 2.12

Свойство “valign”

  “valign”                   GtkAlign

Как распределять вертикальное пространство, если виджет получает дополнительное пространство, см. GtkAlign

Флаги: Чтение / Запись

Значение по умолчанию: GTK_ALIGN_FILL

С версии: 3.0

Свойство “vexpand”

  “vexpand”                  gboolean

Расширять ли вертикально. См. gtk_widget_set_vexpand().

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 3.0

Свойство “vexpand-set”

  “vexpand-set”              gboolean

Использовать ли свойство “vexpand”. См. gtk_widget_get_vexpand_set().

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 3.0

Свойство “visible”

  “visible”                  gboolean

Видимость виджета.

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “width-request”

  “width-request”            gint

Переопределение запроса ширины виджета, или -1, если необходимо использовать естественный запрос.

Флаги: Чтение / Запись

Допустимые значения: >= -1

Значение по умолчанию: -1

Свойство “window”

  “window”                   GdkWindow *

Окно виджета, если оно реализовано, NULL в противном случае.

Флаги: Чтение

С версии: 2.14

Подробности свойств стиля

Свойство стиля “cursor-aspect-ratio”

  “cursor-aspect-ratio”      gfloat

Соотношение сторон для отображения курсора вставки.

Флаги: Чтение

Допустимые значения: [0,1]

Значение по умолчанию: 0,04

Свойство стиля “cursor-color”

  “cursor-color”             GdkColor *

Цвет курсора вставки в строках и текстовых представлениях.

GtkWidget:cursor-color устарело начиная с версии 3.20 и не должно использоваться в новом коде.

Используйте свойство CSS caret-color

Флаги: Чтение

Свойство стиля “focus-line-pattern”

  “focus-line-pattern”       gchar *

Свойство «focus-line-pattern» определяет шаблон штриховки, используемый для отображения индикатора фокуса. Значения символов интерпретируются как ширина пикселей чередующихся включенных и выключенных сегментов линии.

GtkWidget:focus-line-pattern устарело начиная с версии 3.14 и не должно использоваться в новом коде.

используйте вместо этого свойство outline-style CSS.

Флаги: Чтение

Значение по умолчанию: «\001\001»

Свойство стиля “focus-line-width”

  “focus-line-width”         gint

Свойство «focus-line-width» определяет ширину, в пикселях, линии индикатора фокуса.

GtkWidget:focus-line-width устарело начиная с версии 3.14 и не должно использоваться в новом коде.

используйте вместо этого свойства outline-width и padding CSS.

Флаги: Чтение

Допустимые значения: ≥ 0

Значение по умолчанию: 1

Свойство стиля “focus-padding”

  “focus-padding”            gint

Свойство «focus-padding» определяет ширину, в пикселях, между индикатором фокуса и «рамкой» виджета.

GtkWidget:focus-padding устарело начиная с версии 3.14 и не должно использоваться в новом коде.

используйте вместо этого свойства outline-offset CSS.

Флаги: Чтение

Допустимые значения: ≥ 0

Значение по умолчанию: 1

Свойство стиля “interior-focus”

  “interior-focus”           gboolean

Свойство «interior-focus» определяет, отображать ли индикатор фокуса внутри виджетов.

GtkWidget:interior-focus устарело начиная с версии 3.14 и не должно использоваться в новом коде.

используйте вместо этого свойства outline CSS.

Флаги: Чтение

Значение по умолчанию: TRUE

Свойство стиля “link-color”

  “link-color”               GdkColor *

Свойство «link-color» определяет цвет не посещённых ссылок.

GtkWidget:link-color устарело начиная с версии 3.12 и не должно использоваться в новом коде.

Ссылки теперь используют отдельные флаги состояния для выбора различной темы; это свойство стиля игнорируется.

Флаги: Чтение

С: 2.10

Свойство стиля “scroll-arrow-hlength”

  “scroll-arrow-hlength”     gint

Свойство «scroll-arrow-hlength» определяет длину горизонтальных стрелок прокрутки.

Флаги: Чтение

Допустимые значения: ≥ 1

Значение по умолчанию: 16

С: 2.10

Свойство стиля “scroll-arrow-vlength”

  “scroll-arrow-vlength”     gint

Свойство «scroll-arrow-vlength» определяет длину вертикальных стрелок прокрутки.

Флаги: Чтение

Допустимые значения: ≥ 1

Значение по умолчанию: 16

С: 2.10

Свойство стиля “secondary-cursor-color”

  “secondary-cursor-color”   GdkColor *

Цвет вторичного курсора вставки в строках и текстовых представлениях при редактировании текста со смешанным направлением справа налево и слева направо.

GtkWidget:secondary-cursor-color устарело начиная с версии 3.20 и не должно использоваться в новом коде.

Используйте свойство CSS -gtk-secondary-caret-color

Флаги: Чтение

Свойство стиля “separator-height”

  “separator-height”         gint

Свойство «separator-height» определяет высоту разделителей. Это свойство применяется только в том случае, если свойство «wide-separators» равно TRUE.

GtkWidget:separator-height устарело начиная с версии 3.20 и не должно использоваться в новом коде.

Используйте стандартное свойство min-height CSS для элементов разделителя для настройки их размера; значение этого свойства стиля игнорируется.

Флаги: Чтение

Допустимые значения: ≥ 0

Значение по умолчанию: 0

С: 2.10

Свойство стиля “separator-width”

  “separator-width”          gint

Свойство «separator-width» определяет ширину разделителей. Это свойство применяется только в том случае, если свойство «wide-separators» равно TRUE.

GtkWidget:separator-width устарело начиная с версии 3.20 и не должно использоваться в новом коде.

Используйте стандартное свойство min-width CSS для элементов разделителя для настройки их размера; значение этого свойства стиля игнорируется.

Флаги: Чтение

Допустимые значения: ≥ 0

Значение по умолчанию: 0

С: 2.10

Свойство стиля “text-handle-height”

  “text-handle-height”       gint

Высота маркеров выделения текста.

Флаги: Чтение

Допустимые значения: ≥ 1

Значение по умолчанию: 20

Свойство стиля “text-handle-width”

  “text-handle-width”        gint

Ширина маркеров выделения текста.

Флаги: Чтение

Допустимые значения: ≥ 1

Значение по умолчанию: 16

Свойство стиля “visited-link-color”

  “visited-link-color”       GdkColor *

Свойство «visited-link-color» определяет цвет посещённых ссылок.

GtkWidget:visited-link-color устарело начиная с версии 3.12 и не должно использоваться в новом коде.

Ссылки теперь используют отдельные флаги состояния для выбора различной темы; это свойство стиля игнорируется.

Флаги: Чтение

С: 2.10

Свойство стиля “wide-separators”

  “wide-separators”          gboolean

Свойство «wide-separators» определяет, имеют ли разделители настраиваемую ширину и должны ли они отображаться как рамка, а не линия.

GtkWidget:wide-separators устарело начиная с версии 3.20 и не должно использоваться в новом коде.

Используйте свойства CSS для элементов разделителя для настройки их отображения; значение этого свойства стиля игнорируется.

Флаги: Чтение

Значение по умолчанию: FALSE

С: 2.10

Свойство стиля “window-dragging”

  “window-dragging”          gboolean

Можно ли перетаскивать и максимизировать окна, нажав на пустые области.

Флаги: Чтение

Значение по умолчанию: FALSE

Подробности сигналов

Сигнал “accel-closures-changed”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Сигнал “button-press-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::button-press-event будет выпущен при нажатии кнопки (обычно мыши).

Для получения этого сигнала связанному с виджетом GdkWindow необходимо включить маску GDK_BUTTON_PRESS_MASK.

Этот сигнал будет отправлен виджету, захватившему мышь, если таковой имеется.

Параметры

widget

объект, получивший сигнал.

event

структура GdkEventButton, вызвавшая этот сигнал.

[type Gdk.EventButton]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Запускать последним

Сигнал “button-release-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::button-release-event будет выпущен при отпускании кнопки (обычно мыши).

Для получения этого сигнала связанному с виджетом GdkWindow необходимо включить маску GDK_BUTTON_RELEASE_MASK.

Этот сигнал будет отправлен виджету, захватившему мышь, если таковой имеется.

Параметры

widget

объект, получивший сигнал.

event

структура GdkEventButton, вызвавшая этот сигнал.

[type Gdk.EventButton]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Запускать последним

Сигнал “can-activate-accel”

gboolean
user_function (GtkWidget *widget,
               guint      signal_id,
               gpointer   user_data)

Определяет, можно ли в настоящее время активировать акцелератор, который активирует сигнал, идентифицированный как signal_id. Этот сигнал присутствует, чтобы позволить приложениям и производным виджетам переопределять стандартную обработку GtkWidget для определения возможности активации акцелератора.

Параметры

widget

объект, получивший сигнал

signal_id

Идентификатор сигнала, установленного на widget

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, если сигнал может быть активирован.

Флаги: Запускать последним

Сигнал “child-notify”

void
user_function (GtkWidget  *widget,
               GParamSpec *child_property,
               gpointer    user_data)

Сигнал ::child-notify генерируется для каждого свойства дочернего объекта, которое изменилось. Подробности сигнала содержат имя свойства.

Параметры

widget

объект, получивший сигнал

child_property

Объект GParamSpec измененного свойства дочернего объекта

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Без крючков

Сигнал “composited-changed”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::composited-changed генерируется, когда изменяется статус композиции экрана widgets. См. gdk_screen_is_composited().

Параметры

widget

объект, на котором генерируется сигнал

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Действие

Сигнал “configure-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::configure-event будет выпущен при изменении размера, положения или расположения окна виджета widget.

Для получения этого сигнала связанному с виджетом GdkWindow необходимо включить маску GDK_STRUCTURE_MASK. GDK автоматически включит эту маску для всех новых окон.

Параметры

widget

объект, получивший сигнал

event

структура GdkEventConfigure, вызвавшая этот сигнал.

[type Gdk.EventConfigure]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Запускать последним

Сигнал “damage-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Выпускается, когда перенаправленное окно, принадлежащее widget, попадает в область рисования. Члены события region/area показывают, какая область перенаправленного рисунка была обработана.

Параметры

widget

объект, получивший сигнал

event

событие GdkEventExpose.

[type Gdk.EventExpose]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, чтобы остановить вызов других обработчиков для события. FALSE, чтобы продолжить распространение события.

Флаги: Выполнить последним

С версии: 2.14

Сигнал “delete-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::delete-event генерируется, если пользователь запрашивает закрытие окна верхнего уровня. По умолчанию обработчик этого сигнала уничтожает окно. Подключение gtk_widget_hide_on_delete() к этому сигналу приведет к скрытию окна вместо уничтожения, чтобы его можно было показать позже без пересоздания.

Параметры

widget

объект, получивший сигнал

event

событие, которое спровоцировало этот сигнал

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, чтобы остановить вызов других обработчиков для события. FALSE, чтобы продолжить распространение события.

Флаги: Выполнить последним

Сигнал “destroy”

void
user_function (GtkWidget *object,
               gpointer   user_data)

Сигнализирует всем держателям ссылки на виджет об освобождении удерживаемой ими ссылки. Может привести к окончательной обработке виджета, если все ссылки освобождены.

Этот сигнал не подходит для сохранения состояния виджета.

Параметры

object

объект, получивший сигнал

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Без хуков

Сигнал “destroy-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::destroy-event генерируется при уничтожении GdkWindow. Вам этот сигнал редко нужен, поскольку большинство виджетов отключаются от своего окна перед его уничтожением, поэтому ни один виджет не владеет окном во время уничтожения.

Для получения этого сигнала связанное с виджетом GdkWindow окно должно разрешить маску GDK_STRUCTURE_MASK. GDK автоматически разрешит эту маску для всех новых окон.

Параметры

widget

объект, получивший сигнал.

event

событие, которое спровоцировало этот сигнал

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, чтобы остановить вызов других обработчиков для события. FALSE, чтобы продолжить распространение события.

Флаги: Выполнить последним

Сигнал “direction-changed”

void
user_function (GtkWidget       *widget,
               GtkTextDirection previous_direction,
               gpointer         user_data)

Сигнал ::direction-changed генерируется при изменении направления текста в виджете.

Параметры

widget

объект, на котором генерируется сигнал

previous_direction

предыдущее направление текста для widget

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Выполнить первым

Сигнал “drag-begin”

void
user_function (GtkWidget      *widget,
               GdkDragContext *context,
               gpointer        user_data)

Сигнал ::drag-begin генерируется на источнике перетаскивания при старте операции. Типичное применение подключения к этому сигналу — настройка пользовательского значка перетаскивания, например, с помощью gtk_drag_source_set_icon_pixbuf().

Обратите внимание, что некоторые виджеты настраивают значок перетаскивания в обработчике этого сигнала по умолчанию, поэтому вам может потребоваться использовать g_signal_connect_after(), чтобы переопределить действия обработчика по умолчанию.

Параметры

widget

объект, получивший сигнал

context

контекст перетаскивания

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Выполнить последним

Сигнал “drag-data-delete”

void
user_function (GtkWidget      *widget,
               GdkDragContext *context,
               gpointer        user_data)

Сигнал ::drag-data-delete генерируется на источнике перетаскивания при успешном завершении операции перетаскивания с действием GDK_ACTION_MOVE. Обработчик сигнала отвечает за удаление данных, которые были перетащены. Что означает "удалить", зависит от контекста операции перетаскивания.

Параметры

widget

объект, получивший сигнал

context

контекст перетаскивания

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Выполнить последним

Сигнал “drag-data-get”

void
user_function (GtkWidget        *widget,
               GdkDragContext   *context,
               GtkSelectionData *data,
               guint             info,
               guint             time,
               gpointer          user_data)

Сигнал ::drag-data-get генерируется в источнике перетаскивания, когда целевой объект запрашивает перетаскиваемые данные. Обработчик сигнала отвечает за заполнение data данными в формате, указанном в info. См. gtk_selection_data_set() и gtk_selection_data_set_text().

Параметры

widget

объект, получивший сигнал

context

контекст перетаскивания

data

GtkSelectionData для заполнения данными, которые перетаскиваются

info

информация, зарегистрированная целевым объектом в GtkTargetList

time

временная метка запроса данных

user_data

пользовательские данные, заданные при подключении обработчика сигнала.

Флаги: Запуск последним

Сигнал “drag-data-received”

void
user_function (GtkWidget        *widget,
               GdkDragContext   *context,
               gint              x,
               gint              y,
               GtkSelectionData *data,
               guint             info,
               guint             time,
               gpointer          user_data)

Сигнал ::drag-data-received генерируется в целевом объекте, когда перетаскиваемые данные получены. Если данные были получены для определения, будет ли выполнено перетаскивание, обработчик должен вызвать gdk_drag_status() и не завершать перетаскивание. Если данные были получены в ответ на сигнал “drag-drop” (и это последний целевой объект), обработчик этого сигнала должен обработать полученные данные и затем вызвать gtk_drag_finish(), установив параметр success в зависимости от того, были ли данные обработаны успешно.

Приложения должны предусмотреть способ определить причину генерации сигнала и, следовательно, вызвать ли gdk_drag_status() или gtk_drag_finish().

Обработчик может проверить выбранное действие с помощью gdk_drag_context_get_selected_action() перед вызовом gtk_drag_finish(), например, для реализации GDK_ACTION_ASK, как показано в следующем примере:

Параметры

widget

объект, получивший сигнал

context

контекст перетаскивания

x

место падения

y

место падения

data

полученные данные

info

информация, зарегистрированная целевым объектом в GtkTargetList

time

временная метка получения данных

user_data

пользовательские данные, заданные при подключении обработчика сигнала.

Флаги: Запуск последним

Сигнал “drag-drop”

gboolean
user_function (GtkWidget      *widget,
               GdkDragContext *context,
               gint            x,
               gint            y,
               guint           time,
               gpointer        user_data)

Сигнал ::drag-drop генерируется в целевом объекте, когда пользователь опускает данные на виджет. Обработчик сигнала должен определить, находится ли курсор в области отпуска. Если он не находится в области отпуска, он возвращает FALSE, и дальнейшая обработка не требуется. В противном случае обработчик возвращает TRUE. В этом случае обработчик должен убедиться, что gtk_drag_finish() вызывается, чтобы сообщить источнику о завершении отпуска. Вызов gtk_drag_finish() может быть выполнен непосредственно или в обработчике “drag-data-received”, который запускается при вызове gtk_drag_get_data() для получения данных для одного или нескольких поддерживаемых целевых объектов.

Параметры

widget

объект, получивший сигнал

context

контекст перетаскивания

x

координата x текущего положения курсора

y

координата y текущего положения курсора

time

временная метка события перемещения

user_data

пользовательские данные, заданные при подключении обработчика сигнала.

Возвращаемое значение

находится ли курсор в области отпуска

Флаги: Запуск последним

Сигнал “drag-end”

void
user_function (GtkWidget      *widget,
               GdkDragContext *context,
               gpointer        user_data)

Сигнал ::drag-end генерируется в источнике перетаскивания при завершении перетаскивания. Типичная причина подключения к этому сигналу — отмена действий, выполненных в “drag-begin”.

Параметры

widget

объект, получивший сигнал

context

контекст перетаскивания

user_data

пользовательские данные, заданные при подключении обработчика сигнала.

Флаги: Запуск последним

Сигнал “drag-failed”

gboolean
user_function (GtkWidget      *widget,
               GdkDragContext *context,
               GtkDragResult   result,
               gpointer        user_data)

Сигнал ::drag-failed генерируется в источнике перетаскивания, когда перетаскивание завершилось неудачно. Обработчик сигнала может подключить пользовательский код для обработки неудачной операции перетаскивания и падения в зависимости от типа ошибки. Он возвращает TRUE, если ошибка уже обработана (анимация по умолчанию "операция перетаскивания не удалась" не отображается), иначе возвращает FALSE.

Параметры

widget

объект, получивший сигнал

context

контекст перетаскивания

result

результат операции перетаскивания

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, если неудачная операция перетаскивания уже обработана.

Флаги: Run Last

С версии: 2.12

Сигнал “drag-leave”

void
user_function (GtkWidget      *widget,
               GdkDragContext *context,
               guint           time,
               gpointer        user_data)

Сигнал ::drag-leave генерируется на месте выгрузки, когда курсор покидает виджет. Типичная причина подключения к этому сигналу — отмена действий, выполненных в «drag-motion», например, отмена выделения с помощью gtk_drag_unhighlight().

Аналогично, сигнал «drag-leave» также генерируется перед сигналом ::drag-drop, например, для очистки предварительного элемента, созданного в обработчике сигнала «drag-motion».

Параметры

widget

объект, получивший сигнал.

context

контекст перетаскивания

time

метка времени события движения

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Флаги: Run Last

Сигнал “drag-motion”

gboolean
user_function (GtkWidget      *widget,
               GdkDragContext *context,
               gint            x,
               gint            y,
               guint           time,
               gpointer        user_data)

Сигнал ::drag-motion генерируется на месте выгрузки, когда пользователь перемещает курсор над виджетом во время перетаскивания. Обработчик сигнала должен определить, находится ли позиция курсора в зоне выгрузки или нет. Если нет, он возвращает FALSE, и дальнейшая обработка не требуется. В противном случае, обработчик возвращает TRUE. В этом случае обработчик отвечает за предоставление необходимой информации для отображения обратной связи пользователю, вызвав gdk_drag_status().

Если решение о том, будет ли выгрузка принята или отклонена, не может быть принято только на основе положения курсора и типа данных, обработчик может проверить перетаскиваемые данные, вызвав gtk_drag_get_data() и отложить вызов gdk_drag_status() до обработчика сигнала «drag-data-received». Обратите внимание, что при использовании сигнала drag-motion таким образом вы должны передать GTK_DEST_DEFAULT_DROP, GTK_DEST_DEFAULT_MOTION или GTK_DEST_DEFAULT_ALL в gtk_drag_dest_set().

Также обратите внимание, что сигнала drag-enter нет. Приёмник перетаскивания должен отслеживать, получил ли он какие-либо сигналы drag-motion с момента последнего сигнала «drag-leave», и, если нет, рассматривать сигнал drag-motion как сигнал "входа". При получении сигнала "входа" обработчик, как правило, подсвечивает место выгрузки с помощью gtk_drag_highlight().

static void
foo_widget_get_preferred_height (GtkWidget *widget,
                                 gint *min_height,
                                 gint *nat_height)
{
   if (i_am_in_height_for_width_mode)
     {
       gint min_width, nat_width;

       GTK_WIDGET_GET_CLASS (widget)->get_preferred_width (widget,
                                                           &min_width,
                                                           &nat_width);
       GTK_WIDGET_GET_CLASS (widget)->get_preferred_height_for_width
                                                          (widget,
                                                           min_width,
                                                           min_height,
                                                           nat_height);
     }
   else
     {
        ... some widgets do both. For instance, if a GtkLabel is
        rotated to 90 degrees it will return the minimum and
        natural height for the rotated label here.
     }
}

Параметры

widget

объект, получивший сигнал

context

контекст перетаскивания

x

координата x текущего положения курсора

y

координата y текущего положения курсора

time

метка времени события движения

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Возвращаемое значение

находится ли позиция курсора в зоне выгрузки

Флаги: Run Last

Сигнал “draw”

gboolean
user_function (GtkWidget    *widget,
               CairoContext *cr,
               gpointer      user_data)

Этот сигнал генерируется, когда виджет должен отобразить себя. Левый верхний угол widget должен быть нарисован в начале переданного контекста и иметь размер, соответствующий значениям, возвращаемым gtk_widget_get_allocated_width() и gtk_widget_get_allocated_height().

Обработчики сигналов, подключенные к этому сигналу, могут изменять контекст cairo, переданный как cr, любым способом, и не обязаны его восстанавливать. Генерация сигнала позаботится о вызове cairo_save() перед и cairo_restore() после вызова обработчика.

Обработчик сигнала получит cr с областью обрезки, уже заданной для грязной области виджета, то есть для области, требующей перерисовки. Сложные виджеты, которые хотят избежать полной перерисовки, могут получить полные размеры области обрезки с помощью gdk_cairo_get_clip_rectangle(), или они могут получить более детальное представление о грязной области с помощью cairo_copy_clip_rectangle_list().

Параметры

widget

объект, получивший сигнал

cr

контекст cairo для рисования

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. % FALSE для дальнейшей передачи события.

Флаги: Run Last

С версии: 3.0

Сигнал “enter-notify-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::enter-notify-event будет испущен, когда указатель войдёт в окно виджета widget.

Для получения этого сигнала, связанный с виджетом GdkWindow должен быть активирован бит маски GDK_ENTER_NOTIFY_MASK.

Этот сигнал будет отправлен виджету захвата, если таковой имеется.

Параметры

widget

объект, получивший сигнал

event

событие GdkEventCrossing, вызвавшее этот сигнал.

[type Gdk.EventCrossing]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для прекращения вызова других обработчиков события. FALSE для дальнейшей обработки события.

Флаги: Выполнять последним

Сигнал “event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Основной цикл GTK+ отправит три сигнала для каждого события GDK, доставленного виджету: один общий сигнал ::event, другой, более специфичный, соответствующий типу доставленного события (например, “key-press-event”) и, наконец, общий сигнал “event-after”.

Параметры

widget

объект, получивший сигнал.

event

событие GdkEvent, вызвавшее этот сигнал

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для прекращения вызова других обработчиков события и отмены отправки второго, более специфичного, сигнала ::event. FALSE для дальнейшей обработки события и разрешения отправки второго сигнала. Сигнал ::event-after отправляется независимо от возвращаемого значения.

Флаги: Выполнять последним

Сигнал “event-after”

void
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

После отправки сигнала “event” и (необязательно) второго, более специфичного сигнала, ::event-after будет отправлен независимо от возвращаемых значений обработчиков двух предыдущих сигналов.

Параметры

widget

объект, получивший сигнал.

event

событие GdkEvent, вызвавшее этот сигнал

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Сигнал “focus”

gboolean
user_function (GtkWidget       *widget,
               GtkDirectionType direction,
               gpointer         user_data)

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для прекращения вызова других обработчиков события. FALSE для дальнейшей обработки события.

Флаги: Выполнять последним

Сигнал “focus-in-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::focus-in-event будет испущен, когда фокус клавиатуры перейдёт в окно виджета widget.

Для получения этого сигнала, связанный с виджетом GdkWindow должен быть активирован бит маски GDK_FOCUS_CHANGE_MASK.

Параметры

widget

объект, получивший сигнал

event

событие GdkEventFocus, вызвавшее этот сигнал.

[type Gdk.EventFocus]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для прекращения вызова других обработчиков события. FALSE для дальнейшей обработки события.

Флаги: Выполнять последним

Сигнал “focus-out-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::focus-out-event будет испущен, когда фокус клавиатуры покинет окно виджета widget.

Для получения этого сигнала, связанный с виджетом GdkWindow должен быть активирован бит маски GDK_FOCUS_CHANGE_MASK.

Параметры

widget

объект, получивший сигнал

event

событие GdkEventFocus, вызвавшее этот сигнал.

[type Gdk.EventFocus]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для прекращения вызова других обработчиков события. FALSE для дальнейшей обработки события.

Флаги: Выполнять последним

Сигнал “grab-broken-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Вызывается при разрыве захвата указателя или клавиатуры на окне, принадлежащем widget.

В X11 это происходит, когда захватное окно становится невидимым (то есть оно или один из его предков не отображается) или если то же приложение снова захватывает указатель или клавиатуру.

Параметры

widget

объект, получивший сигнал

event

событие GdkEventGrabBroken.

[type Gdk.EventGrabBroken]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Run Last

С: 2.8

Сигнал “grab-focus”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Action

Сигнал “grab-notify”

void
user_function (GtkWidget *widget,
               gboolean   was_grabbed,
               gpointer   user_data)

Сигнал ::grab-notify генерируется, когда виджет становится затенённым GTK+ захватом (не захватом указателя или клавиатуры) на другом виджете или когда он перестаёт быть затенённым из-за удаления захвата.

Виджет затеняется с помощью gtk_grab_add(), когда виджет с верхним захватом в стеке захватов его группы окон не является его предком.

Параметры

widget

объект, получивший сигнал

was_grabbed

FALSE, если виджет затенён, TRUE, если он перестаёт быть затенённым

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run First

Сигнал “hide”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::hide генерируется, когда widget скрывается, например, с помощью gtk_widget_hide().

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run First

Сигнал “hierarchy-changed”

void
user_function (GtkWidget *widget,
               GtkWidget *previous_toplevel,
               gpointer   user_data)

Сигнал ::hierarchy-changed генерируется, когда изменяется привязанное состояние виджета. Виджет «привязан», когда его верхний предок — GtkWindow. Этот сигнал генерируется, когда виджет изменяется с непривязанного на привязанный или наоборот.

Параметры

widget

объект, на котором генерируется сигнал

previous_toplevel

предыдущий верхний предок или NULL, если виджет ранее был непривязан.

[allow-none]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run Last

Сигнал “key-press-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::key-press-event генерируется при нажатии клавиши. Генерирование сигнала повторяется с частотой повторения клавиши при удерживании нажатой клавиши.

Для получения этого сигнала ассоциированному с виджетом GdkWindow необходимо включить маску GDK_KEY_PRESS_MASK.

Этот сигнал будет отправлен виджету захвата, если он есть.

Параметры

widget

объект, получивший сигнал

event

событие GdkEventKey, которое вызвало этот сигнал.

[type Gdk.EventKey]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Run Last

Сигнал “key-release-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::key-release-event генерируется при отпускании клавиши.

Для получения этого сигнала ассоциированному с виджетом GdkWindow необходимо включить маску GDK_KEY_RELEASE_MASK.

Этот сигнал будет отправлен виджету захвата, если он есть.

Параметры

widget

объект, получивший сигнал

event

событие GdkEventKey, которое вызвало этот сигнал.

[type Gdk.EventKey]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Run Last

Сигнал “keynav-failed”

gboolean
user_function (GtkWidget       *widget,
               GtkDirectionType direction,
               gpointer         user_data)

Выпускается, если навигация с помощью клавиатуры не удалась. Подробнее см. gtk_widget_keynav_failed().

Параметры

widget

объект, получивший сигнал

direction

направление перемещения

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, если прекращение навигации по клавиатуре допустимо, FALSE, если объект, испускающий сигнал, должен попытаться обработать попытку навигации по клавиатуре в своих родительских контейнерах.

Флаги: Run Last

С версии: 2.12

Сигнал “leave-notify-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::leave-notify-event будет испущен, когда указатель покинет окно widget.

Для получения этого сигнала GdkWindow, связанный с виджетом, должен включить маску GDK_LEAVE_NOTIFY_MASK.

Этот сигнал будет отправлен виджету захвата, если таковой есть.

Параметры

widget

объект, получивший сигнал

event

 GdkEventCrossing, вызвавший этот сигнал.

[type Gdk.EventCrossing]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, чтобы остановить вызов других обработчиков для события. FALSE, чтобы распространить событие дальше.

Флаги: Run Last

Сигнал “map”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::map генерируется, когда widget будет отображен, то есть когда виджет становится видимым (что контролируется с помощью gtk_widget_set_visible()) и все его родительские виджеты до уровня верхнего виджета также видны. После отображения будет испущен сигнал “map-event”.

Сигнал ::map можно использовать для определения того, будет ли виджет нарисован, например, для возобновления анимации, которая была остановлена во время испускания сигнала “unmap”.

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Run First

Сигнал “map-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::map-event будет испущен, когда окно widget отображено. Окно отображается, когда оно становится видимым на экране.

Для получения этого сигнала GdkWindow, связанный с виджетом, должен включить маску GDK_STRUCTURE_MASK. GDK автоматически включит эту маску для всех новых окон.

Параметры

widget

объект, получивший сигнал

event

 GdkEventAny, вызвавший этот сигнал.

[type Gdk.EventAny]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, чтобы остановить вызов других обработчиков для события. FALSE, чтобы распространить событие дальше.

Флаги: Run Last

Сигнал “mnemonic-activate”

gboolean
user_function (GtkWidget *widget,
               gboolean   arg1,
               gpointer   user_data)

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, чтобы остановить вызов других обработчиков для события. FALSE, чтобы распространить событие дальше.

Флаги: Run Last

Сигнал “motion-notify-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::motion-notify-event генерируется, когда указатель перемещается по GdkWindow виджета.

Для получения этого сигнала GdkWindow, связанный с виджетом, должен включить маску GDK_POINTER_MOTION_MASK.

Этот сигнал будет отправлен виджету захвата, если таковой есть.

Параметры

widget

объект, получивший сигнал.

event

 GdkEventMotion, вызвавший этот сигнал.

[type Gdk.EventMotion]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, чтобы остановить вызов других обработчиков для события. FALSE, чтобы распространить событие дальше.

Флаги: Run Last

Сигнал “move-focus”

void
user_function (GtkWidget       *widget,
               GtkDirectionType direction,
               gpointer         user_data)

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Action

Сигнал “parent-set”

void
user_function (GtkWidget *widget,
               GtkWidget *old_parent,
               gpointer   user_data)

Сигнал ::parent-set генерируется, когда для виджета задан новый родитель.

Параметры

widget

объект, на котором генерируется сигнал

old_parent

предыдущий родитель или NULL, если у виджета только что появился начальный родитель.

[allow-none]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Выполнить сначала

Сигнал “popup-menu”

gboolean
user_function (GtkWidget *widget,
               gpointer   user_data)

Этот сигнал генерируется всякий раз, когда виджет должен отобразить контекстное меню. Это обычно происходит через стандартный механизм привязки клавиш; нажав определённую клавишу, когда виджет имеет фокус, пользователь может вызвать отображение меню. Например, виджет GtkEntry создаёт меню с командами буфера обмена. См. Список проверок миграции Popup Menu для примера использования этого сигнала.

Параметры

widget

объект, получивший сигнал

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, если меню было активировано

Флаги: Действие

Сигнал “property-notify-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::property-notify-event будет генерироваться, когда свойство в окне widget было изменено или удалено.

Для получения этого сигнала связанному с виджетом GdkWindow необходимо включить маску GDK_PROPERTY_CHANGE_MASK.

Параметры

widget

объект, получивший сигнал

event

структура GdkEventProperty, которая вызвала этот сигнал.

[type Gdk.EventProperty]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки других обработчиков от вызова для события. FALSE для распространения события дальше.

Флаги: Выполнить последним

Сигнал “proximity-in-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Для получения этого сигнала связанному с виджетом GdkWindow необходимо включить маску GDK_PROXIMITY_IN_MASK.

Этот сигнал будет отправлен виджету захвата, если он существует.

Параметры

widget

объект, получивший сигнал

event

структура GdkEventProximity, которая вызвала этот сигнал.

[type Gdk.EventProximity]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки других обработчиков от вызова для события. FALSE для распространения события дальше.

Флаги: Выполнить последним

Сигнал “proximity-out-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Для получения этого сигнала связанному с виджетом GdkWindow необходимо включить маску GDK_PROXIMITY_OUT_MASK.

Этот сигнал будет отправлен виджету захвата, если он существует.

Параметры

widget

объект, получивший сигнал

event

структура GdkEventProximity, которая вызвала этот сигнал.

[type Gdk.EventProximity]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки других обработчиков от вызова для события. FALSE для распространения события дальше.

Флаги: Выполнить последним

Сигнал “query-tooltip”

gboolean
user_function (GtkWidget  *widget,
               gint        x,
               gint        y,
               gboolean    keyboard_mode,
               GtkTooltip *tooltip,
               gpointer    user_data)

Издаётся, когда свойство “has-tooltip” равно TRUE и таймаут ожидания наведения курсора истек, при этом курсор наведён "над" widget; или издаётся, когда widget получил фокус в режиме работы с клавиатурой.

Обработчик сигнала, используя заданные координаты, должен определить, необходимо ли отображать подсказку для widget. В случае необходимости должен быть возвращён TRUE, в противном случае — FALSE. Обратите внимание, что если keyboard_mode равно TRUE, значения x и y не определены и не должны использоваться.

Обработчик сигнала свободен манипулировать tooltip с помощью соответствующих функций.

Параметры

widget

объект, получивший сигнал

x

координата x курсора, где был выдан запрос, относительно левой стороны widget

y

координата y курсора, где был выдан запрос, относительно верхней стороны widget

keyboard_mode

TRUE, если подсказка была вызвана с помощью клавиатуры

tooltip

GtkTooltip

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE, если tooltip должно быть отображено прямо сейчас, FALSE в противном случае.

Флаги: Run Last

С: 2.12

Сигнал “realize”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::realize издаётся, когда widget ассоциирован с GdkWindow, что означает, что gtk_widget_realize() был вызван или виджет был отображён (то есть, он будет нарисован).

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Run First

Сигнал “screen-changed”

void
user_function (GtkWidget *widget,
               GdkScreen *previous_screen,
               gpointer   user_data)

Сигнал ::screen-changed издаётся, когда экран виджета изменился.

Параметры

widget

объект, на котором издаётся сигнал

previous_screen

предыдущий экран или NULL, если виджет до этого не был связан с экраном.

[allow-none]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Run Last

Сигнал “scroll-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::scroll-event издаётся, когда нажата кнопка в диапазоне от 4 до 7. Колёсико мыши обычно настроено на генерацию событий нажатия кнопок 4 и 5 при вращении.

Для получения этого сигнала связанный с виджетом GdkWindow должен активировать маску GDK_SCROLL_MASK.

Этот сигнал будет отправлен виджету захвата, если такой есть.

Параметры

widget

объект, получивший сигнал.

event

GdkEventScroll, вызвавший данный сигнал.

[type Gdk.EventScroll]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Run Last

Сигнал “selection-clear-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::selection-clear-event издаётся, когда окно widget потеряло владение выбором.

Параметры

widget

объект, получивший сигнал

event

GdkEventSelection, вызвавший данный сигнал.

[type Gdk.EventSelection]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Run Last

Сигнал “selection-get”

void
user_function (GtkWidget        *widget,
               GtkSelectionData *data,
               guint             info,
               guint             time,
               gpointer          user_data)

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Run Last

Сигнал “selection-notify-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Параметры

widget

объект, получивший сигнал.

event

.

[тип Gdk.EventSelection]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Выполнить последним

Сигнал “selection-received”

void
user_function (GtkWidget        *widget,
               GtkSelectionData *data,
               guint             time,
               gpointer          user_data)

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Выполнить последним

Сигнал “selection-request-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::selection-request-event будет выпущен, когда другой клиент запросит владение выделением, принадлежащим окну widget.

Параметры

widget

объект, получивший сигнал.

event

событие GdkEventSelection, вызвавшее этот сигнал.

[тип Gdk.EventSelection]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Выполнить последним

Сигнал “show”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::show генерируется, когда widget отображается, например, с помощью gtk_widget_show().

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Выполнить первым

Сигнал “show-help”

gboolean
user_function (GtkWidget        *widget,
               GtkWidgetHelpType help_type,
               gpointer          user_data)

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Действие

Сигнал “size-allocate”

void
user_function (GtkWidget    *widget,
               GdkRectangle *allocation,
               gpointer      user_data)

Параметры

widget

объект, получивший сигнал.

allocation

область, выделенная для виджета.

[тип Gtk.Allocation]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Выполнить первым

Сигнал “state-changed”

void
user_function (GtkWidget   *widget,
               GtkStateType state,
               gpointer     user_data)

Сигнал ::state-changed генерируется при изменении состояния виджета. См. gtk_widget_get_state().

GtkWidget::state-changed устарел с версии 3.0 и не должен использоваться в новом коде.

Используйте “state-flags-changed” вместо него.

Параметры

widget

объект, получивший сигнал.

state

предыдущее состояние

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Выполнить первым

Сигнал “state-flags-changed”

void
user_function (GtkWidget    *widget,
               GtkStateFlags flags,
               gpointer      user_data)

Сигнал ::state-flags-changed генерируется при изменении состояния виджета, см. gtk_widget_get_state_flags().

Параметры

widget

объект, получивший сигнал.

flags

Предыдущие флаги состояния.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Выполнить первым

С: 3.0

Сигнал “style-set”

void
user_function (GtkWidget *widget,
               GtkStyle  *previous_style,
               gpointer   user_data)

Сигнал ::style-set генерируется при установке нового стиля на виджете. Обратите внимание, что функции изменения стиля, такие как gtk_widget_modify_base(), также вызывают генерацию этого сигнала.

Обратите внимание, что этот сигнал генерируется для изменений устаревшего стиля GtkStyle. Для отслеживания изменений GtkStyleContext, связанного с виджетом, используйте сигнал “style-updated”.

GtkWidget::style-set устарел начиная с версии 3.0 и не должен использоваться в новом коде.

Используйте сигнал “style-updated”

Параметры

widget

объект, на котором генерируется сигнал

previous_style

предыдущий стиль или NULL, если виджет только что получил свой начальный стиль.

[allow-none]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Выполняется первым

Сигнал “style-updated”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::style-updated генерируется при изменении GtkStyleContext виджета. Обратите внимание, что функции изменения стиля, такие как gtk_widget_override_color(), также вызывают генерацию этого сигнала.

Параметры

widget

объект, на котором генерируется сигнал

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Выполняется первым

С версии: 3.0

Сигнал “touch-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *arg1,
               gpointer   user_data)

Флаги: Выполняется последним

Сигнал “unmap”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::unmap генерируется, когда widget будет скрыт, что означает, что он или любой из его родительских виджетов до верхнего виджета были скрыты.

Поскольку ::unmap указывает, что виджет больше не будет отображаться, его можно использовать, например, для остановки анимации на виджете.

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Выполняется первым

Сигнал “unmap-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::unmap-event генерируется, когда окно widget скрывается. Окно скрывается, когда оно становится невидимым на экране.

Для получения этого сигнала связанное с виджетом GdkWindow окно должно разрешить маску GDK_STRUCTURE_MASK. GDK автоматически разрешит эту маску для всех новых окон.

Параметры

widget

объект, получивший сигнал

event

GdkEventAny, вызвавший этот сигнал.

[type Gdk.EventAny]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки обработки события другими обработчиками. FALSE для дальнейшей обработки события.

Флаги: Выполняется последним

Сигнал “unrealize”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::unrealize генерируется, когда GdkWindow, связанный с widget, уничтожается, что означает, что gtk_widget_unrealize() был вызван или виджет был скрыт (то есть, он будет скрыт).

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Выполняется последним

Сигнал “visibility-notify-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::visibility-notify-event генерируется, когда окно widget становится скрытым или видимым.

Для получения этого сигнала связанное с виджетом GdkWindow окно должно разрешить маску GDK_VISIBILITY_NOTIFY_MASK.

GtkWidget::visibility-notify-event устарел начиная с версии 3.12 и не должен использоваться в новом коде.

Современные системы композиции окон с повсеместной прозрачностью делают невозможность надежно отслеживать видимость окна, поэтому гарантии, что этот сигнал предоставит полезную информацию, нет.

Параметры

widget

объект, получивший сигнал

event

GdkEventVisibility, вызвавший этот сигнал.

[type Gdk.EventVisibility]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки обработки события другими обработчиками. FALSE для дальнейшей обработки события.

Флаги: Выполняется последним

Сигнал “window-state-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::window-state-event будет выпущен, когда изменится состояние главного окна, связанного с widget.

Для получения этого сигнала GdkWindow, связанный с виджетом, должен включить маску GDK_STRUCTURE_MASK. GDK автоматически включит эту маску для всех новых окон.

Параметры

widget

объект, получивший сигнал

event

значение GdkEventWindowState, которое вызвало этот сигнал.

[type Gdk.EventWindowState]

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE для остановки других обработчиков от вызова для события. FALSE для дальнейшей обработки события.

Флаги: Выполнить последним

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.20/GtkWidget.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API