Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
gtk.c File Reference
#include "common/darktable.h"
#include "common/collection.h"
#include "common/colorspaces.h"
#include "common/l10n.h"
#include "common/file_location.h"
#include "common/ratings.h"
#include "common/image.h"
#include "common/image_cache.h"
#include "gui/guides.h"
#include "bauhaus/bauhaus.h"
#include "develop/develop.h"
#include "develop/imageop.h"
#include "dtgtk/button.h"
#include "dtgtk/expander.h"
#include "dtgtk/sidepanel.h"
#include "gui/gtk.h"
#include "gui/splash.h"
#include "common/styles.h"
#include "control/conf.h"
#include "control/control.h"
#include "control/jobs.h"
#include "control/signal.h"
#include "gui/presets.h"
#include "views/view.h"
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
+ Include dependency graph for gtk.c:

Go to the source code of this file.

Data Structures

struct  dt_tablet_motion_state_t
 
struct  _spacing_ctx_t
 
struct  result_t
 
struct  dt_ui_resizable_area_t
 

Typedefs

typedef struct dt_tablet_motion_state_t dt_tablet_motion_state_t
 
typedef struct _spacing_ctx_t _spacing_ctx_t
 
typedef struct result_t result_t
 
typedef struct dt_ui_resizable_area_t dt_ui_resizable_area_t
 

Functions

static void _ui_widget_redraw_callback (gpointer instance, GtkWidget *widget)
 
static void _ui_log_redraw_callback (gpointer instance, GtkWidget *widget)
 
static void _ui_toast_redraw_callback (gpointer instance, GtkWidget *widget)
 
void dt_gui_add_class (GtkWidget *widget, const gchar *class_name)
 
void dt_gui_remove_class (GtkWidget *widget, const gchar *class_name)
 
static void _init_widgets (dt_gui_gtk_t *gui)
 
static gboolean _configure (GtkWidget *da, GdkEventConfigure *event, gpointer user_data)
 
gboolean dt_gui_get_scroll_deltas (const GdkEventScroll *event, gdouble *delta_x, gdouble *delta_y)
 
gboolean dt_gui_get_scroll_unit_deltas (const GdkEventScroll *event, int *delta_x, int *delta_y)
 
gboolean dt_gui_get_scroll_delta (const GdkEventScroll *event, gdouble *delta)
 
gboolean dt_gui_get_scroll_unit_delta (const GdkEventScroll *event, int *delta)
 
static gboolean _draw (GtkWidget *da, cairo_t *cr, gpointer user_data)
 
static gboolean _scrolled (GtkWidget *widget, GdkEventScroll *event, gpointer user_data)
 
int dt_gui_gtk_write_config ()
 
void dt_gui_gtk_set_source_rgb (cairo_t *cr, dt_gui_color_t color)
 
void dt_gui_gtk_set_source_rgba (cairo_t *cr, dt_gui_color_t color, float opacity_coef)
 
void dt_gui_gtk_quit ()
 
gboolean dt_gui_quit_callback (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 
void dt_gui_store_last_preset (const char *name)
 
static gboolean _window_configure (GtkWidget *da, GdkEvent *event, gpointer user_data)
 
static double _clamp01d (const double value)
 
static const gdouble * _event_axes (const GdkEvent *event)
 
static gboolean _get_axis_value_for_source (const GdkEvent *event, GdkDevice *source_device, const GdkAxisUse axis, double *value, gboolean *from_source_map)
 
static gboolean _sample_axis_from_device_state (GdkWindow *window, GdkDevice *device, const GdkAxisUse axis, double *value)
 
static gboolean _sample_tablet_state_from_devices (const GdkEvent *event, double *pressure, gboolean *have_pressure, double *tilt_x, double *tilt_y, gboolean *have_tilt, const char **picked_device_name)
 
static dt_control_pointer_input_t _extract_pointer_input (const GdkEvent *event, const double x, const double y, const guint32 time_ms, const gboolean reset_kinematics, const char *tag)
 
static gboolean _button_pressed (GtkWidget *w, GdkEventButton *event, gpointer user_data)
 
static gboolean _button_released (GtkWidget *w, GdkEventButton *event, gpointer user_data)
 
static gboolean _mouse_moved (GtkWidget *w, GdkEventMotion *event, gpointer user_data)
 
static gboolean _key_pressed (GtkWidget *w, GdkEventKey *event)
 
static gboolean _center_leave (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data)
 
static gboolean _center_enter (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data)
 
static const char * _get_source_name (int pos)
 
static const char * _get_mode_name (int pos)
 
static const char * _get_axis_name (int pos)
 
int dt_gui_gtk_init (dt_gui_gtk_t *gui)
 
void dt_gui_gtk_run (dt_gui_gtk_t *gui)
 
double dt_get_system_gui_ppd (GtkWidget *widget)
 
void dt_configure_ppd_dpi (dt_gui_gtk_t *gui)
 
static void _refresh_container_spacing (GtkWidget *w, gpointer user_data)
 
static void _refresh_all_container_spacing (void)
 
void dt_gui_update_em (void)
 
void dt_gui_set_pango_resolution (PangoLayout *layout)
 
void dt_gui_cairo_set_font_options (cairo_t *cr, GtkWidget *widget)
 
static gboolean _focus_in_out_event (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 
static gboolean _ui_log_button_press_event (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 
static gboolean _ui_toast_button_press_event (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 
void dt_ui_container_focus_widget (dt_ui_t *ui, const dt_ui_container_t c, GtkWidget *w)
 gives a widget focus in the container
 
void dt_ui_container_foreach (dt_ui_t *ui, const dt_ui_container_t c, GtkCallback callback)
 calls a callback on all children widgets from container
 
void dt_ui_container_destroy_children (dt_ui_t *ui, const dt_ui_container_t c)
 destroy all child widgets from container
 
void dt_ui_notify_user ()
 draw user's attention
 
void dt_ellipsize_combo (GtkComboBox *cbox)
 
static void _gtk_main_quit_safe (GtkWidget *widget, gpointer data)
 
static void _yes_no_button_handler (GtkButton *button, gpointer data)
 
gboolean dt_gui_show_standalone_yes_no_dialog (const char *title, const char *markup, const char *no_text, const char *yes_text)
 
char * dt_gui_show_standalone_string_dialog (const char *title, const char *markup, const char *placeholder, const char *no_text, const char *yes_text)
 
void dt_gui_add_help_link (GtkWidget *widget, char *link)
 
void dt_gui_load_theme (const char *theme)
 
GdkModifierType dt_key_modifier_state ()
 
static void _notebook_size_callback (GtkNotebook *notebook, GdkRectangle *allocation, gpointer *data)
 
static gboolean _notebook_motion_notify_callback (GtkWidget *widget, GdkEventMotion *event, gpointer user_data)
 
GtkNotebook * dt_ui_notebook_new ()
 
GtkWidgetdt_ui_notebook_page (GtkNotebook *notebook, const char *text, const char *tooltip)
 
static gint _get_container_row_heigth (GtkWidget *w)
 
static GtkWidget_search_parent_scrolled_window (GtkWidget *w)
 
static int _treeview_count_visible_rows (GtkTreeView *treeview, GtkTreeModel *model, GtkTreeIter *parent)
 
static int _textview_count_visible_rows (GtkWidget *textview)
 
static void _widget_auto_disconnect_model (dt_gui_widget_auto_height_t *state, GtkWidget *treeview)
 
static void _widget_auto_disconnect_buffer (dt_gui_widget_auto_height_t *state)
 
static gint _resizable_scroll_max_height (void)
 Window-height ceiling shared by the auto-size rule and the drag handle.
 
static void _resizable_scroll_apply (GtkWidget *w)
 The single sizing rule for every dt_ui_scroll_wrap area.
 
static void _widget_auto_update (GtkWidget *widget)
 
static gboolean _resizable_scroll_draw (GtkWidget *w, cairo_t *cr, gpointer user_data)
 
static void _resizable_scroll_realize (GtkWidget *w, gpointer user_data)
 
static int _resizable_scroll_handle_get_size (gpointer user_data)
 
static int _resizable_scroll_handle_resize (int requested_size, gboolean finished, gpointer user_data)
 
static void _widget_auto_model_row_inserted (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data)
 
static void _widget_auto_model_row_deleted (GtkTreeModel *model, GtkTreePath *path, gpointer user_data)
 
static void _widget_auto_model_row_changed (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data)
 
static void _widget_auto_model_rows_reordered (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gint *new_order, gpointer user_data)
 
static void _widget_auto_model_row_expanded (GtkTreeView *tree_view, GtkTreeIter *expanded_iter, GtkTreePath *path, gpointer user_data)
 
static void _widget_auto_model_row_collapsed (GtkTreeView *tree_view, GtkTreeIter *collapsed_iter, GtkTreePath *path, gpointer user_data)
 
static void _widget_auto_text_buffer_changed (GtkTextBuffer *buffer, gpointer user_data)
 
static void _widget_auto_connect_model (GtkWidget *treeview)
 
static void _widget_auto_connect_buffer (GtkWidget *textview)
 
static void _widget_auto_on_model_changed (GObject *treeview, GParamSpec *pspec, gpointer user_data)
 
static void _widget_auto_on_buffer_changed (GObject *textview, GParamSpec *pspec, gpointer user_data)
 
static void _widget_auto_height_free (gpointer data)
 
void dt_gui_textview_set_padding (GtkTextView *textview)
 Apply the standard recessed-input text padding to a GtkTextView.
 
GtkWidgetdt_ui_scroll_wrap (GtkWidget *w, gint min_size, char *config_str, dt_ui_resize_mode_t mode)
 Wrap a scrollable content widget in a recessed, vertically resizable scrolled window.
 
GtkWidgetdt_ui_scroll_wrap_get_scrolled_window (GtkWidget *wrapper)
 Return the inner scrolled window of a dt_ui_scroll_wrap() wrapper, or NULL.
 
static void _resizable_area_free (gpointer data)
 
static int _resizable_area_get_size (gpointer user_data)
 
static int _resizable_area_resize (int requested_size, gboolean finished, gpointer user_data)
 
GtkWidgetdt_ui_resizable_drawing_area (GtkWidget *area, char *config_str, int default_height, int min_height)
 Make a self-drawing widget (typically a GtkDrawingArea graph or scope) vertically resizable.
 
gboolean dt_gui_container_has_children (GtkContainer *container)
 
int dt_gui_container_num_children (GtkContainer *container)
 
GtkWidgetdt_gui_container_first_child (GtkContainer *container)
 
GtkWidgetdt_gui_container_nth_child (GtkContainer *container, int which)
 
static void _remove_child (GtkWidget *widget, gpointer data)
 
void dt_gui_container_remove_children (GtkContainer *container)
 
static void _delete_child (GtkWidget *widget, gpointer data)
 
void dt_gui_container_destroy_children (GtkContainer *container)
 
GtkWidgetdt_gui_get_popup_relative_widget (GtkWidget *widget, GdkRectangle *rect)
 Resolve the widget used as parent for nested popups on Wayland.
 
void dt_gui_menu_popup (GtkMenu *menu, GtkWidget *button, GdkGravity widget_anchor, GdkGravity menu_anchor)
 
static void _popover_set_relative_to_topmost_parent (GtkPopover *popover, GtkWidget *button)
 
void dt_gui_draw_rounded_rectangle (cairo_t *cr, float width, float height, float x, float y)
 
gboolean dt_gui_search_start (GtkWidget *widget, GdkEventKey *event, GtkSearchEntry *entry)
 
void dt_gui_search_stop (GtkSearchEntry *entry, GtkWidget *widget)
 
static void _collapsible_set_states (dt_gui_collapsible_section_t *cs, gboolean active)
 
static void _collapsible_container_show (GtkWidget *widget, gpointer user_data)
 
static void _coeffs_button_changed (GtkDarktableToggleButton *widget, gpointer user_data)
 
static void _coeffs_expander_click (GtkWidget *widget, GdkEventButton *e, gpointer user_data)
 
void dt_gui_update_collapsible_section (dt_gui_collapsible_section_t *cs)
 
void dt_gui_hide_collapsible_section (dt_gui_collapsible_section_t *cs)
 
void dt_gui_new_collapsible_section (dt_gui_collapsible_section_t *cs, const char *confname, const char *label, GtkBox *parent, GtkPackType pack)
 Create a collapsible section and pack it into the parent box.
 
void dt_capitalize_label (gchar *text)
 
GtkBox * attach_popover (GtkWidget *widget, const char *icon, GtkWidget *content)
 
GtkBox * attach_help_popover (GtkWidget *widget, const char *label)
 
static gboolean _text_entry_focus_in_event (GtkWidget *self, GdkEventFocus event, gpointer user_data)
 
static gboolean _text_entry_focus_out_event (GtkWidget *self, GdkEventFocus event, gpointer user_data)
 
static gboolean _text_entry_key_pressed (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
 
void dt_accels_disconnect_on_text_input (GtkWidget *widget)
 Disconnects accels when a text or search entry gets the focus, and reconnects them when it looses it. This helps dealing with one-key shortcuts.
 
void dt_gui_refocus_center ()
 

Variables

static dt_tablet_motion_state_t _tablet_motion_state = { 0 }
 
static gint _last_box_spacing = 10
 
static const char *const DT_GUI_WIDGET_AUTO_HEIGHT_KEY = "dt-gui-widget-auto-height"
 
static const char *const DT_UI_RESIZABLE_AREA_KEY = "dt-ui-resizable-area"
 

Typedef Documentation

◆ _spacing_ctx_t

◆ dt_tablet_motion_state_t

◆ dt_ui_resizable_area_t

◆ result_t

typedef struct result_t result_t

Function Documentation

◆ _button_pressed()

◆ _button_released()

static gboolean _button_released ( GtkWidget w,
GdkEventButton *  event,
gpointer  user_data 
)
static

◆ _center_enter()

static gboolean _center_enter ( GtkWidget widget,
GdkEventCrossing *  event,
gpointer  user_data 
)
static

Definition at line 1069 of file gtk.c.

References dt_control_mouse_enter(), and TRUE.

Referenced by dt_gui_gtk_init().

◆ _center_leave()

static gboolean _center_leave ( GtkWidget widget,
GdkEventCrossing *  event,
gpointer  user_data 
)
static

Definition at line 1063 of file gtk.c.

References dt_control_mouse_leave(), and TRUE.

Referenced by dt_gui_gtk_init().

◆ _clamp01d()

static double _clamp01d ( const double  value)
inlinestatic

Definition at line 576 of file gtk.c.

References MAX, MIN, and value.

Referenced by _extract_pointer_input().

◆ _coeffs_button_changed()

◆ _coeffs_expander_click()

static void _coeffs_expander_click ( GtkWidget widget,
GdkEventButton *  e,
gpointer  user_data 
)
static

◆ _collapsible_container_show()

static void _collapsible_container_show ( GtkWidget widget,
gpointer  user_data 
)
static

Definition at line 3046 of file gtk.c.

References _gui_collapsible_section_t::toggle.

Referenced by dt_gui_new_collapsible_section().

◆ _collapsible_set_states()

◆ _configure()

static gboolean _configure ( GtkWidget da,
GdkEventConfigure *  event,
gpointer  user_data 
)
static

◆ _delete_child()

static void _delete_child ( GtkWidget widget,
gpointer  data 
)
static

Definition at line 2913 of file gtk.c.

References void().

Referenced by dt_gui_container_destroy_children().

◆ _draw()

static gboolean _draw ( GtkWidget da,
cairo_t *  cr,
gpointer  user_data 
)
static

Definition at line 325 of file gtk.c.

References darktable, dt_control_expose(), darktable_t::gui, dt_gui_gtk_t::surface, and TRUE.

Referenced by dt_gui_gtk_init().

◆ _event_axes()

static const gdouble * _event_axes ( const GdkEvent *  event)
static

Definition at line 581 of file gtk.c.

References IS_NULL_PTR.

Referenced by _get_axis_value_for_source().

◆ _extract_pointer_input()

◆ _focus_in_out_event()

static gboolean _focus_in_out_event ( GtkWidget widget,
GdkEvent *  event,
gpointer  user_data 
)
static

Definition at line 1506 of file gtk.c.

References FALSE.

Referenced by _init_widgets().

◆ _get_axis_name()

static const char * _get_axis_name ( int  pos)
static

Definition at line 1092 of file gtk.c.

Referenced by dt_gui_gtk_init().

◆ _get_axis_value_for_source()

static gboolean _get_axis_value_for_source ( const GdkEvent *  event,
GdkDevice *  source_device,
const GdkAxisUse  axis,
double value,
gboolean *  from_source_map 
)
static

Definition at line 598 of file gtk.c.

References _event_axes(), FALSE, IS_NULL_PTR, TRUE, and value.

Referenced by _extract_pointer_input().

◆ _get_container_row_heigth()

static gint _get_container_row_heigth ( GtkWidget w)
static

Definition at line 2283 of file gtk.c.

References dt_gui_container_first_child(), DT_PIXEL_APPLY_DPI, and height.

Referenced by _resizable_scroll_apply().

◆ _get_mode_name()

static const char * _get_mode_name ( int  pos)
static

Definition at line 1085 of file gtk.c.

Referenced by dt_gui_gtk_init().

◆ _get_source_name()

static const char * _get_source_name ( int  pos)
static

Definition at line 1075 of file gtk.c.

Referenced by dt_gui_gtk_init().

◆ _gtk_main_quit_safe()

static void _gtk_main_quit_safe ( GtkWidget widget,
gpointer  data 
)
static

◆ _init_widgets()

◆ _key_pressed()

static gboolean _key_pressed ( GtkWidget w,
GdkEventKey *  event 
)
static

◆ _mouse_moved()

static gboolean _mouse_moved ( GtkWidget w,
GdkEventMotion *  event,
gpointer  user_data 
)
static

◆ _notebook_motion_notify_callback()

static gboolean _notebook_motion_notify_callback ( GtkWidget widget,
GdkEventMotion *  event,
gpointer  user_data 
)
static

Definition at line 2239 of file gtk.c.

References FALSE, i, and n.

Referenced by dt_ui_notebook_page().

◆ _notebook_size_callback()

static void _notebook_size_callback ( GtkNotebook *  notebook,
GdkRectangle *  allocation,
gpointer *  data 
)
static

Definition at line 2199 of file gtk.c.

References dt_free, i, and n.

Referenced by dt_ui_notebook_page().

◆ _popover_set_relative_to_topmost_parent()

static void _popover_set_relative_to_topmost_parent ( GtkPopover *  popover,
GtkWidget button 
)
static

Definition at line 2983 of file gtk.c.

References dt_gui_get_popup_relative_widget().

Referenced by attach_popover().

◆ _refresh_all_container_spacing()

static void _refresh_all_container_spacing ( void  )
static

Definition at line 1427 of file gtk.c.

References _last_box_spacing, _refresh_container_spacing(), and DT_GUI_BOX_SPACING.

Referenced by dt_gui_update_em().

◆ _refresh_container_spacing()

static void _refresh_container_spacing ( GtkWidget w,
gpointer  user_data 
)
static

Definition at line 1397 of file gtk.c.

References _refresh_container_spacing().

Referenced by _refresh_all_container_spacing(), and _refresh_container_spacing().

◆ _remove_child()

static void _remove_child ( GtkWidget widget,
gpointer  data 
)
static

Definition at line 2902 of file gtk.c.

Referenced by dt_gui_container_remove_children().

◆ _resizable_area_free()

static void _resizable_area_free ( gpointer  data)
static

Definition at line 2807 of file gtk.c.

References dt_free, IS_NULL_PTR, and state.

Referenced by dt_ui_resizable_drawing_area().

◆ _resizable_area_get_size()

static int _resizable_area_get_size ( gpointer  user_data)
static

Definition at line 2815 of file gtk.c.

References DT_UI_RESIZABLE_AREA_KEY, and state.

Referenced by dt_ui_resizable_drawing_area().

◆ _resizable_area_resize()

static int _resizable_area_resize ( int  requested_size,
gboolean  finished,
gpointer  user_data 
)
static

◆ _resizable_scroll_apply()

static void _resizable_scroll_apply ( GtkWidget w)
static

The single sizing rule for every dt_ui_scroll_wrap area.

Height = clamp(min(content, cap), min_size, 75% window), where the cap is the user's persisted height when set, otherwise the window ceiling so the area auto-grows to its content. This makes small content shrink to fit, lets nested lists grow and have their parent panel scroll until the user drags the handle to cap them, and snaps lists/textviews to whole rows to avoid clipped half-rows. The computed bare (pre-padding) height is cached for the drag handle.

Definition at line 2450 of file gtk.c.

References _get_container_row_heigth(), _resizable_scroll_max_height(), _search_parent_scrolled_window(), _textview_count_visible_rows(), _treeview_count_visible_rows(), dt_conf_get_int(), dt_conf_key_exists(), DT_GUI_WIDGET_AUTO_HEIGHT_KEY, DT_UI_RESIZE_STATIC, height, IS_NULL_PTR, MAX, MIN, and state.

Referenced by _resizable_scroll_draw(), _resizable_scroll_handle_resize(), _resizable_scroll_realize(), and _widget_auto_update().

◆ _resizable_scroll_draw()

static gboolean _resizable_scroll_draw ( GtkWidget w,
cairo_t *  cr,
gpointer  user_data 
)
static

Definition at line 2521 of file gtk.c.

References _resizable_scroll_apply(), and FALSE.

Referenced by dt_ui_scroll_wrap().

◆ _resizable_scroll_handle_get_size()

static int _resizable_scroll_handle_get_size ( gpointer  user_data)
static

Definition at line 2533 of file gtk.c.

References DT_GUI_WIDGET_AUTO_HEIGHT_KEY, and state.

Referenced by dt_ui_scroll_wrap().

◆ _resizable_scroll_handle_resize()

static int _resizable_scroll_handle_resize ( int  requested_size,
gboolean  finished,
gpointer  user_data 
)
static

◆ _resizable_scroll_max_height()

static gint _resizable_scroll_max_height ( void  )
static

Window-height ceiling shared by the auto-size rule and the drag handle.

The full main-window height: a resizable area may grow as tall as the window (the parent panel scrolls to reach it). Content shorter than this still shrinks to fit, so this only bounds how far the user can drag.

Definition at line 2435 of file gtk.c.

References darktable, DT_PIXEL_APPLY_DPI, dt_ui_main_window(), darktable_t::gui, and dt_gui_gtk_t::ui.

Referenced by _resizable_area_resize(), _resizable_scroll_apply(), _resizable_scroll_handle_resize(), and dt_ui_resizable_drawing_area().

◆ _resizable_scroll_realize()

static void _resizable_scroll_realize ( GtkWidget w,
gpointer  user_data 
)
static

Definition at line 2527 of file gtk.c.

References _resizable_scroll_apply().

Referenced by dt_ui_scroll_wrap().

◆ _sample_axis_from_device_state()

static gboolean _sample_axis_from_device_state ( GdkWindow *  window,
GdkDevice *  device,
const GdkAxisUse  axis,
double value 
)
static

Definition at line 619 of file gtk.c.

References FALSE, IS_NULL_PTR, and value.

Referenced by _extract_pointer_input().

◆ _sample_tablet_state_from_devices()

static gboolean _sample_tablet_state_from_devices ( const GdkEvent *  event,
double pressure,
gboolean *  have_pressure,
double tilt_x,
double tilt_y,
gboolean *  have_tilt,
const char **  picked_device_name 
)
static

Definition at line 640 of file gtk.c.

References darktable, dt_ui_center(), FALSE, darktable_t::gui, i, IS_NULL_PTR, p, TRUE, and dt_gui_gtk_t::ui.

Referenced by _extract_pointer_input().

◆ _scrolled()

static gboolean _scrolled ( GtkWidget widget,
GdkEventScroll *  event,
gpointer  user_data 
)
static

◆ _search_parent_scrolled_window()

static GtkWidget * _search_parent_scrolled_window ( GtkWidget w)
static

Definition at line 2325 of file gtk.c.

Referenced by _resizable_scroll_apply().

◆ _text_entry_focus_in_event()

static gboolean _text_entry_focus_in_event ( GtkWidget self,
GdkEventFocus  event,
gpointer  user_data 
)
static

◆ _text_entry_focus_out_event()

static gboolean _text_entry_focus_out_event ( GtkWidget self,
GdkEventFocus  event,
gpointer  user_data 
)
static

◆ _text_entry_key_pressed()

static gboolean _text_entry_key_pressed ( GtkWidget widget,
GdkEventKey *  event,
gpointer  user_data 
)
static

Definition at line 3215 of file gtk.c.

References dt_gui_refocus_center(), FALSE, and TRUE.

Referenced by dt_accels_disconnect_on_text_input().

◆ _textview_count_visible_rows()

static int _textview_count_visible_rows ( GtkWidget textview)
static

Definition at line 2373 of file gtk.c.

References MAX.

Referenced by _resizable_scroll_apply().

◆ _treeview_count_visible_rows()

static int _treeview_count_visible_rows ( GtkTreeView *  treeview,
GtkTreeModel *  model,
GtkTreeIter *  parent 
)
static

Definition at line 2340 of file gtk.c.

References _treeview_count_visible_rows(), and model.

Referenced by _resizable_scroll_apply(), and _treeview_count_visible_rows().

◆ _ui_log_button_press_event()

static gboolean _ui_log_button_press_event ( GtkWidget widget,
GdkEvent *  event,
gpointer  user_data 
)
static

Definition at line 1512 of file gtk.c.

References TRUE.

Referenced by _init_widgets().

◆ _ui_log_redraw_callback()

static void _ui_log_redraw_callback ( gpointer  instance,
GtkWidget widget 
)
static

◆ _ui_toast_button_press_event()

static gboolean _ui_toast_button_press_event ( GtkWidget widget,
GdkEvent *  event,
gpointer  user_data 
)
static

Definition at line 1518 of file gtk.c.

References TRUE.

Referenced by _init_widgets().

◆ _ui_toast_redraw_callback()

◆ _ui_widget_redraw_callback()

static void _ui_widget_redraw_callback ( gpointer  instance,
GtkWidget widget 
)
static

Definition at line 1760 of file gtk.c.

Referenced by _init_widgets().

◆ _widget_auto_connect_buffer()

static void _widget_auto_connect_buffer ( GtkWidget textview)
static

◆ _widget_auto_connect_model()

◆ _widget_auto_disconnect_buffer()

static void _widget_auto_disconnect_buffer ( dt_gui_widget_auto_height_t state)
static

Definition at line 2413 of file gtk.c.

References IS_NULL_PTR, and state.

Referenced by _widget_auto_connect_buffer(), and _widget_auto_height_free().

◆ _widget_auto_disconnect_model()

static void _widget_auto_disconnect_model ( dt_gui_widget_auto_height_t state,
GtkWidget treeview 
)
static

Definition at line 2384 of file gtk.c.

References IS_NULL_PTR, model, and state.

Referenced by _widget_auto_connect_model(), and _widget_auto_height_free().

◆ _widget_auto_height_free()

static void _widget_auto_height_free ( gpointer  data)
static

◆ _widget_auto_model_row_changed()

static void _widget_auto_model_row_changed ( GtkTreeModel *  model,
GtkTreePath *  path,
GtkTreeIter *  iter,
gpointer  user_data 
)
static

Definition at line 2568 of file gtk.c.

References _widget_auto_update(), model, and void().

Referenced by _widget_auto_connect_model().

◆ _widget_auto_model_row_collapsed()

static void _widget_auto_model_row_collapsed ( GtkTreeView *  tree_view,
GtkTreeIter *  collapsed_iter,
GtkTreePath *  path,
gpointer  user_data 
)
static

Definition at line 2596 of file gtk.c.

References _widget_auto_update(), and void().

Referenced by _widget_auto_connect_model().

◆ _widget_auto_model_row_deleted()

static void _widget_auto_model_row_deleted ( GtkTreeModel *  model,
GtkTreePath *  path,
gpointer  user_data 
)
static

Definition at line 2561 of file gtk.c.

References _widget_auto_update(), model, and void().

Referenced by _widget_auto_connect_model().

◆ _widget_auto_model_row_expanded()

static void _widget_auto_model_row_expanded ( GtkTreeView *  tree_view,
GtkTreeIter *  expanded_iter,
GtkTreePath *  path,
gpointer  user_data 
)
static

Definition at line 2587 of file gtk.c.

References _widget_auto_update(), and void().

Referenced by _widget_auto_connect_model().

◆ _widget_auto_model_row_inserted()

static void _widget_auto_model_row_inserted ( GtkTreeModel *  model,
GtkTreePath *  path,
GtkTreeIter *  iter,
gpointer  user_data 
)
static

Definition at line 2552 of file gtk.c.

References _widget_auto_update(), model, and void().

Referenced by _widget_auto_connect_model().

◆ _widget_auto_model_rows_reordered()

static void _widget_auto_model_rows_reordered ( GtkTreeModel *  model,
GtkTreePath *  path,
GtkTreeIter *  iter,
gint *  new_order,
gpointer  user_data 
)
static

Definition at line 2577 of file gtk.c.

References _widget_auto_update(), model, and void().

Referenced by _widget_auto_connect_model().

◆ _widget_auto_on_buffer_changed()

static void _widget_auto_on_buffer_changed ( GObject *  textview,
GParamSpec *  pspec,
gpointer  user_data 
)
static

Definition at line 2669 of file gtk.c.

References _widget_auto_connect_buffer(), _widget_auto_update(), and void().

Referenced by dt_ui_scroll_wrap().

◆ _widget_auto_on_model_changed()

static void _widget_auto_on_model_changed ( GObject *  treeview,
GParamSpec *  pspec,
gpointer  user_data 
)
static

Definition at line 2661 of file gtk.c.

References _widget_auto_connect_model(), _widget_auto_update(), and void().

Referenced by dt_ui_scroll_wrap().

◆ _widget_auto_text_buffer_changed()

static void _widget_auto_text_buffer_changed ( GtkTextBuffer *  buffer,
gpointer  user_data 
)
static

Definition at line 2607 of file gtk.c.

References _widget_auto_update(), and void().

Referenced by _widget_auto_connect_buffer().

◆ _widget_auto_update()

◆ _window_configure()

static gboolean _window_configure ( GtkWidget da,
GdkEvent *  event,
gpointer  user_data 
)
static

Definition at line 546 of file gtk.c.

References DT_COLORSPACE_DISPLAY, dt_colorspaces_set_display_profile(), and FALSE.

Referenced by dt_gui_gtk_init().

◆ _yes_no_button_handler()

static void _yes_no_button_handler ( GtkButton *  button,
gpointer  data 
)
static

◆ attach_help_popover()

GtkBox * attach_help_popover ( GtkWidget widget,
const char *  label 
)

Add an help button triggering a popover label next to an arbitrary widget, to document its action. This is a better take at help tooltips that most people don't see, unless they know about them. Also tooltips window positionning is wonky (can easily overflow viewport), line breaks are added manually (ugly hack), and they appear and disappear on hover (not available on touch screens), so it's flimsy UI.

Parameters
widgetthe original widget to document. DON'T add it to a container.
labelthe in-app "docstring" for the widget
Returns
the GtkBox containing both the original widget and its popover button. That's what you will need to add it to your container.

Definition at line 3194 of file gtk.c.

References attach_popover(), and TRUE.

Referenced by gui_init().

◆ attach_popover()

GtkBox * attach_popover ( GtkWidget widget,
const char *  icon,
GtkWidget content 
)

Add an arbitrary button next to the widget that opens a popover with arbitrary content.

Parameters
widgetthe original widget next to which the popover button will be added. DON'T add it to a container.
iconthe Freedesktop icon name to put in the button
contentthe widget that will fit inside the popover
Returns
the GtkBox containing both the original widget and its popover button. That's what you will need to add it to your container.

Definition at line 3164 of file gtk.c.

References _popover_set_relative_to_topmost_parent(), DT_GUI_BOX_SPACING, DT_PIXEL_APPLY_DPI, and FALSE.

Referenced by attach_help_popover(), and gui_init().

◆ dt_accels_disconnect_on_text_input()

◆ dt_capitalize_label()

◆ dt_configure_ppd_dpi()

◆ dt_ellipsize_combo()

void dt_ellipsize_combo ( GtkComboBox *  cbox)

Definition at line 1814 of file gtk.c.

◆ dt_get_system_gui_ppd()

double dt_get_system_gui_ppd ( GtkWidget widget)

Definition at line 1331 of file gtk.c.

References DT_DEBUG_CONTROL, dt_osx_get_ppd(), and dt_print().

Referenced by dt_configure_ppd_dpi().

◆ dt_gui_add_class()

void dt_gui_add_class ( GtkWidget widget,
const gchar *  class_name 
)

Definition at line 133 of file gtk.c.

Referenced by _add_sample(), _add_tag_button_clicked(), _attach_grid_separator(), _bauhaus_widget_init(), _blendif_options_callback(), _collapsible_set_states(), _darkroom_autoset_button_set_running(), _darkroom_autoset_popover_rebuild(), _discarded_files_popup(), _ensure_page_widgets(), _gui_presets_popup_menu_show_internal(), _gui_set_single_expanded(), _gui_styles_dialog_run(), _hm_show_merge_report_popup(), _init_widgets(), _insert_subsection_sep(), _iop_dim_all_but(), _iop_tooltip_callback(), _ioporder_create_endpoint_node(), _ioporder_create_graph_node(), _lib_backgroundjobs_added(), _menuitem_preferences(), _modulegroups_drag_begin(), _modulegroups_drag_motion(), _mouse_over_image_callback(), _set_widget_dimmed(), _thumb_update_rating_class(), add_generic_top_menu_entry(), ask_and_delete(), dt_accels_search(), dt_accels_window(), dt_bauhaus_combobox_from_widget(), dt_bauhaus_slider_from_widget(), dt_control_crawler_show_image_list(), dt_gui_gtk_quit(), dt_gui_hist_dialog_new(), dt_gui_new_collapsible_section(), dt_guides_popover(), dt_iop_gui_init_blendif(), dt_iop_gui_init_masks(), dt_iop_gui_init_raster(), dt_iop_gui_set_enable_button(), dt_iop_gui_set_expander(), dt_iop_request_focus(), dt_lib_export_metadata_configuration_dialog(), dt_lib_gui_get_expander(), dt_lib_gui_set_expanded(), dt_lib_presets_popup_menu_show(), dt_thumbnail_create_widget(), dt_thumbnail_set_group_border(), dt_thumbtable_new(), dt_thumbtable_set_overlays_mode(), dt_ui_init_global_menu(), dt_ui_scroll_wrap(), dt_ui_section_label_set(), dtgtk_button_new(), dtgtk_gradient_slider_multivalue_new(), dtgtk_gradient_slider_multivalue_new_with_color(), dtgtk_gradient_slider_new(), dtgtk_gradient_slider_new_with_color(), dtgtk_thumbnail_btn_new(), dtgtk_togglebutton_new(), gui_init(), gui_init(), gui_init(), gui_init(), init_tab_general(), init_tab_presets(), and update_entry().

◆ dt_gui_add_help_link()

◆ dt_gui_cairo_set_font_options()

void dt_gui_cairo_set_font_options ( cairo_t *  cr,
GtkWidget widget 
)

◆ dt_gui_container_destroy_children()

void dt_gui_container_destroy_children ( GtkContainer *  container)

◆ dt_gui_container_first_child()

GtkWidget * dt_gui_container_first_child ( GtkContainer *  container)

Definition at line 2882 of file gtk.c.

References container().

Referenced by _get_container_row_heigth(), and gui_init().

◆ dt_gui_container_has_children()

gboolean dt_gui_container_has_children ( GtkContainer *  container)

Definition at line 2862 of file gtk.c.

References container(), FALSE, and IS_NULL_PTR.

Referenced by _destroyed_gui_thread().

◆ dt_gui_container_nth_child()

GtkWidget * dt_gui_container_nth_child ( GtkContainer *  container,
int  which 
)

Definition at line 2892 of file gtk.c.

References container().

Referenced by _iop_panel_label().

◆ dt_gui_container_num_children()

int dt_gui_container_num_children ( GtkContainer *  container)

Definition at line 2872 of file gtk.c.

References container(), and FALSE.

◆ dt_gui_container_remove_children()

void dt_gui_container_remove_children ( GtkContainer *  container)

Definition at line 2907 of file gtk.c.

References _remove_child(), and container().

Referenced by _on_storage_list_changed().

◆ dt_gui_draw_rounded_rectangle()

void dt_gui_draw_rounded_rectangle ( cairo_t *  cr,
float  width,
float  height,
float  x,
float  y 
)

Definition at line 2992 of file gtk.c.

References height, M_PI, width, and x.

Referenced by gui_draw_sym(), gui_post_expose(), and gui_post_expose().

◆ dt_gui_get_popup_relative_widget()

GtkWidget * dt_gui_get_popup_relative_widget ( GtkWidget widget,
GdkRectangle *  rect 
)

Resolve the widget used as parent for nested popups on Wayland.

Gtk on Wayland requires popups to use the top-most enclosing popup as parent. This helper walks the parent chain to find that anchor while keeping the caller in charge of the popup logic. When rect is not NULL, it returns the position and size of widget in the coordinate system of the returned anchor.

Parameters
widgetthe widget the popup should visually point to.
rectoptional output rectangle receiving the geometry of widget.
Returns
the widget to use as popup parent, or NULL when widget is NULL.

Definition at line 2925 of file gtk.c.

References IS_NULL_PTR, MAX, rect::width, rect::x, and rect::y.

Referenced by _completion_update(), _popover_set_relative_to_topmost_parent(), _setup_completion(), _toolbar_show_popup(), and dt_gui_menu_popup().

◆ dt_gui_get_scroll_delta()

gboolean dt_gui_get_scroll_delta ( const GdkEventScroll *  event,
gdouble *  delta 
)

Definition at line 302 of file gtk.c.

References delta, dt_gui_get_scroll_deltas(), FALSE, and TRUE.

Referenced by _area_scrolled_callback(), _scrolled(), and _scrolled().

◆ dt_gui_get_scroll_deltas()

gboolean dt_gui_get_scroll_deltas ( const GdkEventScroll *  event,
gdouble *  delta_x,
gdouble *  delta_y 
)

Definition at line 159 of file gtk.c.

References dt_conf_get_bool(), FALSE, and TRUE.

Referenced by dt_gui_get_scroll_delta().

◆ dt_gui_get_scroll_unit_delta()

gboolean dt_gui_get_scroll_unit_delta ( const GdkEventScroll *  event,
int *  delta 
)

◆ dt_gui_get_scroll_unit_deltas()

◆ dt_gui_gtk_init()

◆ dt_gui_gtk_quit()

◆ dt_gui_gtk_run()

◆ dt_gui_gtk_set_source_rgb()

void dt_gui_gtk_set_source_rgb ( cairo_t *  cr,
dt_gui_color_t  color 
)

◆ dt_gui_gtk_set_source_rgba()

void dt_gui_gtk_set_source_rgba ( cairo_t *  cr,
dt_gui_color_t  color,
float  opacity_coef 
)

Definition at line 448 of file gtk.c.

References dt_gui_gtk_t::colors, darktable, and darktable_t::gui.

Referenced by _brush_events_post_expose(), and dt_draw_get_pixbuf_from_cairo().

◆ dt_gui_gtk_write_config()

◆ dt_gui_hide_collapsible_section()

void dt_gui_hide_collapsible_section ( dt_gui_collapsible_section_t cs)

◆ dt_gui_load_theme()

◆ dt_gui_menu_popup()

◆ dt_gui_new_collapsible_section()

void dt_gui_new_collapsible_section ( dt_gui_collapsible_section_t cs,
const char *  confname,
const char *  label,
GtkBox *  parent,
GtkPackType  pack 
)

Create a collapsible section and pack it into the parent box.

The pack argument makes the insertion side explicit so callers control layout order without reordering children later.

Parameters
cssection storage owned by the caller.
confnameconfiguration key used to persist the expanded state.
labelUI label for the section header.
parentGtkBox that receives the section.
packeither GTK_PACK_START or GTK_PACK_END to choose insertion side.

Definition at line 3102 of file gtk.c.

References _coeffs_button_changed(), _coeffs_expander_click(), _collapsible_container_show(), _gui_collapsible_section_t::confname, _gui_collapsible_section_t::container, CPF_DIRECTION_DOWN, CPF_DIRECTION_LEFT, dt_conf_get_bool(), dt_gui_add_class(), DT_GUI_BOX_SPACING, dt_ui_section_label_new(), dtgtk_cairo_paint_solid_arrow(), DTGTK_EXPANDER, dtgtk_expander_new(), dtgtk_expander_set_expanded(), dtgtk_togglebutton_new(), _gui_collapsible_section_t::expander, FALSE, _gui_collapsible_section_t::label, _gui_collapsible_section_t::parent, _gui_collapsible_section_t::toggle, and TRUE.

Referenced by dt_iop_gui_init_masks(), and gui_init().

◆ dt_gui_quit_callback()

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

Definition at line 469 of file gtk.c.

References dt_control_quit(), and TRUE.

Referenced by _init_widgets().

◆ dt_gui_refocus_center()

◆ dt_gui_remove_class()

◆ dt_gui_search_start()

gboolean dt_gui_search_start ( GtkWidget widget,
GdkEventKey *  event,
GtkSearchEntry *  entry 
)

Definition at line 3005 of file gtk.c.

References FALSE, and TRUE.

Referenced by init_tab_presets().

◆ dt_gui_search_stop()

void dt_gui_search_stop ( GtkSearchEntry *  entry,
GtkWidget widget 
)

Definition at line 3016 of file gtk.c.

Referenced by init_tab_presets().

◆ dt_gui_set_pango_resolution()

void dt_gui_set_pango_resolution ( PangoLayout *  layout)

◆ dt_gui_show_standalone_string_dialog()

char * dt_gui_show_standalone_string_dialog ( const char *  title,
const char *  markup,
const char *  placeholder,
const char *  no_text,
const char *  yes_text 
)

◆ dt_gui_show_standalone_yes_no_dialog()

gboolean dt_gui_show_standalone_yes_no_dialog ( const char *  title,
const char *  markup,
const char *  no_text,
const char *  yes_text 
)

◆ dt_gui_store_last_preset()

void dt_gui_store_last_preset ( const char *  name)

◆ dt_gui_textview_set_padding()

void dt_gui_textview_set_padding ( GtkTextView *  textview)

Apply the standard recessed-input text padding to a GtkTextView.

CSS padding on the textview "text" node is parsed but ignored for layout in GTK3, so the 2px/4px inset matching entry/treeview (see data/themes/.css) has to be set on the widget itself.

Parameters
textviewThe GtkTextView to update.

Definition at line 2687 of file gtk.c.

References DT_PIXEL_APPLY_DPI.

Referenced by _active_modules_popup(), _pop_menu_dictionary_create_tag(), _pop_menu_dictionary_edit_tag(), gui_init(), and init_tab_general().

◆ dt_gui_update_collapsible_section()

◆ dt_gui_update_em()

◆ dt_key_modifier_state()

GdkModifierType dt_key_modifier_state ( )
Todo:
double check correct way of doing this (merge conflict with Input System NG 20210319) GdkKeymap *keymap = gdk_keymap_get_for_display(gdk_display_get_default()); return gdk_keymap_get_modifier_state(keymap) & gdk_keymap_get_modifier_mask(keymap, GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK);

Definition at line 2186 of file gtk.c.

References darktable, dt_ui_main_window(), darktable_t::gui, state, and dt_gui_gtk_t::ui.

Referenced by _color_picker_callback_button_press(), and color_picker_apply().

◆ dt_ui_container_destroy_children()

void dt_ui_container_destroy_children ( dt_ui_t ui,
const dt_ui_container_t  c 
)

destroy all child widgets from container

Definition at line 1739 of file gtk.c.

References dt_ui_t::containers, and dt_gui_container_destroy_children().

Referenced by dt_view_manager_switch_by_view().

◆ dt_ui_container_focus_widget()

void dt_ui_container_focus_widget ( dt_ui_t ui,
const dt_ui_container_t  c,
GtkWidget w 
)

gives a widget focus in the container

Definition at line 1723 of file gtk.c.

References dt_ui_t::containers.

Referenced by _gui_set_single_expanded().

◆ dt_ui_container_foreach()

void dt_ui_container_foreach ( dt_ui_t ui,
const dt_ui_container_t  c,
GtkCallback  callback 
)

calls a callback on all children widgets from container

Definition at line 1733 of file gtk.c.

References dt_ui_t::containers.

Referenced by dt_view_manager_switch_by_view().

◆ dt_ui_notebook_new()

GtkNotebook * dt_ui_notebook_new ( )

Definition at line 2254 of file gtk.c.

Referenced by gui_init(), gui_init(), and gui_init().

◆ dt_ui_notebook_page()

GtkWidget * dt_ui_notebook_page ( GtkNotebook *  notebook,
const char *  text,
const char *  tooltip 
)

◆ dt_ui_notify_user()

void dt_ui_notify_user ( )

draw user's attention

Definition at line 1744 of file gtk.c.

References darktable, dt_ui_main_window(), darktable_t::gui, TRUE, and dt_gui_gtk_t::ui.

Referenced by _pathlist_import_run(), dt_control_export_job_run(), and dt_film_import1_run().

◆ dt_ui_resizable_drawing_area()

GtkWidget * dt_ui_resizable_drawing_area ( GtkWidget area,
char *  config_str,
int  default_height,
int  min_height 
)

Make a self-drawing widget (typically a GtkDrawingArea graph or scope) vertically resizable.

The widget is given a fixed height-request (persisted under config_str) and a drag grip floating on its bottom edge — the same grip used by panels, scroll wrappers and the histogram scope. The content is not scrolled: it keeps drawing to its live allocation, only the height-request changes. Returns a wrapper overlay to pack in place of area.

Parameters
areathe drawing widget (its callbacks/refs stay valid; pack the returned overlay instead).
config_strconf key persisting the user-chosen height (copied internally).
default_heightdefault height in device-independent px (rescaled by DT_PIXEL_APPLY_DPI).
min_heightminimum height floor in device-independent px.

Definition at line 2836 of file gtk.c.

References _resizable_area_free(), _resizable_area_get_size(), _resizable_area_resize(), _resizable_scroll_max_height(), dt_bauhaus_resize_handle_new(), dt_conf_get_int(), dt_conf_key_exists(), DT_PIXEL_APPLY_DPI, DT_UI_RESIZABLE_AREA_KEY, FALSE, height, MAX, and state.

Referenced by gui_init(), gui_init(), and gui_init().

◆ dt_ui_scroll_wrap()

GtkWidget * dt_ui_scroll_wrap ( GtkWidget w,
gint  min_size,
char *  config_str,
dt_ui_resize_mode_t  mode 
)

Wrap a scrollable content widget in a recessed, vertically resizable scrolled window.

Wrap a scrollable widget in a recessed, vertically resizable scrolled window with a drag handle.

Returns an overlay wrapping the scrolled window, with a themed drag grip floating on its bottom edge (the same grip primitive used by panels and the histogram scope). The grip takes no layout space and is invisible until hovered. Sizing follows mode: DT_UI_RESIZE_DYNAMIC auto-fits the content up to the user height, DT_UI_RESIZE_STATIC keeps a fixed height (see _resizable_scroll_apply).

The returned widget is the wrapper overlay, not the scrolled window; callers needing the inner scrolled window (e.g. to tweak its scroll policy) must use dt_ui_scroll_wrap_get_scrolled_window().

Parameters
wcontent widget (treeview, textview or any container)
min_sizeminimum height floor in device pixels (also the static default before the user drags)
config_strconf key persisting the user-chosen height (copied internally)
modeDT_UI_RESIZE_DYNAMIC (auto-fit) or DT_UI_RESIZE_STATIC (fixed height)

Definition at line 2713 of file gtk.c.

References _resizable_scroll_draw(), _resizable_scroll_handle_get_size(), _resizable_scroll_handle_resize(), _resizable_scroll_realize(), _widget_auto_connect_buffer(), _widget_auto_connect_model(), _widget_auto_height_free(), _widget_auto_on_buffer_changed(), _widget_auto_on_model_changed(), _widget_auto_update(), dt_bauhaus_resize_handle_new(), dt_gui_add_class(), DT_GUI_WIDGET_AUTO_HEIGHT_KEY, DT_PIXEL_APPLY_DPI, DT_UI_RESIZE_DYNAMIC, FALSE, MAX, and state.

Referenced by dt_iop_gui_init_masks(), and gui_init().

◆ dt_ui_scroll_wrap_get_scrolled_window()

GtkWidget * dt_ui_scroll_wrap_get_scrolled_window ( GtkWidget wrapper)

Return the inner scrolled window of a dt_ui_scroll_wrap() wrapper, or NULL.

Return the inner GtkScrolledWindow of a dt_ui_scroll_wrap() wrapper, or NULL.

Definition at line 2775 of file gtk.c.

Referenced by gui_init().

Variable Documentation

◆ _last_box_spacing

gint _last_box_spacing = 10
static

Definition at line 1390 of file gtk.c.

Referenced by _refresh_all_container_spacing().

◆ _tablet_motion_state

dt_tablet_motion_state_t _tablet_motion_state = { 0 }
static

Definition at line 574 of file gtk.c.

Referenced by _extract_pointer_input().

◆ DT_GUI_WIDGET_AUTO_HEIGHT_KEY

const char* const DT_GUI_WIDGET_AUTO_HEIGHT_KEY = "dt-gui-widget-auto-height"
static

◆ DT_UI_RESIZABLE_AREA_KEY

const char* const DT_UI_RESIZABLE_AREA_KEY = "dt-ui-resizable-area"
static