Spec-Zone.ru › GTK 3.24

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 Чтение / Запись
int height-request Чтение / Запись
gboolean hexpand Чтение / Запись
gboolean hexpand-set Чтение / Запись
gboolean is-focus Чтение / Запись
int margin Чтение / Запись
int margin-bottom Чтение / Запись
int margin-end Чтение / Запись
int margin-left Чтение / Запись
int margin-right Чтение / Запись
int margin-start Чтение / Запись
int margin-top Чтение / Запись
char * name Чтение / Запись
gboolean no-show-all Чтение / Запись
double opacity Чтение / Запись
GtkContainer * parent Чтение / Запись
gboolean receives-default Чтение / Запись
int scale-factor Чтение
gboolean sensitive Чтение / Запись
GtkStyle * style Чтение / Запись
char * tooltip-markup Чтение / Запись
char * tooltip-text Чтение / Запись
GtkAlign valign Чтение / Запись
gboolean vexpand Чтение / Запись
gboolean vexpand-set Чтение / Запись
gboolean visible Чтение / Запись
int width-request Чтение / Запись
GdkWindow * window Чтение

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

float соотношение сторон курсора Чтение
GdkColor * цвет курсора Чтение
char * шаблон линии фокуса Чтение
int ширина линии фокуса Чтение
int отступ фокуса Чтение
gboolean внутренний фокус Чтение
GdkColor * цвет ссылки Чтение
int горизонтальная длина стрелки прокрутки Чтение
int вертикальная длина стрелки прокрутки Чтение
GdkColor * цвет вспомогательного курсора Чтение
int высота разделителя Чтение
int ширина разделителя Чтение
int высота маркерного текста Чтение
int ширина маркерного текста Чтение
GdkColor * цвет посещённой ссылки Чтение
gboolean широкие разделители Чтение
gboolean перетаскивание окна Чтение

Сигналы

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
enum GtkWidgetHelpType
enum GtkTextDirection
enum GtkStateType
enum GtkSizeRequestMode
struct GtkRequestedSize
enum 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-terminated

Возвращает

новый GtkWidget типа widget_type

gtk_widget_destroy ()

void
gtk_widget_destroy (GtkWidget *widget);

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

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

  • если элемент управления находится внутри контейнера, он будет удалён из своего родителя

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

  • если элемент управления является верхним уровнем, он будет удалён из списка верхних элементов управления, которые GTK+ поддерживает внутри

Ожидается, что все ссылки на элемент управления также будут освобождены; вы должны подключиться к сигналу “destroy”, если у вас есть ссылка на widget и вы хотите удалить её, когда вызвана эта функция. Это не обязательно, если вы реализуете GtkContainer, так как вы сможете использовать виртуальную функцию GtkContainerClass.remove() для этого.

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

Как правило, эту функцию следует вызывать для верхних элементов управления и редко для дочерних элементов управления.

См. также: gtk_container_remove()

Параметры

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”. Или просто подключение к сигналу “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

С: 3.20

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 если widget не реализован.

[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” виджета.

Если у дочернего виджета 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_group и путь ускорителя accel_path. При нажатии сочетания клавиш, определённого для 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 группы ускорителей (который можно получить с помощью 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);

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

Параметры

widget

a GtkWidget который может быть активирован

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

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 в который переместить виджет

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 .

[out caller-allocates][optional]

Возвращает

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 или NULL, если такового нет.

Параметры

widget

a GtkWidget.

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

родительское окно widget или NULL, если родительское окно отсутствует.

[transfer none][nullable]

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

элемент GtkWidget

device

элемент 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

элемент GtkWidget

device

элемент 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_IS_WINDOW() на результате. Например, чтобы получить заголовок окна верхнего уровня элемента, можно использовать:

Параметры

widget

элемент 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

элемент GtkWidget

widget_type

тип предка

Возвращает

элемент-предка, или NULL если не найден.

[transfer none][nullable]

gtk_widget_get_visual ()

GdkVisual *
gtk_widget_get_visual (GtkWidget *widget);

Возвращает визу, используемую для отрисовки widget.

Параметры

widget

элемент 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

элемент 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

a 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

a 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

a 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

a 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 holding the style modifications

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

Возвращает

the 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

Возвращает

the 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

a 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

Возвращает

A 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 если идентификатор стандартной иконки неизвестен.

[nullable][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()), но, например, средства разработки GUI могут обрабатывать их по-другому.

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

a GtkWidget

region

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

Since: 3.0

gtk_widget_set_app_paintable ()

void
gtk_widget_set_app_paintable (GtkWidget *widget,
                              gboolean app_paintable);

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

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

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

Параметры

widget

a 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_draw_frame() и gdk_window_end_draw_frame() вызываются автоматически вокруг событий expose, отправленных виджету. gdk_window_begin_draw_frame() перенаправляет всё рисование на окно виджета в буфер вне экрана, а gdk_window_end_draw_frame() выводит буфер на экран. В результате пользователи видят обновление окна за один раз без мерцания, и не видят отдельных графических примитивов, которые отрисовываются.

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

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

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

Параметры

widget

a 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

a 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

a GtkWidget.

name

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

gtk_widget_mnemonic_activate ()

gboolean
gtk_widget_mnemonic_activate (GtkWidget *widget,
                              gboolean group_cycling);

Вызывает сигнал “mnemonic-activate”.

Параметры

widget

a GtkWidget

group_cycling

TRUE если существуют другие виджеты с тем же мнемоническим символом

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

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() для получения такого же поведения.

Вычисляет пересечение области виджета и 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);

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

Приложения и виджеты не должны обрабатывать события expose напрямую; инвалидация должна использовать API GtkWidget, а отрисовка должна происходить только внутри реализации сигнала “draw”

Функция, которая используется очень редко. Эта функция используется для вызова события 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);

Вариант без vararg функции 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

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

AtkObject ассоциированный с widget .

[transfer 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]

С: 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, связанного с окном. В общем случае, вы должны создавать ресурсы, специфичные для дисплея, только когда виджет был реализован, и освобождать эти ресурсы при дереализации виджета.

Параметры

widget

виджет GtkWidget

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

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

[transfer none]

С версии: 2.2

gtk_widget_get_screen ()

GdkScreen *
gtk_widget_get_screen (GtkWidget *widget);

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

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

Параметры

widget

виджет GtkWidget

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

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

[transfer none]

С версии: 2.2

gtk_widget_has_screen ()

gboolean
gtk_widget_has_screen (GtkWidget *widget);

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

Параметры

widget

виджет 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

виджет 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

виджет 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

виджет 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”

Since: 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”.

Since: 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), а затем unref все виджеты.

Параметры

widget

a GtkWidget

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

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

[element-type GtkWidget][transfer container]

Since: 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

Since: 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().

Since: 2.4

gtk_widget_is_composited ()

gboolean
gtk_widget_is_composited (GtkWidget *widget);

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

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

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

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

Параметры

widget

a GtkWidget

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

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

Since: 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

Since: 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 по умолчанию возвращает FALSE для GTK_DIR_TAB_FORWARD и GTK_DIR_TAB_BACKWARD. Для других значений GtkDirectionType он возвращает TRUE.

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

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

Параметры

widget

виджет GtkWidget

direction

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

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

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

С: 2.12

gtk_widget_get_tooltip_markup ()

gchar *
gtk_widget_get_tooltip_markup (GtkWidget *widget);

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

Параметры

widget

виджет 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

виджет GtkWidget

markup

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

[allow-none]

С: 2.12

gtk_widget_get_tooltip_text ()

gchar *
gtk_widget_get_tooltip_text (GtkWidget *widget);

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

Параметры

widget

виджет 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

виджет 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

виджет 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, будет использоваться окно всплывающей подсказки по умолчанию.

Параметры

widget

виджет GtkWidget

custom_window

виджет 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_set_allocation() следует использовать gtk_widget_size_allocate(). Виртуальный метод 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

виджет 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

виджет 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

виджет GtkWidget

clip

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

С: 3.14

gtk_widget_get_app_paintable ()

gboolean
gtk_widget_get_app_paintable (GtkWidget *widget);

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

См. gtk_widget_set_app_paintable().

Параметры

виджет

a GtkWidget

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

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

С версии: 2.18

gtk_widget_get_can_default ()

gboolean
gtk_widget_get_can_default (GtkWidget *widget);

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

Параметры

виджет

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() для получения подробной информации о значении «по умолчанию».

Параметры

виджет

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().

Параметры

виджет

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() для фактического задания фокуса ввода на виджете.

Параметры

виджет

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().

Параметры

виджет

a GtkWidget

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

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

С версии: 3.20

gtk_widget_set_focus_on_click ()

void
gtk_widget_set_focus_on_click (GtkWidget *widget,
                               gboolean focus_on_click);

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

Параметры

виджет

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().

Параметры

виджет

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().

Параметры

виджет

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 («window»), но для многих из них это на самом деле окно одного из его родительских виджетов. Виджеты, которые не создают window для себя в сигнале «realize», должны об этом сообщить, вызвав эту функцию с has_window = FALSE.

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

Параметры

виджет

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

Возвращает

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

Since: 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 в противном случае

Since: 2.18

gtk_widget_has_focus ()

gboolean
gtk_widget_has_focus (GtkWidget *widget);

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

Параметры

widget

a GtkWidget

Возвращает

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

Since: 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 если виджет должен отображать «прямоугольник фокуса»

Since: 3.2

gtk_widget_has_grab ()

gboolean
gtk_widget_has_grab (GtkWidget *widget);

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

См. также gtk_grab_add().

Параметры

widget

a GtkWidget

Возвращает

TRUE если виджет находится в стеке grab_widgets

Since: 2.18

gtk_widget_has_rc_style ()

gboolean
gtk_widget_has_rc_style (GtkWidget *widget);

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

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

Определяет, был ли стиль виджета просмотрен с помощью механизма rc.

Параметры

widget

a GtkWidget

Возвращает

TRUE если виджет был просмотрен с помощью механизма rc, FALSE в противном случае.

Since: 2.20

gtk_widget_is_drawable ()

gboolean
gtk_widget_is_drawable (GtkWidget *widget);

Определяет, может ли widget быть нарисован. Виджет может быть нарисован, если он отображен и виден.

Параметры

widget

a GtkWidget

Возвращает

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

Since: 2.18

gtk_widget_is_toplevel ()

gboolean
gtk_widget_is_toplevel (GtkWidget *widget);

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

В настоящее время только GtkWindow и GtkInvisible (и виджеты из другого процесса GtkPlugs) являются главными виджетами. У главных виджетов нет родительского виджета.

Параметры

widget

a GtkWidget

Возвращает

TRUE если widget является главным, FALSE в противном случае

Since: 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.

Параметры

widget

a GtkWidget

window

a GdkWindow.

[transfer full]

Since: 2.18

gtk_widget_set_receives_default ()

void
gtk_widget_set_receives_default (GtkWidget *widget,
                                 gboolean receives_default);

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

См. gtk_widget_grab_default() для подробностей о значении «по умолчанию».

Параметры

widget

a GtkWidget

receives_default

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

С версии: 2.18

gtk_widget_get_receives_default ()

gboolean
gtk_widget_get_receives_default (GtkWidget *widget);

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

См. gtk_widget_set_receives_default().

Параметры

widget

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 начнет получать несколько событий enter/leave на каждое устройство. Обратите внимание, что если в “realize” создаются пользовательские GdkWindows, gdk_window_set_support_multidevice() придется вызывать вручную.

Параметры

widget

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() для получения дополнительной информации.

Параметры

widget

a GtkWidget

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

TRUE если widget поддерживает несколько устройств.

gtk_widget_set_realized ()

void
gtk_widget_set_realized (GtkWidget *widget,
                         gboolean realized);

Помечает виджет как реализованный. Эта функция должна вызываться только после того, как все GdkWindows для 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, установив их «имя-действия» на 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.

[перенос контейнера]

С: 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

«Префикс» группы действий.

Возвращает

A GActionGroup или NULL.

[перенос ничего][nullable]

С: 3.16

gtk_widget_get_path ()

GtkWidgetPath *
gtk_widget_get_path (GtkWidget *widget);

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

Параметры

widget

a GtkWidget

Возвращает

The GtkWidgetPath представляющий widget .

[перенос ничего]

gtk_widget_get_style_context ()

GtkStyleContext *
gtk_widget_get_style_context (GtkWidget *widget);

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

Параметры

widget

a GtkWidget

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

a 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

a GtkRequisition

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

копия requisition

gtk_requisition_free ()

void
gtk_requisition_free (GtkRequisition *requisition);

Освобождает память, выделенную для GtkRequisition.

Параметры

requisition

a 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

a GtkWidget instance

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

a GtkWidget instance

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

a GtkWidget

Возвращает

горизонтальное выравнивание widget

gtk_widget_set_halign ()

void
gtk_widget_set_halign (GtkWidget *widget,
                       GtkAlign align);

Устанавливает горизонтальное выравнивание widget . См. свойство “halign”.

Параметры

widget

a 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", &amp;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

элемент 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

элемент 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

элемент GtkWidget

margin

правый отступ

С: 3.0

gtk_widget_get_margin_start ()

gint
gtk_widget_get_margin_start (GtkWidget *widget);

Получает значение свойства “margin-start”.

Параметры

widget

элемент GtkWidget

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

Начальный отступ widget

С: 3.12

gtk_widget_set_margin_start ()

void
gtk_widget_set_margin_start (GtkWidget *widget,
                             gint margin);

Устанавливает начальный отступ widget . См. свойство “margin-start”.

Параметры

widget

элемент GtkWidget

margin

начальный отступ

С: 3.12

gtk_widget_get_margin_end ()

gint
gtk_widget_get_margin_end (GtkWidget *widget);

Получает значение свойства “margin-end”.

Параметры

widget

элемент GtkWidget

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

Конечный отступ widget

С: 3.12

gtk_widget_set_margin_end ()

void
gtk_widget_set_margin_end (GtkWidget *widget,
                           gint margin);

Устанавливает конечный отступ widget . См. свойство “margin-end”.

Параметры

widget

элемент GtkWidget

margin

конечный отступ

С: 3.12

gtk_widget_get_margin_top ()

gint
gtk_widget_get_margin_top (GtkWidget *widget);

Получает значение свойства “margin-top”.

Параметры

widget

элемент GtkWidget

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

Верхний отступ widget

С: 3.0

gtk_widget_set_margin_top ()

void
gtk_widget_set_margin_top (GtkWidget *widget,
                           gint margin);

Устанавливает верхний отступ widget . См. свойство “margin-top”.

Параметры

widget

элемент GtkWidget

margin

верхний отступ

С: 3.0

gtk_widget_get_margin_bottom ()

gint
gtk_widget_get_margin_bottom (GtkWidget *widget);

Получает значение свойства “margin-bottom”.

Параметры

widget

элемент GtkWidget

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

Нижний отступ widget

С: 3.0

gtk_widget_set_margin_bottom ()

void
gtk_widget_set_margin_bottom (GtkWidget *widget,
                              gint margin);

Устанавливает нижний отступ widget . См. свойство “margin-bottom”.

Параметры

widget

элемент GtkWidget

margin

нижний отступ

С: 3.0

gtk_widget_get_hexpand ()

gboolean
gtk_widget_get_hexpand (GtkWidget *widget);

Получает значение, указывающее, хочет ли виджет занять дополнительное горизонтальное пространство. При изменении размера GtkWindow виджеты с expand=TRUE обычно получают дополнительное пространство. Например, список, область прокрутки или документ в окне часто устанавливаются для расширения.

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

Эта функция рассматривает только собственный флаг hexpand виджета, а не вычисляет, хочет ли весь древовидный виджет, укоренённый в этом виджете, расширяться.

Параметры

widget

виджет

Возвращает

значение флага hexpand

gtk_widget_set_hexpand ()

void
gtk_widget_set_hexpand (GtkWidget *widget,
                        gboolean expand);

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

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

По умолчанию виджеты автоматически расширяются, если любой из их дочерних элементов хочет расшириться. (Чтобы определить, будет ли виджет автоматически расширяться, учитывая его текущие дочерние элементы и состояние, вызовите 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() использована для явного задания флага expand для этого виджета.

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

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

Параметры

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, поэтому наиболее вероятной причиной использования этой функции является сброс явного флага expand.

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

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

Параметры

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() использована для явного задания флага expand для этого виджета.

См. 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 как требующий пересчета флагов expand. Вызывайте эту функцию при установке устаревших свойств дочерних элементов expand для дочернего элемента контейнера.

См. gtk_widget_compute_expand().

Параметры

widget

элемент GtkWidget

gtk_widget_compute_expand ()

gboolean
gtk_widget_compute_expand (GtkWidget *widget,
                           GtkOrientation orientation);

Вычисляет, должен ли контейнер предоставить этому виджету дополнительное пространство при возможности. Контейнеры должны проверять это, а не gtk_widget_get_hexpand() или gtk_widget_get_vexpand().

Эта функция уже проверяет, виден ли виджет, поэтому видимость не нужно проверять отдельно. Невидимые виджеты не расширяются.

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

Параметры

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);

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

Для удобства также предоставляется gtk_widget_class_set_template_from_resource().

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

Параметры

widget_class

A GtkWidgetClass

template_bytes

A GBytes содержащий XML-код GtkBuilder

С: 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

The GType для получения дочернего элемента шаблона

name

«Идентификатор» дочернего элемента, определённого в XML шаблоне

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

Объект, созданный в XML шаблоне с id 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

a 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

a GtkWidgetClass

TypeName

имя типа в формате ВерблюжьегоРегистра

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

a 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().

Структура может указывать на публичную область экземпляра, тогда для struct_offset следует использовать G_STRUCT_OFFSET(WidgetType, member), или на частную структуру, тогда следует использовать 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

Должен ли потомок быть доступен как «внутренний потомок» при использовании этого класса в XML GtkBuilder

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

структура 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

Структура 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 для использования при разборе XML GtkBuilder из данных шаблона этого класса.

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

Параметры

widget_class

Структура GtkWidgetClass

connect_func

GtkBuilderConnectFunc для использования при подключении сигналов в шаблоне класса

connect_data

Данные, которые необходимо передать connect_func

connect_data_destroy

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;

Структура GtkRequisition представляет собой желаемый размер виджета. Подробнее см. раздел управления геометрией GtkWidget.

Members

gint width;

Желаемая ширина виджета.

gint height;

Желаемая высота виджета.

GtkAllocation

typedef 	GdkRectangle	   GtkAllocation;

A GtkAllocation of a widget represents the area allocated to the widget by its parent. It is a subregion of its parent's allocation. See GtkWidget’s geometry management section for more information.

enum GtkWidgetHelpType

Types of widget-specific help. Used by the ::show-help signal.

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

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

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “can-default”

  “can-default”              gboolean

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

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “can-focus”

  “can-focus”                gboolean

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

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “composite-child”

  “composite-child”          gboolean

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

Владелец: GtkWidget

Флаги: Чтение

Значение по умолчанию: FALSE

Свойство “double-buffered”

  “double-buffered”          gboolean

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

GtkWidget:double-buffered устарело с версии 3.14 и не должно использоваться в новом коде.

Виджеты не должны использовать это свойство.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: TRUE

С версии: 2.18

Свойство “events”

  “events”                   GdkEventMask

Маска событий, определяющая, какие события GdkEvents получает этот виджет.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: GDK_STRUCTURE_MASK

Свойство “expand”

  “expand”                   gboolean

Определяет, нужно ли расширять виджет в обоих направлениях. Установка этого свойства задаёт как «hexpand», так и «vexpand».

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 3.0

Свойство “focus-on-click”

  “focus-on-click”           gboolean

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

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

До версии 3.20 несколько виджетов (GtkButton, GtkFileChooserButton, GtkComboBox) реализовывали это свойство индивидуально.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: TRUE

С версии: 3.20

Свойство “halign”

  “halign”                   GtkAlign

Способ распределения горизонтального пространства, если виджет получает дополнительное место. См. GtkAlign

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: GTK_ALIGN_FILL

С версии: 3.0

Свойство “has-default”

  “has-default”              gboolean

Определяет, является ли виджет виджетом по умолчанию.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “has-focus”

  “has-focus”                gboolean

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

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “has-tooltip”

  “has-tooltip”              gboolean

Включает или выключает отправку сигнала “query-tooltip” на widget. Значение TRUE указывает, что widget может иметь всплывающую подсказку; в этом случае виджет будет запрашиваться с помощью сигнала “query-tooltip” для определения, будет ли он предоставлять подсказку или нет.

Обратите внимание, что установка этого свойства в TRUE в первый раз изменит маски событий GdkWindows этого виджета, добавив события leave-notify и motion-notify. Это нельзя и не будет отменено при повторной установке свойства в FALSE.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 2.12

Свойство “height-request”

  “height-request”           int

Переопределение запрошенной высоты виджета, или -1, если нужно использовать естественный запрос.

Владелец: GtkWidget

Флаги: Чтение / Запись

Допустимые значения: >= -1

Значение по умолчанию: -1

Свойство “hexpand”

  “hexpand”                  gboolean

Определяет, нужно ли расширять виджет по горизонтали. См. gtk_widget_set_hexpand().

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 3.0

Свойство “hexpand-set”

  “hexpand-set”              gboolean

Определяет, использовать ли свойство «hexpand». См. gtk_widget_get_hexpand_set().

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 3.0

Свойство “is-focus”

  “is-focus”                 gboolean

Определяет, является ли виджет виджетом с фокусом в главном окне.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “margin”

  “margin”                   int

Устанавливает отступы со всех четырёх сторон сразу. При чтении возвращает максимальный отступ с любой стороны.

Владелец: GtkWidget

Флаги: Чтение / Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.0

Свойство “margin-bottom”

  “margin-bottom”            int

Отступ снизу виджета.

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

Владелец: GtkWidget

Флаги: Чтение / Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.0

Свойство “margin-end”

  “margin-end”               int

Отступ справа от виджета по горизонтали. Поддерживает направления текста слева направо и справа налево.

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

Владелец: GtkWidget

Флаги: Чтение / Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.12

Свойство “margin-left”

  “margin-left”              int

Отступ слева от виджета.

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

GtkWidget:margin-left устарело с версии 3.12 и не должно использоваться в новом коде.

Используйте «margin-start» вместо этого.

Владелец: GtkWidget

Флаги: Чтение / Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.0

Свойство “margin-right”

  “margin-right”             int

Отступ справа от виджета.

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

GtkWidget:margin-right устарело с версии 3.12 и не должно использоваться в новом коде.

Используйте «margin-end» вместо этого.

Владелец: GtkWidget

Флаги: Чтение / Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.0

Свойство “margin-start”

  “margin-start”             int

Отступ слева от виджета по горизонтали. Поддерживает направления текста слева направо и справа налево.

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

Владелец: GtkWidget

Флаги: Чтение / Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.12

Свойство “margin-top”

  “margin-top”               int

Отступ сверху виджета.

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

Владелец: GtkWidget

Флаги: Чтение / Запись

Допустимые значения: [0,32767]

Значение по умолчанию: 0

С версии: 3.0

Свойство “name”

  “name”                     char *

Имя виджета.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: NULL

Свойство “no-show-all”

  “no-show-all”              gboolean

Указывает, должен ли gtk_widget_show_all() не влиять на этот виджет.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “opacity”

  “opacity”                  double

Запрошенная непрозрачность виджета. Подробнее см. gtk_widget_set_opacity() для получения дополнительной информации о непрозрачности окна.

До версии 3.8 это свойство было доступно только в GtkWindow

Владелец: GtkWidget

Флаги: Чтение / Запись

Допустимые значения: [0,1]

Значение по умолчанию: 1

С версии: 3.8

Свойство “parent”

  “parent”                   GtkContainer *

Родительский виджет этого виджета. Должен быть виджетом типа Контейнер.

Владелец: GtkWidget

Флаги: Чтение / Запись

Свойство “receives-default”

  “receives-default”         gboolean

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

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “scale-factor”

  “scale-factor”             int

Масштабный коэффициент виджета. Подробнее см. gtk_widget_get_scale_factor() для получения дополнительной информации о масштабировании виджета.

Владелец: GtkWidget

Флаги: Чтение

Допустимые значения: >= 1

Значение по умолчанию: 1

С версии: 3.10

Свойство “sensitive”

  “sensitive”                gboolean

Указывает, реагирует ли виджет на ввод.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: TRUE

Свойство “style”

  “style”                    GtkStyle *

Стиль виджета, который содержит информацию о его внешнем виде (цвета и т.д.).

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

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

Владелец: GtkWidget

Флаги: Чтение / Запись

Свойство “tooltip-markup”

  “tooltip-markup”           char *

Устанавливает текст всплывающей подсказки заданной строкой, которая форматируется с помощью языка разметки текста Pango. Также см. gtk_tooltip_set_markup().

Это удобное свойство, которое позаботится о показе всплывающей подсказки, если заданная строка не NULL: “has-tooltip” будет автоматически установлено в TRUE и будет обработано “query-tooltip” в обработчике сигнала по умолчанию.

Обратите внимание, что если заданы как “tooltip-text”, так и “tooltip-markup”, то последнее заданное значение будет использоваться.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: NULL

С версии: 2.12

Свойство “tooltip-text”

  “tooltip-text”             char *

Устанавливает текст всплывающей подсказки заданной строкой.

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

Это удобное свойство, которое позаботится о показе всплывающей подсказки, если заданная строка не NULL: “has-tooltip” будет автоматически установлено в TRUE и будет обработано “query-tooltip” в обработчике сигнала по умолчанию.

Обратите внимание, что если заданы как “tooltip-text”, так и “tooltip-markup”, то последнее заданное значение будет использоваться.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: NULL

С версии: 2.12

Свойство “valign”

  “valign”                   GtkAlign

Как распределять вертикальное пространство, если виджет получает дополнительное пространство, см. GtkAlign

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: GTK_ALIGN_FILL

С версии: 3.0

Свойство “vexpand”

  “vexpand”                  gboolean

Расширять ли вертикально. См. gtk_widget_set_vexpand().

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 3.0

Свойство “vexpand-set”

  “vexpand-set”              gboolean

Использовать ли свойство “vexpand”. См. gtk_widget_get_vexpand_set().

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 3.0

Свойство “visible”

  “visible”                  gboolean

Видимость виджета.

Владелец: GtkWidget

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

Свойство “width-request”

  “width-request”            int

Переопределение запрошенной ширины виджета, или -1, если нужно использовать естественную ширину.

Владелец: GtkWidget

Флаги: Чтение / Запись

Допустимые значения: >= -1

Значение по умолчанию: -1

Свойство “window”

  “window”                   GdkWindow *

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

Владелец: GtkWidget

Флаги: Чтение

С версии: 2.14

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

Свойство стиля “cursor-aspect-ratio”

  “cursor-aspect-ratio”      float

Соотношение сторон для отображения курсора вставки.

Владелец: GtkWidget

Флаги: Чтение

Допустимые значения: [0,1]

Значение по умолчанию: 0.04

Свойство стиля “cursor-color”

  “cursor-color”             GdkColor *

Цвет курсора вставки в полях ввода и текстовых областях.

GtkWidget:cursor-color устарело начиная с версии 3.20 и не должно использоваться в новом коде.

Используйте свойство CSS caret-color

Владелец: GtkWidget

Флаги: Чтение

Свойство стиля “focus-line-pattern”

  “focus-line-pattern”       char *

Свойство "focus-line-pattern" определяет пунктирную линию, используемую для индикации фокуса. Символьные значения интерпретируются как ширины пикселей чередующихся включенных и выключенных сегментов линии.

GtkWidget:focus-line-pattern устарело начиная с версии 3.14 и не должно использоваться в новом коде.

Используйте свойство CSS outline-style вместо него.

Владелец: GtkWidget

Флаги: Чтение

Значение по умолчанию: "\001\001"

Свойство стиля “focus-line-width”

  “focus-line-width”         int

Свойство "focus-line-width" определяет ширину, в пикселях, линии индикатора фокуса.

GtkWidget:focus-line-width устарело начиная с версии 3.14 и не должно использоваться в новом коде.

Используйте свойства CSS outline-width и padding вместо него.

Владелец: GtkWidget

Флаги: Чтение

Допустимые значения: >= 0

Значение по умолчанию: 1

Свойство стиля “focus-padding”

  “focus-padding”            int

Свойство "focus-padding" определяет ширину, в пикселях, между индикатором фокуса и "боксом" виджета.

GtkWidget:focus-padding устарело начиная с версии 3.14 и не должно использоваться в новом коде.

Используйте свойства CSS outline-offset вместо него.

Владелец: GtkWidget

Флаги: Чтение

Допустимые значения: >= 0

Значение по умолчанию: 1

Свойство стиля “interior-focus”

  “interior-focus”           gboolean

Свойство "interior-focus" определяет, следует ли отображать индикатор фокуса внутри виджетов.

GtkWidget:interior-focus устарело начиная с версии 3.14 и не должно использоваться в новом коде.

Используйте свойства CSS outline вместо него.

Владелец: GtkWidget

Флаги: Чтение

Значение по умолчанию: TRUE

Свойство стиля “link-color”

  “link-color”               GdkColor *

Свойство "link-color" определяет цвет не посещённых ссылок.

GtkWidget:link-color устарело начиная с версии 3.12 и не должно использоваться в новом коде.

Для ссылок теперь используются отдельные флаги состояния для выбора разных тем оформления, это свойство игнорируется

Владелец: GtkWidget

Флаги: Чтение

С версии: 2.10

Свойство стиля “scroll-arrow-hlength”

  “scroll-arrow-hlength”     int

Свойство "scroll-arrow-hlength" определяет длину горизонтальных стрелок прокрутки.

Владелец: GtkWidget

Флаги: Чтение

Допустимые значения: >= 1

Значение по умолчанию: 16

С версии: 2.10

Свойство стиля “scroll-arrow-vlength”

  “scroll-arrow-vlength”     int

Свойство "scroll-arrow-vlength" определяет длину вертикальных стрелок прокрутки.

Владелец: GtkWidget

Флаги: Чтение

Допустимые значения: >= 1

Значение по умолчанию: 16

С версии: 2.10

Свойство стиля “secondary-cursor-color”

  “secondary-cursor-color”   GdkColor *

Цвет, которым отображается вторичный курсор вставки в полях ввода и текстовых областях при редактировании текста с смешанной ориентацией справа налево и слева направо.

GtkWidget:secondary-cursor-color устарело начиная с версии 3.20 и не должно использоваться в новом коде.

Используйте свойство CSS -gtk-secondary-caret-color

Владелец: GtkWidget

Флаги: Чтение

Свойство стиля “separator-height”

  “separator-height”         int

Свойство "separator-height" определяет высоту разделителей. Это свойство действует только если свойство "wide-separators" TRUE.

GtkWidget:separator-height устарело начиная с версии 3.20 и не должно использоваться в новом коде.

Используйте стандартное свойство min-height CSS для элементов разделителей для задания размера; значение этого свойства стиля игнорируется.

Владелец: GtkWidget

Флаги: Чтение

Допустимые значения: >= 0

Значение по умолчанию: 0

С версии: 2.10

Свойство стиля “separator-width”

  “separator-width”          int

Свойство "separator-width" определяет ширину разделителей. Это свойство действует только если свойство "wide-separators" TRUE.

GtkWidget:separator-width устарело начиная с версии 3.20 и не должно использоваться в новом коде.

Используйте стандартное свойство min-width CSS для элементов разделителей для задания размера; значение этого свойства стиля игнорируется.

Владелец: GtkWidget

Флаги: Чтение

Допустимые значения: >= 0

Значение по умолчанию: 0

С версии: 2.10

Свойство стиля “text-handle-height”

  “text-handle-height”       int

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

Владелец: GtkWidget

Флаги: Чтение

Допустимые значения: >= 1

Значение по умолчанию: 20

Свойство стиля “text-handle-width”

  “text-handle-width”        int

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

Владелец: GtkWidget

Флаги: Чтение

Допустимые значения: >= 1

Значение по умолчанию: 16

Свойство стиля “visited-link-color”

  “visited-link-color”       GdkColor *

Свойство "visited-link-color" определяет цвет посещённых ссылок.

GtkWidget:visited-link-color устарело начиная с версии 3.12 и не должно использоваться в новом коде.

Для ссылок теперь используются отдельные флаги состояния для выбора разных тем оформления, это свойство игнорируется

Владелец: GtkWidget

Флаги: Чтение

С версии: 2.10

Свойство стиля “wide-separators”

  “wide-separators”          gboolean

Свойство "wide-separators" определяет, имеют ли разделители настраиваемую ширину и должны ли они отображаться с помощью рамки вместо линии.

GtkWidget:wide-separators устарело начиная с версии 3.20 и не должно использоваться в новом коде.

Используйте свойства CSS для элементов разделителей для оформления; значение этого свойства стиля игнорируется.

Владелец: GtkWidget

Флаги: Чтение

Значение по умолчанию: FALSE

С версии: 2.10

Свойство стиля “window-dragging”

  “window-dragging”          gboolean

Можно ли перетаскивать окна и изменять их размер, нажимая на пустые области.

Владелец: GtkWidget

Флаги: Чтение

Значение по умолчанию: 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 для дальнейшей обработки события.

Флаги: Run Last

Сигнал “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 для дальнейшей обработки события.

Флаги: Run Last

Сигнал “can-activate-accel”

gboolean
user_function (GtkWidget *widget,
               guint      signal_id,
               gpointer   user_data)

Определяет, может ли в данный момент быть активирован ярлык, активирующий сигнал, определённый параметром signal_id. Этот сигнал позволяет приложениям и производным виджетам переопределить стандартную обработку GtkWidget для определения возможности активации ярлыка.

Параметры

widget

объект, получивший сигнал

signal_id

ИД сигнала, установленного на widget

user_data

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

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

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

Флаги: Run Last

Сигнал “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().

GtkWidget::composited-changed устарел с версии 3.22 и не должен использоваться в новом коде.

Используйте GdkScreen::composited-changed вместо него.

Параметры

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 для дальнейшей обработки события.

Флаги: Run Last

Сигнал “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 для дальнейшей обработки события.

Флаги: Run Last

С: 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 для дальнейшей обработки события.

Флаги: Run Last

Сигнал “destroy”

void
user_function (GtkWidget *object,
               gpointer   user_data)

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

Этот сигнал не подходит для сохранения состояния виджета.

Параметры

object

объект, получивший сигнал

user_data

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

Флаги: No Hooks

Сигнал “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 для дальнейшей обработки события.

Флаги: Run Last

Сигнал “direction-changed”

void
user_function (GtkWidget       *widget,
               GtkTextDirection previous_direction,
               gpointer         user_data)

Сигнал ::direction-changed генерируется, когда изменяется направление текста виджета.

Параметры

widget

объект, на котором генерируется сигнал

previous_direction

предыдущее направление текста widget

user_data

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

Флаги: Run First

Сигнал “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

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

Флаги: Run Last

Сигнал “drag-data-delete”

void
user_function (GtkWidget      *widget,
               GdkDragContext *context,
               gpointer        user_data)

Сигнал ::drag-data-delete генерируется на источнике перетаскивания, когда завершается операция перетаскивания с действием GDK_ACTION_MOVE. Обработчик сигнала отвечает за удаление данных, которые были перетащены. Что означает "удаление", зависит от контекста операции перетаскивания.

Параметры

widget

объект, получивший сигнал

context

контекст перетаскивания

user_data

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

Флаги: Run Last

Сигнал “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

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

Флаги: Run Last

Сигнал “drag-data-received”

void
user_function (GtkWidget        *widget,
               GdkDragContext   *context,
               int               x,
               int               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,
               int             x,
               int             y,
               guint           time,
               gpointer        user_data)

Сигнал ::drag-drop генерируется в точке приема, когда пользователь опускает данные на виджет. Обработчик сигнала должен определить, находится ли курсор в области падения. Если нет, он возвращает FALSE, и дальнейшая обработка не требуется. В противном случае обработчик возвращает TRUE. В этом случае обработчик должен убедиться, что gtk_drag_finish() вызывается, чтобы сообщить источнику о завершении падения. Вызов gtk_drag_finish() может быть выполнен либо непосредственно, либо в обработчике сигнала «drag-data-received», который срабатывает при вызове gtk_drag_get_data() для получения данных для одного или нескольких поддерживаемых целевых объектов.

Параметры

...

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

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

Флаги: Выполняется в последнюю очередь

Сигнал “drag-end”

void
user_function (GtkWidget      *widget,
               GdkDragContext *context,
               gpointer        user_data)

Сигнал ::drag-end генерируется в источнике перетаскивания, когда перетаскивание завершено. Типичная причина подключения к этому сигналу — отмена действий, выполненных в «drag-begin».

Параметры

...

Флаги: Выполняется в последнюю очередь

Сигнал “drag-failed”

gboolean
user_function (GtkWidget      *widget,
               GdkDragContext *context,
               GtkDragResult   result,
               gpointer        user_data)

Сигнал ::drag-failed генерируется в источнике перетаскивания, когда перетаскивание завершилось неудачно. Обработчик сигнала может подключить собственный код для обработки неудачной операции перетаскивания и падения на основе типа ошибки. Он возвращает TRUE, если неудача уже обработана (не отображается стандартная анимация "ошибка операции перетаскивания"), в противном случае он возвращает FALSE.

Параметры

...

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

TRUE, если неудачная операция перетаскивания уже обработана.

Флаги: Выполняется в последнюю очередь

С версии: 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».

Параметры

...

Флаги: Выполняется в последнюю очередь

Сигнал “drag-motion”

gboolean
user_function (GtkWidget      *widget,
               GdkDragContext *context,
               int             x,
               int             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 как сигнал «enter». При появлении сигнала «enter» обработчик, как правило, выделяет точку назначения с помощью 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

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

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

является ли позиция курсора в зоне размещения

Флаги: Выполнить в конце

Сигнал “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 для дальнейшей обработки события.

Флаги: Выполнить в конце

С версии: 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 для распространения события дальше.

Флаги: Run Last

Сигнал “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 для распространения события дальше.

Флаги: Run Last

Сигнал “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 для распространения события дальше.

Флаги: Run Last

Сигнал “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, вызвавшее этот сигнал.

[тип 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, вызвавшее этот сигнал.

[тип 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, вызвавшее этот сигнал.

[тип 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, вызвавшее этот сигнал.

[тип Gdk.EventAny]

user_data

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

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

TRUE для остановки вызова других обработчиков для события. FALSE для дальнейшей передачи события.

Флаги: Run Last

Сигнал “mnemonic-activate”

gboolean
user_function (GtkWidget *widget,
               gboolean   group_cycling,
               gpointer   user_data)

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

Параметры

widget

объект, получивший сигнал.

group_cycling

TRUE если есть другие виджеты с таким же мнемоническим обозначением

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

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run First

Сигнал “popup-menu”

gboolean
user_function (GtkWidget *widget,
               gpointer   user_data)

Этот сигнал генерируется всякий раз, когда виджет должен отобразить контекстное меню. Обычно это происходит через стандартную механику привязки клавиш; нажатие определенной клавиши при фокусе на виджете может вызвать появление меню. Например, виджет GtkEntry создает меню с командами буфера обмена. См. Список проверок миграции Popup Menu для примера использования этого сигнала.

Параметры

widget

объект, получивший сигнал

user_data

данные пользователя, заданные при подключении обработчика сигнала.

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

TRUE если меню было активировано

Флаги: Action

Сигнал “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 для дальнейшей обработки события.

Флаги: Run Last

Сигнал “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 для дальнейшей обработки события.

Флаги: Run Last

Сигнал “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 для дальнейшей обработки события.

Флаги: Run Last

Сигнал “query-tooltip”

gboolean
user_function (GtkWidget  *widget,
               int         x,
               int         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

.

[type Gdk.EventSelection]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

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

TRUE чтобы остановить вызов других обработчиков для события. FALSE чтобы распространить событие дальше.

Флаги: Run Last

Сигнал “selection-received”

void
user_function (GtkWidget        *widget,
               GtkSelectionData *data,
               guint             time,
               gpointer          user_data)

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run Last

Сигнал “selection-request-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *event,
               gpointer   user_data)

Сигнал ::selection-request-event будет выпущен, когда другой клиент запросит владение выделением, принадлежащим окну widget.

Параметры

widget

объект, получивший сигнал

event

событие GdkEventSelection, которое спровоцировало этот сигнал.

[type Gdk.EventSelection]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

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

TRUE для прекращения вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Run Last

Сигнал “show”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::show генерируется, когда widget отображается, например, с помощью gtk_widget_show().

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run First

Сигнал “show-help”

gboolean
user_function (GtkWidget        *widget,
               GtkWidgetHelpType help_type,
               gpointer          user_data)

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

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

TRUE для прекращения вызова других обработчиков для события. FALSE для дальнейшей обработки события.

Флаги: Action

Сигнал “size-allocate”

void
user_function (GtkWidget    *widget,
               GdkRectangle *allocation,
               gpointer      user_data)

Параметры

widget

объект, получивший сигнал.

allocation

область, выделенная виджету.

[type Gtk.Allocation]

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run First

Сигнал “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

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run First

Сигнал “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

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run First

С версии: 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

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run First

Сигнал “style-updated”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::style-updated — это удобный сигнал, который генерируется при генерации сигнала “changed” на ассоциированном с widget GtkStyleContext, возвращаемом gtk_widget_get_style_context().

Обратите внимание, что функции изменения стиля, такие как gtk_widget_override_color(), также вызывают генерацию этого сигнала.

Параметры

widget

объект, на котором генерируется сигнал

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run First

С версии: 3.0

Сигнал “touch-event”

gboolean
user_function (GtkWidget *widget,
               GdkEvent  *arg1,
               gpointer   user_data)

Флаги: Run Last

Сигнал “unmap”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::unmap генерируется, когда widget будет скрыт, что означает, что либо он сам, либо любой из его родительских виджетов до верхнего уровня были скрыты.

Поскольку ::unmap указывает, что виджет больше не будет отображаться, его можно использовать, например, для остановки анимации на виджете.

Параметры

widget

объект, получивший сигнал.

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run First

Сигнал “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 для дальнейшей обработки события.

Флаги: Run Last

Сигнал “unrealize”

void
user_function (GtkWidget *widget,
               gpointer   user_data)

Сигнал ::unrealize испускается, когда GdkWindow, связанный с widget, уничтожается, что означает, что был вызван gtk_widget_unrealize() или виджет был скрыт.

Параметры

widget

объект, получивший сигнал.

user_data

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

Флаги: Run Last

Сигнал “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 для дальнейшей обработки события.

Флаги: Run Last

Сигнал “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 для дальнейшей обработки события.

Флаги: Run Last

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/GtkWidget.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API