Blender V5.0
interface.cc File Reference
#include <algorithm>
#include <cctype>
#include <cfloat>
#include <climits>
#include <cmath>
#include <cstddef>
#include <cstring>
#include <fmt/format.h>
#include "MEM_guardedalloc.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_userdef_types.h"
#include "BLI_listbase.h"
#include "BLI_rect.h"
#include "BLI_set.hh"
#include "BLI_string.h"
#include "BLI_string_utf8.h"
#include "BLI_vector.hh"
#include "BLI_utildefines.h"
#include "BKE_animsys.h"
#include "BKE_context.hh"
#include "BKE_idprop.hh"
#include "BKE_report.hh"
#include "BKE_scene.hh"
#include "BKE_screen.hh"
#include "BKE_unit.hh"
#include "GPU_matrix.hh"
#include "GPU_state.hh"
#include "BLF_api.hh"
#include "BLT_translation.hh"
#include "UI_abstract_view.hh"
#include "UI_interface.hh"
#include "UI_interface_icons.hh"
#include "UI_interface_layout.hh"
#include "UI_string_search.hh"
#include "UI_view2d.hh"
#include "IMB_imbuf.hh"
#include "WM_api.hh"
#include "WM_message.hh"
#include "WM_types.hh"
#include "RNA_access.hh"
#include "RNA_enum_types.hh"
#include "ED_numinput.hh"
#include "ED_screen.hh"
#include "IMB_colormanagement.hh"
#include "CLG_log.h"
#include "interface_intern.hh"

Go to the source code of this file.

Classes

struct  AutoComplete

Macros

#define UI_BUT_VALUE_UNSET   DBL_MAX
#define UI_GET_BUT_VALUE_INIT(_but, _value)
#define B_NOP   -1
#define UI_NUMBER_EVAL_ERROR_PREFIX   RPT_("Error evaluating number, see Info editor for details")
#define PREVIEW_TILE_PAD   (0.225f * UI_UNIT_X)

Functions

static void ui_def_but_rna__menu (bContext *C, uiLayout *layout, void *but_p)
static void ui_def_but_rna__panel_type (bContext *, uiLayout *layout, void *arg)
static void ui_def_but_rna__menu_type (bContext *, uiLayout *layout, void *but_p)
static void ui_but_free (const bContext *C, uiBut *but)
static bool ui_but_is_unit_radians_ex (const UnitSettings *unit, const int unit_type)
static bool ui_but_is_unit_radians (const uiBut *but)
void ui_block_to_region_fl (const ARegion *region, const uiBlock *block, float *x, float *y)
void ui_block_to_window_fl (const ARegion *region, const uiBlock *block, float *x, float *y)
void ui_block_to_window (const ARegion *region, const uiBlock *block, int *x, int *y)
void ui_block_to_region_rctf (const ARegion *region, const uiBlock *block, rctf *rct_dst, const rctf *rct_src)
void ui_block_to_window_rctf (const ARegion *region, const uiBlock *block, rctf *rct_dst, const rctf *rct_src)
float ui_block_to_window_scale (const ARegion *region, const uiBlock *block)
void ui_window_to_block_fl (const ARegion *region, const uiBlock *block, float *x, float *y)
void ui_window_to_block_rctf (const ARegion *region, const uiBlock *block, rctf *rct_dst, const rctf *rct_src)
void ui_window_to_block (const ARegion *region, const uiBlock *block, int *x, int *y)
void ui_window_to_region (const ARegion *region, int *x, int *y)
void ui_window_to_region_rcti (const ARegion *region, rcti *rect_dst, const rcti *rct_src)
void ui_window_to_region_rctf (const ARegion *region, rctf *rect_dst, const rctf *rct_src)
void ui_region_to_window (const ARegion *region, int *x, int *y)
void ui_region_to_window (const ARegion *region, int region_x, int region_y, int *r_window_x, int *r_window_y)
static void ui_update_flexible_spacing (const ARegion *region, uiBlock *block)
static void ui_update_window_matrix (const wmWindow *window, const ARegion *region, uiBlock *block)
void ui_region_winrct_get_no_margin (const ARegion *region, rcti *r_rect)
void UI_block_translate (uiBlock *block, float x, float y)
static bool ui_but_is_row_alignment_group (const uiBut *left, const uiBut *right)
static void ui_block_bounds_calc_text (uiBlock *block, float offset)
void ui_block_bounds_calc (uiBlock *block)
static void ui_block_bounds_calc_centered (wmWindow *window, uiBlock *block)
static void ui_block_bounds_calc_post_centered (uiBlock *block)
static void ui_block_bounds_calc_centered_pie (uiBlock *block)
static void ui_block_bounds_calc_popup (wmWindow *window, uiBlock *block, eBlockBoundsCalc bounds_calc, const int xy[2], int r_xy[2])
void UI_block_bounds_set_normal (uiBlock *block, int addval)
void UI_block_bounds_set_text (uiBlock *block, int addval)
void UI_block_bounds_set_popup (uiBlock *block, int addval, const int bounds_offset[2])
void UI_block_bounds_set_menu (uiBlock *block, int addval, const int bounds_offset[2])
void UI_block_bounds_set_centered (uiBlock *block, int addval)
void UI_block_bounds_set_explicit (uiBlock *block, int minx, int miny, int maxx, int maxy)
static float ui_but_get_float_precision (uiBut *but)
static float ui_but_get_float_step_size (uiBut *but)
static bool ui_but_hide_fraction (uiBut *but, double value)
static int ui_but_calc_float_precision (uiBut *but, double value)
bool ui_but_rna_equals (const uiBut *a, const uiBut *b)
bool ui_but_rna_equals_ex (const uiBut *but, const PointerRNA *ptr, const PropertyRNA *prop, int index)
static bool ui_but_equals_old (const uiBut *but, const uiBut *oldbut)
static uiButui_but_find_old (uiBlock *block_old, const uiBut *but_new, const blender::Set< const uiBut * > &ignore_old_buttons)
uiButui_but_find_old (uiBlock *block_old, const uiBut *but_new)
static std::optional< int64_tui_but_find_old_idx (uiBlock *block_old, const uiBut *but_new, const blender::Set< const uiBut * > &ignore_old_buttons={})
uiButui_but_find_new (uiBlock *block_new, const uiBut *but_old)
static bool ui_but_extra_icons_equals_old (const uiButExtraOpIcon *new_extra_icon, const uiButExtraOpIcon *old_extra_icon)
static uiButExtraOpIconui_but_extra_icon_find_old (const uiButExtraOpIcon *new_extra_icon, const uiBut *old_but)
static void ui_but_extra_icons_update_from_old_but (const uiBut *new_but, const uiBut *old_but)
static void ui_but_update_old_active_from_new (uiBut *oldbut, uiBut *but)
static bool ui_but_update_from_old_block (uiBlock *block, blender::Set< const uiBut * > &matched_old_buttons, std::unique_ptr< uiBut > *but_uptr, std::optional< int64_t > *but_old_idx)
bool UI_but_active_only_ex (const bContext *C, ARegion *region, uiBlock *block, uiBut *but, const bool remove_on_failure)
bool UI_but_active_only (const bContext *C, ARegion *region, uiBlock *block, uiBut *but)
bool UI_block_active_only_flagged_buttons (const bContext *C, ARegion *region, uiBlock *block)
void UI_but_execute (const bContext *C, ARegion *region, uiBut *but)
static bool ui_but_is_rna_undo (const uiBut *but)
static void ui_menu_block_set_keyaccels (uiBlock *block)
void ui_but_add_shortcut (uiBut *but, const char *shortcut_str, const bool do_strip)
static void ui_menu_block_set_keymaps (const bContext *C, uiBlock *block)
void ui_but_override_flag (Main *bmain, uiBut *but)
void UI_block_update_from_old (const bContext *C, uiBlock *block)
static void ui_but_validate (const uiBut *but)
bool ui_but_context_poll_operator_ex (bContext *C, const uiBut *but, const wmOperatorCallParams *optype_params)
bool ui_but_context_poll_operator (bContext *C, wmOperatorType *ot, const uiBut *but)
void UI_block_end_ex (const bContext *C, Main *bmain, wmWindow *window, Scene *scene, ARegion *region, Depsgraph *depsgraph, uiBlock *block, const int xy[2], int r_xy[2])
void UI_block_end (const bContext *C, uiBlock *block)
void ui_fontscale (float *points, float aspect)
void ui_but_to_pixelrect (rcti *rect, const ARegion *region, const uiBlock *block, const uiBut *but)
rcti ui_to_pixelrect (const ARegion *region, const uiBlock *block, const rctf *src_rect)
static bool ui_but_pixelrect_in_view (const ARegion *region, const rcti *rect)
void UI_block_draw (const bContext *C, uiBlock *block)
static void ui_block_message_subscribe (ARegion *region, wmMsgBus *mbus, uiBlock *block)
void UI_region_message_subscribe (ARegion *region, wmMsgBus *mbus)
int ui_but_is_pushed_ex (uiBut *but, double *value)
int ui_but_is_pushed (uiBut *but)
static void ui_but_update_select_flag (uiBut *but, double *value)
void UI_block_lock_set (uiBlock *block, bool val, const char *lockstr)
void UI_block_lock_clear (uiBlock *block)
void ui_but_v3_get (uiBut *but, float vec[3])
void ui_but_v3_set (uiBut *but, const float vec[3])
void ui_but_v4_get (uiBut *but, float vec[4])
void ui_but_v4_set (uiBut *but, const float vec[4])
bool ui_but_is_float (const uiBut *but)
PropertyScaleType ui_but_scale_type (const uiBut *but)
bool ui_but_is_bool (const uiBut *but)
bool ui_but_is_unit (const uiBut *but)
bool ui_but_is_compatible (const uiBut *but_a, const uiBut *but_b)
bool ui_but_is_rna_valid (uiBut *but)
bool ui_but_supports_cycling (const uiBut *but)
double ui_but_value_get (uiBut *but)
void ui_but_value_set (uiBut *but, double value)
int ui_but_string_get_maxncpy (uiBut *but)
uiButui_but_drag_multi_edit_get (uiBut *but)
static double ui_get_but_scale_unit (uiBut *but, double value)
void ui_but_convert_to_unit_alt_name (uiBut *but, char *str, size_t str_maxncpy)
static void ui_get_but_string_unit (uiBut *but, char *str, int str_maxncpy, double value, bool pad, int float_precision)
static float ui_get_but_step_unit (uiBut *but, float step_default)
void ui_but_string_get_ex (uiBut *but, char *str, const size_t str_maxncpy, const int float_precision, const bool use_exp_float, bool *r_use_exp_float)
void ui_but_string_get (uiBut *but, char *str, const size_t str_maxncpy)
char * ui_but_string_get_dynamic (uiBut *but, int *r_str_size)
static bool ui_number_from_string_units (bContext *C, const char *str, const int unit_type, const UnitSettings *unit, double *r_value)
static bool ui_number_from_string_units_with_but (bContext *C, const char *str, const uiBut *but, double *r_value)
static bool ui_number_from_string (bContext *C, const char *str, double *r_value)
static bool ui_number_from_string_factor (bContext *C, const char *str, double *r_value)
static bool ui_number_from_string_percentage (bContext *C, const char *str, double *r_value)
bool ui_but_string_eval_number (bContext *C, const uiBut *but, const char *str, double *r_value)
bool ui_but_string_set (bContext *C, uiBut *but, const char *str)
static double soft_range_round_up (double value, double max)
static double soft_range_round_down (double value, double max)
void ui_but_range_set_hard (uiBut *but)
void ui_but_range_set_soft (uiBut *but)
static void ui_but_free_type_specific (uiBut *but)
static void ui_block_free_active_operator (uiBlock *block)
void UI_block_set_active_operator (uiBlock *block, wmOperator *op, const bool free)
void UI_block_free (const bContext *C, uiBlock *block)
void UI_block_listen (const uiBlock *block, const wmRegionListenerParams *listener_params)
void UI_blocklist_update_window_matrix (const bContext *C, const ListBase *lb)
void UI_blocklist_update_view_for_buttons (const bContext *C, const ListBase *lb)
void UI_blocklist_draw (const bContext *C, const ListBase *lb)
void UI_blocklist_free (const bContext *C, ARegion *region)
void UI_blocklist_free_inactive (const bContext *C, ARegion *region)
void UI_block_region_set (uiBlock *block, ARegion *region)
uiBlockUI_block_begin (const bContext *C, Scene *scene, wmWindow *window, ARegion *region, std::string name, blender::ui::EmbossType emboss)
uiBlockUI_block_begin (const bContext *C, ARegion *region, std::string name, blender::ui::EmbossType emboss)
void ui_block_add_dynamic_listener (uiBlock *block, void(*listener_func)(const wmRegionListenerParams *params))
blender::ui::EmbossType UI_block_emboss_get (uiBlock *block)
void UI_block_emboss_set (uiBlock *block, blender::ui::EmbossType emboss)
void UI_block_theme_style_set (uiBlock *block, char theme_style)
bool UI_block_is_search_only (const uiBlock *block)
void UI_block_set_search_only (uiBlock *block, bool search_only)
static void ui_but_build_drawstr_float (uiBut *but, double value)
static void ui_but_build_drawstr_int (uiBut *but, int value)
static void ui_but_update_ex (uiBut *but, const bool validate)
void ui_but_update (uiBut *but)
void ui_but_update_edited (uiBut *but)
void UI_block_align_begin (uiBlock *block)
void UI_block_align_end (uiBlock *block)
const ColorManagedDisplayui_block_cm_display_get (uiBlock *block)
void ui_block_cm_to_display_space_v3 (uiBlock *block, float pixel[3])
static std::unique_ptr< uiButui_but_new (const ButType type)
uiButui_but_change_type (uiBut *but, ButType new_type)
static uiButui_def_but (uiBlock *block, uiButTypeWithPointerType but_and_ptr_type, int retval, const StringRef str, int x, int y, short width, short height, void *poin, float min, float max, const std::optional< StringRef > tip)
void ui_def_but_icon (uiBut *but, const int icon, const int flag)
void ui_def_but_icon_clear (uiBut *but)
void ui_but_rna_menu_convert_to_panel_type (uiBut *but, const char *panel_type)
bool ui_but_menu_draw_as_popover (const uiBut *but)
void ui_but_rna_menu_convert_to_menu_type (uiBut *but, const char *menu_type)
static void ui_but_submenu_enable (uiBlock *block, uiBut *but)
static uiButui_def_but_rna (uiBlock *block, ButType type, int retval, std::optional< StringRef > str, int x, int y, short width, short height, PointerRNA *ptr, PropertyRNA *prop, int index, float min, float max, std::optional< StringRef > tip)
static uiButui_def_but_rna_propname (uiBlock *block, ButType type, int retval, std::optional< StringRef > str, int x, int y, short width, short height, PointerRNA *ptr, const StringRefNull propname, int index, float min, float max, const std::optional< StringRef > tip)
static uiButui_def_but_operator_ptr (uiBlock *block, ButType type, wmOperatorType *ot, blender::wm::OpCallContext opcontext, const StringRef str, int x, int y, short width, short height, std::optional< StringRef > tip)
uiButuiDefBut (uiBlock *block, uiButTypeWithPointerType but_and_ptr_type, int retval, const StringRef str, int x, int y, short width, short height, void *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefButImage (uiBlock *block, void *imbuf, int x, int y, short width, short height, const uchar color[4])
uiButuiDefButAlert (uiBlock *block, int icon, int x, int y, short width, short)
static int findBitIndex (uint x)
AutoCompleteUI_autocomplete_begin (const char *startname, size_t maxncpy)
void UI_autocomplete_update_name (AutoComplete *autocpl, const StringRef name)
int UI_autocomplete_end (AutoComplete *autocpl, char *autoname)
int UI_preview_tile_size_x (const int size_px)
int UI_preview_tile_size_y (const int size_px)
int UI_preview_tile_size_y_no_label (const int size_px)
static void ui_but_update_and_icon_set (uiBut *but, int icon)
static uiButuiDefButBit (uiBlock *block, uiButTypeWithPointerType but_and_ptr_type, int bit, int retval, const StringRef str, int x, int y, short width, short height, void *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefButF (uiBlock *block, ButType type, int retval, const StringRef str, int x, int y, short width, short height, float *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefButI (uiBlock *block, ButType type, int retval, const StringRef str, int x, int y, short width, short height, int *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefButBitI (uiBlock *block, ButType type, int bit, int retval, const StringRef str, int x, int y, short width, short height, int *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefButS (uiBlock *block, ButType type, int retval, const StringRef str, int x, int y, short width, short height, short *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefButBitS (uiBlock *block, ButType type, int bit, int retval, const StringRef str, int x, int y, short width, short height, short *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefButC (uiBlock *block, ButType type, int retval, const StringRef str, int x, int y, short width, short height, char *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefButBitC (uiBlock *block, ButType type, int bit, int retval, const StringRef str, int x, int y, short width, short height, char *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefButR (uiBlock *block, ButType type, int retval, const std::optional< StringRef > str, int x, int y, short width, short height, PointerRNA *ptr, const StringRefNull propname, int index, float min, float max, const std::optional< StringRef > tip)
uiButuiDefButR_prop (uiBlock *block, ButType type, int retval, const std::optional< StringRef > str, int x, int y, short width, short height, PointerRNA *ptr, PropertyRNA *prop, int index, float min, float max, const std::optional< StringRef > tip)
uiButuiDefButO_ptr (uiBlock *block, ButType type, wmOperatorType *ot, blender::wm::OpCallContext opcontext, const StringRef str, int x, int y, short width, short height, const std::optional< StringRef > tip)
uiButuiDefButO (uiBlock *block, ButType type, const StringRefNull opname, blender::wm::OpCallContext opcontext, std::optional< StringRef > str, int x, int y, short width, short height, const std::optional< StringRef > tip)
uiButuiDefIconBut (uiBlock *block, uiButTypeWithPointerType but_and_ptr_type, int retval, int icon, int x, int y, short width, short height, void *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefIconPreviewBut (uiBlock *block, ButType type, int retval, int icon, int x, int y, short width, short height, void *poin, float min, float max, const std::optional< StringRef > tip)
static uiButuiDefIconButBit (uiBlock *block, uiButTypeWithPointerType but_and_ptr_type, int bit, int retval, int icon, int x, int y, short width, short height, void *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefIconButI (uiBlock *block, ButType type, int retval, int icon, int x, int y, short width, short height, int *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefIconButBitI (uiBlock *block, ButType type, int bit, int retval, int icon, int x, int y, short width, short height, int *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefIconButS (uiBlock *block, ButType type, int retval, int icon, int x, int y, short width, short height, short *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefIconButBitS (uiBlock *block, ButType type, int bit, int retval, int icon, int x, int y, short width, short height, short *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefIconButBitC (uiBlock *block, ButType type, int bit, int retval, int icon, int x, int y, short width, short height, char *poin, float min, float max, const std::optional< StringRef > tip)
uiButuiDefIconButR (uiBlock *block, ButType type, int retval, int icon, int x, int y, short width, short height, PointerRNA *ptr, const StringRefNull propname, int index, float min, float max, const std::optional< StringRef > tip)
uiButuiDefIconButR_prop (uiBlock *block, ButType type, int retval, int icon, int x, int y, short width, short height, PointerRNA *ptr, PropertyRNA *prop, int index, float min, float max, const std::optional< StringRef > tip)
uiButuiDefIconButO_ptr (uiBlock *block, ButType type, wmOperatorType *ot, blender::wm::OpCallContext opcontext, int icon, int x, int y, short width, short height, const std::optional< StringRef > tip)
uiButuiDefIconButO (uiBlock *block, ButType type, const StringRefNull opname, blender::wm::OpCallContext opcontext, int icon, int x, int y, short width, short height, const std::optional< StringRef > tip)
uiButuiDefIconTextBut (uiBlock *block, uiButTypeWithPointerType but_and_ptr_type, int retval, int icon, const StringRef str, int x, int y, short width, short height, void *poin, const std::optional< StringRef > tip)
uiButuiDefIconTextButI (uiBlock *block, ButType type, int retval, int icon, const StringRef str, int x, int y, short width, short height, int *poin, const std::optional< StringRef > tip)
uiButuiDefIconTextButS (uiBlock *block, ButType type, int retval, int icon, const StringRef str, int x, int y, short width, short height, short *poin, const std::optional< StringRef > tip)
uiButuiDefIconTextButR (uiBlock *block, ButType type, int retval, int icon, const std::optional< StringRefNull > str, int x, int y, short width, short height, PointerRNA *ptr, blender::StringRefNull propname, int index, const std::optional< StringRef > tip)
uiButuiDefIconTextButR_prop (uiBlock *block, ButType type, int retval, int icon, const std::optional< blender::StringRef > str, int x, int y, short width, short height, PointerRNA *ptr, PropertyRNA *prop, int index, float min, float max, const std::optional< StringRef > tip)
uiButuiDefIconTextButO_ptr (uiBlock *block, ButType type, wmOperatorType *ot, blender::wm::OpCallContext opcontext, int icon, const StringRef str, int x, int y, short width, short height, const std::optional< StringRef > tip)
uiButuiDefIconTextButO (uiBlock *block, ButType type, const StringRefNull opname, blender::wm::OpCallContext opcontext, int icon, const StringRef str, int x, int y, short width, short height, const std::optional< StringRef > tip)
void UI_but_operator_set (uiBut *but, wmOperatorType *optype, blender::wm::OpCallContext opcontext, const PointerRNA *opptr)
void UI_but_operator_set_never_call (uiBut *but)
int UI_blocklist_min_y_get (ListBase *lb)
void UI_block_direction_set (uiBlock *block, char direction)
void UI_block_flag_enable (uiBlock *block, int flag)
void UI_block_flag_disable (uiBlock *block, int flag)
void UI_but_flag_enable (uiBut *but, int flag)
void UI_but_flag2_enable (uiBut *but, int flag)
void UI_but_flag_disable (uiBut *but, int flag)
bool UI_but_flag_is_set (uiBut *but, int flag)
void UI_but_drawflag_enable (uiBut *but, int flag)
void UI_but_drawflag_disable (uiBut *but, int flag)
void UI_but_dragflag_enable (uiBut *but, int flag)
void UI_but_dragflag_disable (uiBut *but, int flag)
void UI_but_disable (uiBut *but, const char *disabled_hint)
void UI_but_color_set (uiBut *but, const uchar color[4])
const ColorManagedDisplayUI_but_cm_display_get (uiBut &but)
bool UI_but_is_color_gamma (uiBut &but)
void UI_but_placeholder_set (uiBut *but, const StringRef placeholder_text)
const char * ui_but_placeholder_get (uiBut *but)
void UI_but_type_set_menu_from_pulldown (uiBut *but)
int UI_but_return_value_get (uiBut *but)
PointerRNAUI_but_operator_ptr_ensure (uiBut *but)
void UI_but_context_ptr_set (uiBlock *block, uiBut *but, const StringRef name, const PointerRNA *ptr)
void UI_but_context_int_set (uiBlock *block, uiBut *but, const StringRef name, const int64_t value)
const PointerRNAUI_but_context_ptr_get (const uiBut *but, const StringRef name, const StructRNA *type)
std::optional< blender::StringRefNullUI_but_context_string_get (const uiBut *but, const StringRef name)
std::optional< int64_tUI_but_context_int_get (const uiBut *but, const StringRef name)
const bContextStoreUI_but_context_get (const uiBut *but)
void UI_but_unit_type_set (uiBut *but, const int unit_type)
int UI_but_unit_type_get (const uiBut *but)
void UI_block_func_handle_set (uiBlock *block, uiBlockHandleFunc func, void *arg)
void UI_block_func_set (uiBlock *block, uiButHandleFunc func, void *arg1, void *arg2)
void UI_block_funcN_set (uiBlock *block, uiButHandleNFunc funcN, void *argN, void *arg2, uiButArgNFree func_argN_free_fn, uiButArgNCopy func_argN_copy_fn)
void UI_but_func_rename_set (uiBut *but, uiButHandleRenameFunc func, void *arg1)
void UI_but_func_rename_full_set (uiBut *but, std::function< void(std::string &new_name)> rename_full_func)
void UI_but_func_drawextra_set (uiBlock *block, std::function< void(const bContext *C, rcti *rect)> func)
void UI_but_func_set (uiBut *but, uiButHandleFunc func, void *arg1, void *arg2)
void UI_but_func_set (uiBut *but, std::function< void(bContext &)> func)
void UI_but_funcN_set (uiBut *but, uiButHandleNFunc funcN, void *argN, void *arg2, uiButArgNFree func_argN_free_fn, uiButArgNCopy func_argN_copy_fn)
void UI_but_func_complete_set (uiBut *but, uiButCompleteFunc func, void *arg)
void UI_but_func_menu_step_set (uiBut *but, uiMenuStepFunc func)
void UI_but_menu_disable_hover_open (uiBut *but)
void UI_but_func_quick_tooltip_set (uiBut *but, std::function< std::string(const uiBut *but)> func)
void UI_but_func_tooltip_set (uiBut *but, uiButToolTipFunc func, void *arg, uiFreeArgFunc free_arg)
void UI_but_func_tooltip_custom_set (uiBut *but, uiButToolTipCustomFunc func, void *arg, uiFreeArgFunc free_arg)
void UI_but_func_pushed_state_set (uiBut *but, std::function< bool(const uiBut &)> func)
uiButuiDefBlockBut (uiBlock *block, uiBlockCreateFunc func, void *arg, const StringRef str, int x, int y, short width, short height, const std::optional< StringRef > tip)
uiButuiDefBlockButN (uiBlock *block, uiBlockCreateFunc func, void *argN, const StringRef str, int x, int y, short width, short height, const std::optional< StringRef > tip, uiButArgNFree func_argN_free_fn, uiButArgNCopy func_argN_copy_fn)
uiButuiDefMenuBut (uiBlock *block, uiMenuCreateFunc func, void *arg, const StringRef str, int x, int y, short width, short height, const std::optional< StringRef > tip)
uiButuiDefIconTextMenuBut (uiBlock *block, uiMenuCreateFunc func, void *arg, int icon, const StringRef str, int x, int y, short width, short height, const std::optional< StringRef > tip)
uiButuiDefIconMenuBut (uiBlock *block, uiMenuCreateFunc func, void *arg, int icon, int x, int y, short width, short height, const std::optional< StringRef > tip)
uiButuiDefIconBlockBut (uiBlock *block, uiBlockCreateFunc func, void *arg, int retval, int icon, int x, int y, short width, short height, const std::optional< StringRef > tip)
uiButuiDefSearchBut (uiBlock *block, void *arg, int retval, int icon, int maxncpy, int x, int y, short width, short height, const std::optional< StringRef > tip)
void UI_but_func_search_set (uiBut *but, uiButSearchCreateFn search_create_fn, uiButSearchUpdateFn search_update_fn, void *arg, const bool free_arg, uiFreeArgFunc search_arg_free_fn, uiButHandleFunc search_exec_fn, void *active)
void UI_but_func_search_set_context_menu (uiBut *but, uiButSearchContextMenuFn context_menu_fn)
void UI_but_func_search_set_sep_string (uiBut *but, const char *search_sep_string)
void UI_but_func_search_set_tooltip (uiBut *but, uiButSearchTooltipFn tooltip_fn)
void UI_but_func_search_set_listen (uiBut *but, uiButSearchListenFn listen_fn)
void UI_but_func_search_set_results_are_suggestions (uiBut *but, const bool value)
static void operator_enum_search_update_fn (const bContext *C, void *but, const char *str, uiSearchItems *items, const bool)
static void operator_enum_search_exec_fn (bContext *, void *but, void *arg2)
uiButuiDefSearchButO_ptr (uiBlock *block, wmOperatorType *ot, IDProperty *properties, void *arg, int retval, int icon, int maxncpy, int x, int y, short width, short height, const std::optional< StringRef > tip)
void UI_but_hint_drawstr_set (uiBut *but, const char *string)
void UI_but_icon_indicator_number_set (uiBut *but, const int indicator_number)
void UI_but_icon_indicator_set (uiBut *but, const char *string)
void UI_but_icon_indicator_color_set (uiBut *but, const uchar color[4])
void UI_but_node_link_set (uiBut *but, bNodeSocket *socket, const float draw_color[4])
void UI_but_number_step_size_set (uiBut *but, float step_size)
void UI_but_number_precision_set (uiBut *but, float precision)
void UI_but_number_slider_step_size_set (uiBut *but, float step_size)
void UI_but_number_slider_precision_set (uiBut *but, float precision)
void UI_but_label_alpha_factor_set (uiBut *but, const float alpha_factor)
void UI_but_search_preview_grid_size_set (uiBut *but, int rows, int cols)
void UI_but_view_item_draw_size_set (uiBut *but, const std::optional< int > draw_width, const std::optional< int > draw_height)
void UI_but_focus_on_enter_event (wmWindow *win, uiBut *but)
void UI_but_func_hold_set (uiBut *but, uiButHandleHoldFunc func, void *argN)
std::optional< EnumPropertyItemUI_but_rna_enum_item_get (bContext &C, uiBut &but)
std::string UI_but_string_get_rna_property_identifier (const uiBut &but)
std::string UI_but_string_get_rna_struct_identifier (const uiBut &but)
std::string UI_but_string_get_label (uiBut &but)
std::string UI_but_context_menu_title_from_button (uiBut &but)
std::string UI_but_string_get_tooltip_label (const uiBut &but)
std::string UI_but_string_get_rna_label (uiBut &but)
std::string UI_but_string_get_rna_label_context (const uiBut &but)
std::string UI_but_string_get_tooltip (bContext &C, uiBut &but)
std::string UI_but_string_get_rna_tooltip (bContext &C, uiBut &but)
std::string UI_but_string_get_operator_keymap (bContext &C, uiBut &but)
std::string UI_but_string_get_property_keymap (bContext &C, uiBut &but)
std::string UI_but_extra_icon_string_get_label (const uiButExtraOpIcon &extra_icon)
std::string UI_but_extra_icon_string_get_tooltip (bContext &C, const uiButExtraOpIcon &extra_icon)
std::string UI_but_extra_icon_string_get_operator_keymap (const bContext &C, const uiButExtraOpIcon &extra_icon)
void UI_init ()
void UI_init_userdef ()
void UI_reinit_font ()
void UI_update_text_styles ()
void UI_exit ()
void UI_interface_tag_script_reload ()
Find Key Shortcut for Button
static std::optional< std::string > ui_but_event_operator_string_from_operator (const bContext *C, wmOperatorCallParams *op_call_params)
static std::optional< std::string > ui_but_event_operator_string_from_menu (const bContext *C, uiBut *but)
static std::optional< std::string > ui_but_event_operator_string_from_panel (const bContext *C, uiBut *but)
static std::optional< std::string > ui_but_event_operator_string (const bContext *C, uiBut *but)
static std::optional< std::string > ui_but_extra_icon_event_operator_string (const bContext *C, const uiButExtraOpIcon *extra_icon)
static std::optional< std::string > ui_but_event_property_operator_string (const bContext *C, uiBut *but)

Variables

static CLG_LogRef LOG = {"ui"}

Button Extra Operator Icons

Extra icons are shown on the right hand side of buttons. They can be clicked to invoke custom operators. There are some predefined here, which get added to buttons automatically based on button data (type, flags, state, etc).

enum  PredefinedExtraOpIconType { PREDEFINED_EXTRA_OP_ICON_NONE = 1 , PREDEFINED_EXTRA_OP_ICON_CLEAR , PREDEFINED_EXTRA_OP_ICON_EYEDROPPER , PREDEFINED_EXTRA_OP_ICON_BONE_EYEDROPPER }
static PointerRNAui_but_extra_operator_icon_add_ptr (uiBut *but, wmOperatorType *optype, blender::wm::OpCallContext opcontext, int icon)
static void ui_but_extra_operator_icon_free (uiButExtraOpIcon *extra_icon)
void ui_but_extra_operator_icons_free (uiBut *but)
PointerRNAUI_but_extra_operator_icon_add (uiBut *but, const StringRefNull opname, blender::wm::OpCallContext opcontext, int icon)
wmOperatorTypeUI_but_extra_operator_icon_optype_get (const uiButExtraOpIcon *extra_icon)
PointerRNAUI_but_extra_operator_icon_opptr_get (const uiButExtraOpIcon *extra_icon)
static bool ui_but_icon_extra_is_visible_text_clear (const uiBut *but)
static bool ui_but_icon_extra_is_visible_search_unlink (const uiBut *but)
static bool ui_but_icon_extra_is_visible_search_eyedropper (uiBut *but)
static bool ui_but_icon_extra_is_visible_bone_eyedropper (uiBut *but)
static PredefinedExtraOpIconType ui_but_icon_extra_get (uiBut *but)
static void ui_but_predefined_extra_operator_icons_add (uiBut *but)

Pie Menu Direction

This goes in a seemingly weird pattern:

    4
 5     6
1       2
 7     8
    3

but it's actually quite logical. It's designed to be 'upwards compatible' for muscle memory so that the menu item locations are fixed and don't move as new items are added to the menu later on. It also optimizes efficiency - a radial menu is best kept symmetrical, with as large an angle between items as possible, so that the gestural mouse movements can be fast and inexact.

It starts off with two opposite sides for the first two items then joined by the one below for the third (this way, even with three items, the menu seems to still be 'in order' reading left to right). Then the fourth is added to complete the compass directions. From here, it's just a matter of subdividing the rest of the angles for the last 4 items.

–Matt 07/2006

const char ui_radial_dir_order [8]
const char ui_radial_dir_to_numpad [8] = {8, 9, 6, 3, 2, 1, 4, 7}
const short ui_radial_dir_to_angle [8] = {90, 45, 0, 315, 270, 225, 180, 135}
static std::string ui_but_pie_direction_string (const uiBut *but)

Macro Definition Documentation

◆ B_NOP

◆ PREVIEW_TILE_PAD

#define PREVIEW_TILE_PAD   (0.225f * UI_UNIT_X)

◆ UI_BUT_VALUE_UNSET

#define UI_BUT_VALUE_UNSET   DBL_MAX

Definition at line 90 of file interface.cc.

Referenced by ui_but_is_pushed(), ui_but_update_ex(), and ui_but_value_set().

◆ UI_GET_BUT_VALUE_INIT

#define UI_GET_BUT_VALUE_INIT ( _but,
_value )
Value:
if (_value == DBL_MAX) { \
(_value) = ui_but_value_get(_but); \
} \
((void)0)
double ui_but_value_get(uiBut *but)

Definition at line 91 of file interface.cc.

Referenced by ui_but_is_pushed_ex(), and ui_but_update_ex().

◆ UI_NUMBER_EVAL_ERROR_PREFIX

#define UI_NUMBER_EVAL_ERROR_PREFIX   RPT_("Error evaluating number, see Info editor for details")

Report a generic error prefix when evaluating a string with BPY_run_string_as_number as the Python error on its own doesn't provide enough context.

Definition at line 3223 of file interface.cc.

Referenced by ui_number_from_string(), and ui_number_from_string_units().

Enumeration Type Documentation

◆ PredefinedExtraOpIconType

Predefined types for generic extra operator icons (uiButExtraOpIcon).

Enumerator
PREDEFINED_EXTRA_OP_ICON_NONE 
PREDEFINED_EXTRA_OP_ICON_CLEAR 
PREDEFINED_EXTRA_OP_ICON_EYEDROPPER 
PREDEFINED_EXTRA_OP_ICON_BONE_EYEDROPPER 

Definition at line 1755 of file interface.cc.

Function Documentation

◆ findBitIndex()

int findBitIndex ( uint x)
static

if _x_ is a power of two (only one bit) return the power, otherwise return -1.

for powers of two:

((1 << findBitIndex(x)) == x);
static int findBitIndex(uint x)

Definition at line 5131 of file interface.cc.

References is_power_of_2_i(), and x.

Referenced by uiDefButBit(), and uiDefIconButBit().

◆ operator_enum_search_exec_fn()

void operator_enum_search_exec_fn ( bContext * ,
void * but,
void * arg2 )
static

◆ operator_enum_search_update_fn()

◆ soft_range_round_down()

double soft_range_round_down ( double value,
double max )
static

Definition at line 3480 of file interface.cc.

References floor, log, M_LN10, max, and pow.

Referenced by ui_but_range_set_soft().

◆ soft_range_round_up()

double soft_range_round_up ( double value,
double max )
static

Definition at line 3465 of file interface.cc.

References ceil, log, M_LN10, max, and pow.

Referenced by ui_but_range_set_soft().

◆ UI_autocomplete_begin()

AutoComplete * UI_autocomplete_begin ( const char * startname,
size_t maxncpy )

◆ UI_autocomplete_end()

◆ UI_autocomplete_update_name()

void UI_autocomplete_update_name ( AutoComplete * autocpl,
const StringRef name )

◆ UI_block_active_only_flagged_buttons()

bool UI_block_active_only_flagged_buttons ( const bContext * C,
ARegion * region,
uiBlock * block )
Warning
This must run after other handlers have been added, otherwise the handler won't be removed, see: #71112.

Definition at line 1200 of file interface.cc.

References BLI_assert, uiBlock::buttons, C, uiBlock::endblock, UI_BUT_ACTIVATE_ON_INIT, UI_but_active_only_ex(), and ui_but_is_editable().

Referenced by UI_popover_panel_invoke(), UI_popup_block_ex(), and UI_popup_block_invoke_ex().

◆ ui_block_add_dynamic_listener()

void ui_block_add_dynamic_listener ( uiBlock * block,
void(* listener_func )(const wmRegionListenerParams *params) )

Register a listener callback to this block to tag the area/region for redraw.

Definition at line 3910 of file interface.cc.

References BLI_addtail(), uiBlock::dynamic_listeners, uiBlockDynamicListener::listener_func, MEM_mallocN(), and params.

Referenced by UI_menutype_draw(), and ui_paneltype_draw_impl().

◆ UI_block_align_begin()

◆ UI_block_align_end()

◆ UI_block_begin() [1/2]

uiBlock * UI_block_begin ( const bContext * C,
ARegion * region,
std::string name,
blender::ui::EmbossType emboss )

Definition at line 3902 of file interface.cc.

References C, CTX_data_scene(), CTX_wm_window(), name, and UI_block_begin().

Referenced by block_create__close_file_dialog(), block_create_autorun_warning(), block_create_save_file_overwrite_dialog(), clip_draw_dopesheet_channels(), colorband_tools_fn(), component_menu(), blender::ed::space_node::create_search_popup_block(), curve_profile_presets_fn(), curve_profile_tools_fn(), curvemap_clipping_func(), curvemap_tools_func(), blender::ed::spreadsheet::draw_cell_contents(), blender::ed::vse::draw_channel_headers(), draw_channel_names(), blender::ed::spreadsheet::draw_left_column_content(), draw_nla_track_list(), blender::ed::outliner::draw_outliner(), blender::ed::spreadsheet::draw_top_row_content(), blender::ed::space_node::draw_tree_path(), ed_panel_draw(), ED_region_header_layout(), ED_time_scrub_channel_search_draw(), file_draw_invalid_asset_library_hint(), file_draw_list(), graph_draw_channel_names(), blender::ed::space_node::invalid_links_uiblock_init(), menu_add_shortcut(), menu_change_shortcut(), menu_items_from_ui_create(), blender::ed::outliner::merged_element_search_menu(), blender::ed::space_node::node_find_menu(), blender::ed::space_node::node_uiblocks_init(), panel_property_search(), blender::ed::asset::shelf::region_layout(), blender::ed::spreadsheet::spreadsheet_footer_region_draw(), template_common_search_menu(), ui_alert_create(), ui_block_func_COLOR(), ui_icon_view_menu_cb(), UI_pie_menu_begin(), ui_popover_create_block(), ui_popup_menu_create_block(), wm_block_about_create(), wm_block_create_redo(), wm_block_dialog_create(), wm_block_insert_unicode_create(), wm_block_search_menu(), wm_block_splash_create(), wm_enum_search_menu(), and wm_operator_ui_create().

◆ UI_block_begin() [2/2]

◆ ui_block_bounds_calc()

◆ ui_block_bounds_calc_centered()

void ui_block_bounds_calc_centered ( wmWindow * window,
uiBlock * block )
static

◆ ui_block_bounds_calc_centered_pie()

void ui_block_bounds_calc_centered_pie ( uiBlock * block)
static

◆ ui_block_bounds_calc_popup()

◆ ui_block_bounds_calc_post_centered()

void ui_block_bounds_calc_post_centered ( uiBlock * block)
static

◆ ui_block_bounds_calc_text()

◆ UI_block_bounds_set_centered()

◆ UI_block_bounds_set_explicit()

void UI_block_bounds_set_explicit ( uiBlock * block,
int minx,
int miny,
int maxx,
int maxy )

◆ UI_block_bounds_set_menu()

void UI_block_bounds_set_menu ( uiBlock * block,
int addval,
const int bounds_offset[2] )

◆ UI_block_bounds_set_normal()

◆ UI_block_bounds_set_popup()

◆ UI_block_bounds_set_text()

void UI_block_bounds_set_text ( uiBlock * block,
int addval )

◆ ui_block_cm_display_get()

◆ ui_block_cm_to_display_space_v3()

void ui_block_cm_to_display_space_v3 ( uiBlock * block,
float pixel[3] )

◆ UI_block_direction_set()

◆ UI_block_draw()

void UI_block_draw ( const bContext * C,
uiBlock * block )

Uses local copy of style, to scale things down, and allow widgets to change stuff.

Definition at line 2226 of file interface.cc.

References uiBlock::aspect, BLF_batch_draw_begin(), BLF_batch_draw_end(), Panel_Runtime::block, uiBlock::buttons, C, CTX_wm_region(), CTX_wm_region_popup(), ELEM, uiBlock::endblock, ARegion::flag, uiBlock::flag, GPU_blend(), GPU_BLEND_ALPHA, GPU_matrix_identity_set(), GPU_matrix_pop(), GPU_matrix_pop_projection(), GPU_matrix_push(), GPU_matrix_push_projection(), uiStyle::grouplabel, uiBlock::panel, ThemeUI::panel_roundness, uiStyle::paneltitle, uiFontStyle::points, ARegion::regiontype, RGN_FLAG_SEARCH_FILTER_ACTIVE, RGN_TYPE_HUD, RGN_TYPE_TEMPORARY, Panel::runtime, uiStyle::tooltip, bTheme::tui, Panel::type, U, UI_block_end(), UI_BLOCK_LOOP, UI_BLOCK_PIE_MENU, UI_BLOCK_POPOVER, ui_block_views_draw_overlays(), ui_but_pixelrect_in_view(), ui_but_to_pixelrect(), ui_draw_aligned_panel(), ui_draw_but(), ui_draw_layout_panels_backdrop(), ui_draw_menu_back(), ui_draw_pie_center(), ui_draw_popover_back(), ui_fontscale(), UI_GetTheme(), UI_HIDDEN, UI_panel_category_is_visible(), UI_panel_should_show_background(), UI_SCROLLED, UI_style_get_dpi(), UI_widgetbase_draw_cache_begin(), UI_widgetbase_draw_cache_end(), uiStyle::widget, wmOrtho2_region_pixelspace(), rcti::xmax, rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by clip_draw_dopesheet_channels(), blender::ed::spreadsheet::draw_cell_contents(), blender::ed::vse::draw_channel_headers(), draw_channel_names(), blender::ed::spreadsheet::draw_left_column_content(), draw_nla_track_list(), blender::ed::outliner::draw_outliner(), blender::ed::spreadsheet::draw_top_row_content(), blender::ed::space_node::draw_tree_path(), ED_time_scrub_channel_search_draw(), file_draw_invalid_asset_library_hint(), file_draw_list(), blender::ed::space_node::frame_node_draw_overlay(), graph_draw_channel_names(), blender::ed::space_node::node_draw_basis(), blender::ed::space_node::node_draw_collapsed(), blender::ed::space_node::node_draw_nodetree(), blender::ed::space_node::reroute_node_draw(), blender::ed::spreadsheet::spreadsheet_footer_region_draw(), ui_block_region_draw(), UI_blocklist_draw(), and UI_panels_draw().

◆ UI_block_emboss_get()

◆ UI_block_emboss_set()

◆ UI_block_end()

◆ UI_block_end_ex()

void UI_block_end_ex ( const bContext * C,
Main * bmain,
wmWindow * window,
Scene * scene,
ARegion * region,
Depsgraph * depsgraph,
uiBlock * block,
const int xy[2],
int r_xy[2] )

Definition at line 2068 of file interface.cc.

References uiBlock::active, BKE_animsys_eval_context_construct(), BKE_scene_frame_get(), BLI_assert, blender::ui::block_layout_resolve(), uiBlock::bounds_type, uiBlock::buttons, C, depsgraph, uiBlock::endblock, ListBase::first, uiBlock::flag, uiPopupBlockHandle::grab_xy_prev, uiBlock::handle, uiBlock::layouts, LISTBASE_FOREACH, ot, uiBlock::panel, uiBlock::rect, ui_block_align_calc(), UI_block_align_end(), UI_BLOCK_BOUNDS, ui_block_bounds_calc(), ui_block_bounds_calc_centered(), ui_block_bounds_calc_centered_pie(), ui_block_bounds_calc_popup(), ui_block_bounds_calc_post_centered(), ui_block_bounds_calc_text(), UI_BLOCK_BOUNDS_NONE, UI_BLOCK_BOUNDS_PIE_CENTER, UI_BLOCK_BOUNDS_POPUP_CENTER, UI_BLOCK_BOUNDS_POPUP_MENU, UI_BLOCK_BOUNDS_POPUP_MOUSE, UI_block_bounds_set_normal(), UI_BLOCK_BOUNDS_TEXT, UI_BLOCK_LOOP, UI_BLOCK_NO_ACCELERATOR_KEYS, UI_BLOCK_NUMSELECT, UI_BLOCK_SHOW_SHORTCUT_ALWAYS, UI_block_update_from_old(), ui_block_views_end(), UI_BUT_ALIGN, ui_but_anim_decorate_update_from_flag(), ui_but_anim_flag(), ui_but_context_poll_operator(), ui_but_context_poll_operator_ex(), UI_BUT_DISABLED, UI_but_is_decorator, ui_but_override_flag(), ui_but_predefined_extra_operator_icons_add(), ui_but_validate(), ui_menu_block_set_keyaccels(), ui_menu_block_set_keymaps(), ui_update_flexible_spacing(), rctf::xmax, rctf::xmin, and xy.

Referenced by blender::ed::space_node::frame_node_draw_overlay(), blender::ed::space_node::node_draw_basis(), blender::ed::space_node::node_draw_collapsed(), blender::ed::space_node::reroute_node_draw(), UI_block_end(), and ui_popup_block_refresh().

◆ UI_block_flag_disable()

◆ UI_block_flag_enable()

◆ UI_block_free()

◆ ui_block_free_active_operator()

void ui_block_free_active_operator ( uiBlock * block)
static

◆ UI_block_func_handle_set()

◆ UI_block_func_set()

◆ UI_block_funcN_set()

void UI_block_funcN_set ( uiBlock * block,
uiButHandleNFunc funcN,
void * argN,
void * arg2,
uiButArgNFree func_argN_free_fn,
uiButArgNCopy func_argN_copy_fn )

◆ UI_block_is_search_only()

bool UI_block_is_search_only ( const uiBlock * block)

Definition at line 3934 of file interface.cc.

References uiBlock::flag, and UI_BLOCK_SEARCH_ONLY.

Referenced by UI_panels_draw().

◆ UI_block_listen()

void UI_block_listen ( const uiBlock * block,
const wmRegionListenerParams * listener_params )

Definition at line 3755 of file interface.cc.

References uiBlock::dynamic_listeners, LISTBASE_FOREACH, and ui_block_views_listen().

Referenced by ED_region_do_listen().

◆ UI_block_lock_clear()

◆ UI_block_lock_set()

◆ ui_block_message_subscribe()

◆ UI_block_region_set()

◆ UI_block_set_active_operator()

void UI_block_set_active_operator ( uiBlock * block,
wmOperator * op,
const bool free )

◆ UI_block_set_search_only()

void UI_block_set_search_only ( uiBlock * block,
bool search_only )

Use when a block must be searched to give accurate results for the whole region but shouldn't be displayed.

Definition at line 3939 of file interface.cc.

References uiBlock::flag, SET_FLAG_FROM_TEST, and UI_BLOCK_SEARCH_ONLY.

Referenced by panel_property_search(), and panel_remove_invisible_layouts_recursive().

◆ UI_block_theme_style_set()

◆ ui_block_to_region_fl()

void ui_block_to_region_fl ( const ARegion * region,
const uiBlock * block,
float * x,
float * y )

◆ ui_block_to_region_rctf()

void ui_block_to_region_rctf ( const ARegion * region,
const uiBlock * block,
rctf * rct_dst,
const rctf * rct_src )

Definition at line 160 of file interface.cc.

References ui_block_to_region_fl(), rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.

Referenced by ui_but_rect_to_view().

◆ ui_block_to_window()

void ui_block_to_window ( const ARegion * region,
const uiBlock * block,
int * x,
int * y )

Definition at line 149 of file interface.cc.

References ui_block_to_window_fl(), x, and y.

◆ ui_block_to_window_fl()

◆ ui_block_to_window_rctf()

◆ ui_block_to_window_scale()

float ui_block_to_window_scale ( const ARegion * region,
const uiBlock * block )

Definition at line 180 of file interface.cc.

References ui_block_to_window_fl().

Referenced by ui_but_drag_init().

◆ UI_block_translate()

◆ UI_block_update_from_old()

◆ UI_blocklist_draw()

void UI_blocklist_draw ( const bContext * C,
const ListBase * lb )

◆ UI_blocklist_free()

void UI_blocklist_free ( const bContext * C,
ARegion * region )

◆ UI_blocklist_free_inactive()

void UI_blocklist_free_inactive ( const bContext * C,
ARegion * region )

◆ UI_blocklist_min_y_get()

int UI_blocklist_min_y_get ( ListBase * lb)

Definition at line 6022 of file interface.cc.

References ListBase::first, LISTBASE_FOREACH, min, uiBlock::rect, and rctf::ymin.

◆ UI_blocklist_update_view_for_buttons()

void UI_blocklist_update_view_for_buttons ( const bContext * C,
const ListBase * lb )

Definition at line 3779 of file interface.cc.

References C, LISTBASE_FOREACH, and ui_but_update_view_for_active().

Referenced by ED_region_panels_layout_ex().

◆ UI_blocklist_update_window_matrix()

◆ UI_but_active_only()

◆ UI_but_active_only_ex()

bool UI_but_active_only_ex ( const bContext * C,
ARegion * region,
uiBlock * block,
uiBut * but,
bool remove_on_failure )

Special button case, only draw it when used actively, for outliner etc.

Needed for temporarily rename buttons, such as in outliner or file-select, they should keep calling uiDefBut to keep them alive.

Returns
false when button removed.

Definition at line 1153 of file interface.cc.

References activate(), uiBut::active, C, uiBut::layout, uiBlock::oldblock, uiBlock::remove_but(), ui_but_activate_event(), ui_but_active_free(), ui_but_find_old(), ui_but_free(), ui_layout_remove_but(), and ui_region_find_active_but().

Referenced by UI_block_active_only_flagged_buttons(), and UI_but_active_only().

◆ ui_but_add_shortcut()

void ui_but_add_shortcut ( uiBut * but,
const char * shortcut_str,
const bool do_strip )

◆ ui_but_build_drawstr_float()

◆ ui_but_build_drawstr_int()

void ui_but_build_drawstr_int ( uiBut * but,
int value )
static

◆ ui_but_calc_float_precision()

◆ ui_but_change_type()

uiBut * ui_but_change_type ( uiBut * but,
ButType new_type )

Reallocate the button (new address is returned) for a new button type. This should generally be avoided and instead the correct type be created right away.

Note
Only the uiBut data can be kept. If the old button used a derived type (e.g. uiButTab), the data that is not inside uiBut will be lost.

Definition at line 4279 of file interface.cc.

References BLI_assert, uiBut::block, uiLayout::block(), uiBlock::but_index(), uiBlock::buttons, uiBut::layout, uiBut::poin, uiBut::type, ui_but_new(), ui_button_group_replace_but_ptr(), UI_editsource_but_replace(), UI_editsource_enable_check(), ui_layout_replace_but_ptr(), and UNUSED_VARS_NDEBUG.

Referenced by uiLayout::prop(), ui_but_add_search(), and ui_item_array().

◆ UI_but_cm_display_get()

const ColorManagedDisplay * UI_but_cm_display_get ( uiBut & but)

Definition at line 6107 of file interface.cc.

References uiBut::block, and ui_block_cm_display_get().

Referenced by ui_tooltip_data_from_button_or_extra_icon().

◆ UI_but_color_set()

void UI_but_color_set ( uiBut * but,
const uchar color[4] )

Sets the button's color, normally only used to recolor the icon. In the special case of ButType::Label without icon this is used as text color.

Definition at line 6102 of file interface.cc.

References uiBut::col, and copy_v4_v4_uchar().

Referenced by file_add_overlay_icon_but(), and wm_block_splash_add_label().

◆ UI_but_context_get()

const bContextStore * UI_but_context_get ( const uiBut * but)

Definition at line 6216 of file interface.cc.

References uiBut::context.

Referenced by blender::ed::asset::shelf::context(), and wm_drop_ui_context_create().

◆ UI_but_context_int_get()

std::optional< int64_t > UI_but_context_int_get ( const uiBut * but,
const StringRef name )

◆ UI_but_context_int_set()

void UI_but_context_int_set ( uiBlock * block,
uiBut * but,
const StringRef name,
const int64_t value )

◆ UI_but_context_menu_title_from_button()

◆ ui_but_context_poll_operator()

bool ui_but_context_poll_operator ( bContext * C,
wmOperatorType * ot,
const uiBut * but )

◆ ui_but_context_poll_operator_ex()

bool ui_but_context_poll_operator_ex ( bContext * C,
const uiBut * but,
const wmOperatorCallParams * optype_params )

Check if the operator ot poll is successful with the context given by but (optionally).

Parameters
butThe button that might store context. Can be NULL for convenience (e.g. if there is no button to take context from, but we still want to poll the operator).

Definition at line 2021 of file interface.cc.

References BLI_assert_msg, C, uiBut::context, CTX_store_get(), CTX_store_set(), flag, uiBut::flag, wmOperatorCallParams::opcontext, wmOperatorCallParams::optype, result, UI_BUT_ACTIVE_OVERRIDE, and WM_operator_poll_context().

Referenced by UI_block_end_ex(), ui_but_context_poll_operator(), and ui_tooltip_data_from_button_or_extra_icon().

◆ UI_but_context_ptr_get()

const PointerRNA * UI_but_context_ptr_get ( const uiBut * but,
const StringRef name,
const StructRNA * type )

Definition at line 6192 of file interface.cc.

References uiBut::context, CTX_store_ptr_lookup(), and name.

◆ UI_but_context_ptr_set()

◆ UI_but_context_string_get()

std::optional< blender::StringRefNull > UI_but_context_string_get ( const uiBut * but,
const StringRef name )

Definition at line 6199 of file interface.cc.

References uiBut::context, CTX_store_string_lookup(), and name.

Referenced by UI_asset_shelf_idname_from_button_context().

◆ ui_but_convert_to_unit_alt_name()

void ui_but_convert_to_unit_alt_name ( uiBut * but,
char * str,
size_t str_maxncpy )

◆ UI_but_disable()

◆ ui_but_drag_multi_edit_get()

uiBut * ui_but_drag_multi_edit_get ( uiBut * but)

◆ UI_but_dragflag_disable()

void UI_but_dragflag_disable ( uiBut * but,
int flag )

Definition at line 6085 of file interface.cc.

References uiBut::dragflag, and flag.

◆ UI_but_dragflag_enable()

void UI_but_dragflag_enable ( uiBut * but,
int flag )

Definition at line 6080 of file interface.cc.

References uiBut::dragflag, and flag.

Referenced by file_draw_list(), and UI_but_drag_attach_image().

◆ UI_but_drawflag_disable()

◆ UI_but_drawflag_enable()

◆ ui_but_equals_old()

◆ ui_but_event_operator_string()

◆ ui_but_event_operator_string_from_menu()

std::optional< std::string > ui_but_event_operator_string_from_menu ( const bContext * C,
uiBut * but )
static

◆ ui_but_event_operator_string_from_operator()

std::optional< std::string > ui_but_event_operator_string_from_operator ( const bContext * C,
wmOperatorCallParams * op_call_params )
static

◆ ui_but_event_operator_string_from_panel()

◆ ui_but_event_property_operator_string()

◆ UI_but_execute()

void UI_but_execute ( const bContext * C,
ARegion * region,
uiBut * but )

Simulate button click.

Definition at line 1230 of file interface.cc.

References C, ui_but_execute_begin(), and ui_but_execute_end().

Referenced by ui_button_press_invoke(), ui_drag_toggle_set_xy_xy(), and ui_handle_menu_event().

◆ ui_but_extra_icon_event_operator_string()

std::optional< std::string > ui_but_extra_icon_event_operator_string ( const bContext * C,
const uiButExtraOpIcon * extra_icon )
static

◆ ui_but_extra_icon_find_old()

uiButExtraOpIcon * ui_but_extra_icon_find_old ( const uiButExtraOpIcon * new_extra_icon,
const uiBut * old_but )
static

◆ UI_but_extra_icon_string_get_label()

std::string UI_but_extra_icon_string_get_label ( const uiButExtraOpIcon & extra_icon)

◆ UI_but_extra_icon_string_get_operator_keymap()

std::string UI_but_extra_icon_string_get_operator_keymap ( const bContext & C,
const uiButExtraOpIcon & extra_icon )

◆ UI_but_extra_icon_string_get_tooltip()

std::string UI_but_extra_icon_string_get_tooltip ( bContext & C,
const uiButExtraOpIcon & extra_icon )

◆ ui_but_extra_icons_equals_old()

bool ui_but_extra_icons_equals_old ( const uiButExtraOpIcon * new_extra_icon,
const uiButExtraOpIcon * old_extra_icon )
static

◆ ui_but_extra_icons_update_from_old_but()

void ui_but_extra_icons_update_from_old_but ( const uiBut * new_but,
const uiBut * old_but )
static

◆ UI_but_extra_operator_icon_add()

◆ ui_but_extra_operator_icon_add_ptr()

◆ ui_but_extra_operator_icon_free()

void ui_but_extra_operator_icon_free ( uiButExtraOpIcon * extra_icon)
static

◆ UI_but_extra_operator_icon_opptr_get()

PointerRNA * UI_but_extra_operator_icon_opptr_get ( const uiButExtraOpIcon * extra_icon)

◆ UI_but_extra_operator_icon_optype_get()

◆ ui_but_extra_operator_icons_free()

void ui_but_extra_operator_icons_free ( uiBut * but)

◆ ui_but_find_new()

uiBut * ui_but_find_new ( uiBlock * block_new,
const uiBut * but_old )

Definition at line 893 of file interface.cc.

References uiBlock::buttons, and ui_but_equals_old().

Referenced by UI_butstore_update().

◆ ui_but_find_old() [1/2]

uiBut * ui_but_find_old ( uiBlock * block_old,
const uiBut * but_new )

Definition at line 873 of file interface.cc.

References ui_but_find_old().

◆ ui_but_find_old() [2/2]

uiBut * ui_but_find_old ( uiBlock * block_old,
const uiBut * but_new,
const blender::Set< const uiBut * > & ignore_old_buttons )
static

◆ ui_but_find_old_idx()

std::optional< int64_t > ui_but_find_old_idx ( uiBlock * block_old,
const uiBut * but_new,
const blender::Set< const uiBut * > & ignore_old_buttons = {} )
static

Definition at line 878 of file interface.cc.

Referenced by ui_but_update_from_old_block().

◆ UI_but_flag2_enable()

void UI_but_flag2_enable ( uiBut * but,
int flag )

Definition at line 6055 of file interface.cc.

References flag, and uiBut::flag2.

Referenced by uiLayout::prop(), and wm_block_search_menu().

◆ UI_but_flag_disable()

◆ UI_but_flag_enable()

void UI_but_flag_enable ( uiBut * but,
int flag )

Definition at line 6050 of file interface.cc.

References flag, and uiBut::flag.

Referenced by blender::nodes::add_attribute_search_button(), block_create_autorun_warning(), blender::ui::TreeViewLayoutBuilder::build_from_tree(), blender::ui::bonecollections::BoneCollectionItem::build_row(), blender::ed::space_node::create_search_popup_block(), curvemap_buttons_layout(), CurveProfile_buttons_layout(), draw_setting_widget(), ED_file_path_button(), file_draw_list(), file_panel_execution_buttons_draw(), blender::ed::outliner::merged_element_search_menu(), blender::ed::space_node::node_draw_basis(), blender::ed::space_node::node_draw_collapsed(), blender::ed::space_node::node_draw_extra_info_row(), blender::ed::space_node::node_draw_panels(), blender::ed::space_node::node_find_menu(), blender::ed::outliner::outliner_draw_mode_column_toggle(), blender::ed::outliner::outliner_draw_overrides_restrictbuts(), blender::ed::outliner::outliner_draw_overrides_rna_buts(), blender::ed::outliner::outliner_draw_restrictbuts(), blender::ed::outliner::outliner_draw_rnabuts(), blender::ed::outliner::outliner_draw_userbuts(), uiLayout::prop(), blender::ed::space_node::reroute_node_draw_label(), rotation_mode_menu_callback(), save_file_overwrite_confirm_button(), save_file_overwrite_saveas_button(), template_add_button_search_menu(), template_ID(), template_id_def_new_but(), ui_alert_create(), UI_but_disable(), ui_but_search_refresh(), ui_item_with_label(), ui_layout_list_set_labels_active(), UI_popup_block_template_confirm(), ui_popup_context_menu_for_button(), ui_template_list_layout_draw(), uiDefAutoButR(), uiItem_simple(), uiItemFullO_ptr_ex(), uiItemL_ex(), uiTemplateKeymapItemProperties(), view3d_panel_vgroup(), wm_block_dialog_create(), wm_block_file_close_save_button(), wm_block_insert_unicode_create(), and wm_block_search_menu().

◆ UI_but_flag_is_set()

◆ UI_but_focus_on_enter_event()

void UI_but_focus_on_enter_event ( wmWindow * win,
uiBut * but )

push a new event onto event queue to activate the given button (usually a text-field) upon entering a popup

Definition at line 6810 of file interface.cc.

References EVT_BUT_OPEN, KM_PRESS, WM_event_add(), and wm_event_init_from_window().

Referenced by template_common_search_menu(), template_operator_property_buts_draw_single(), and wm_enum_search_menu().

◆ ui_but_free()

void ui_but_free ( const bContext * C,
uiBut * but )
static

a full doc with API notes can be found in 'blender/doc/guides/interface_API.txt'

uiBlahBlah() external function. ui_blah_blah() internal function.

Frees internal data owned by the #but, however this does not free the #but itself, the #but is managed with a #std::unique_ptr, this must be called before the #std::unique_ptr owner is destroyed.

Definition at line 3647 of file interface.cc.

References uiBut::active, BLI_assert, uiBut::block, C, uiBut::func_argN, uiBut::func_argN_free_fn, uiBut::hold_argN, Image, IMB_freeImBuf(), MEM_freeN(), uiBut::opptr, uiBut::placeholder, uiBut::poin, uiBut::semi_modal_state, uiBut::tip_arg, uiBut::tip_arg_free, uiBut::type, ui_but_active_free(), ui_but_drag_free(), ui_but_extra_operator_icons_free(), ui_but_free_type_specific(), ui_but_handle_data_free(), ui_but_semi_modal_state_free(), UI_butstore_is_registered(), and WM_operator_properties_free().

Referenced by UI_block_free(), UI_block_update_from_old(), and UI_but_active_only_ex().

◆ ui_but_free_type_specific()

void ui_but_free_type_specific ( uiBut * but)
static

Free data specific to a certain button type. For now just do in a switch-case, we could instead have a callback stored in uiBut and set that in #ui_but_alloc_info().

Definition at line 3624 of file interface.cc.

References uiButSearch::arg, uiButSearch::arg_free_fn, uiButSearch::item_active_str, MEM_SAFE_FREE, SearchMenu, and uiBut::type.

Referenced by ui_but_free().

◆ UI_but_func_complete_set()

void UI_but_func_complete_set ( uiBut * but,
uiButCompleteFunc func,
void * arg )

◆ UI_but_func_drawextra_set()

void UI_but_func_drawextra_set ( uiBlock * block,
std::function< void(const bContext *C, rcti *rect)> func )

Definition at line 6283 of file interface.cc.

References C, and uiBlock::drawextra.

Referenced by uiTemplatePreview().

◆ UI_but_func_hold_set()

void UI_but_func_hold_set ( uiBut * but,
uiButHandleHoldFunc func,
void * argN )

Definition at line 6824 of file interface.cc.

References uiBut::hold_argN, and uiBut::hold_func.

Referenced by uiLayout::op_menu_hold().

◆ UI_but_func_menu_step_set()

void UI_but_func_menu_step_set ( uiBut * but,
uiMenuStepFunc func )

Definition at line 6325 of file interface.cc.

References uiBut::menu_step_func.

Referenced by uiblock_layer_pass_buttons().

◆ UI_but_func_pushed_state_set()

void UI_but_func_pushed_state_set ( uiBut * but,
std::function< bool(const uiBut &)> func )

◆ UI_but_func_quick_tooltip_set()

void UI_but_func_quick_tooltip_set ( uiBut * but,
std::function< std::string(const uiBut *but)> func )

Enable a tooltip that appears faster than the usual tooltip. If the button has both a quick and a normal tooltip, the quick one is shown first, and expanded to the full one after the usual tooltip delay. Quick tooltips are useful in cases like:

  • A button doesn't show a label to save space but the label is still relevant. Show the label as quick tooltip in that case (like the name of tools in a compact, icon only tool-shelf).
  • The only purpose of a button is to display this tooltip (like a warning icon with the warning text in the tooltip).

Definition at line 6335 of file interface.cc.

References uiBut::tip_quick_func, UI_but_drawflag_enable(), and UI_BUT_HAS_QUICK_TOOLTIP.

Referenced by blender::ui::PreviewGridItem::build_grid_tile_button(), blender::ed::space_node::draw_link_errors(), and blender::ed::space_node::node_add_error_message_button().

◆ UI_but_func_rename_full_set()

void UI_but_func_rename_full_set ( uiBut * but,
std::function< void(std::string &new_name)> rename_full_func )

Definition at line 6277 of file interface.cc.

References uiBut::rename_full_func.

Referenced by uiLayout::prop(), and template_ID().

◆ UI_but_func_rename_set()

void UI_but_func_rename_set ( uiBut * but,
uiButHandleRenameFunc func,
void * arg1 )

◆ UI_but_func_search_set()

void UI_but_func_search_set ( uiBut * but,
uiButSearchCreateFn search_create_fn,
uiButSearchUpdateFn search_update_fn,
void * arg,
bool free_arg,
uiFreeArgFunc search_arg_free_fn,
uiButHandleFunc search_exec_fn,
void * active )
Note
The item-pointer (referred to below) is a per search item user pointer passed to UI_search_item_add (stored in uiSearchItems.pointers).
Parameters
search_create_fnFunction to create the menu.
search_update_fnFunction to refresh search content after the search text has changed.
arguser value.
free_argSet to true if the argument is newly allocated memory for every redraw and should be freed when the button is destroyed.
search_arg_free_fnWhen non-null, use this function to free arg.
search_exec_fnFunction that executes the action, gets arg as the first argument. The second argument as the active item-pointer
activeWhen non-null, this item-pointer item will be visible and selected, otherwise the first item will be selected.

Definition at line 6522 of file interface.cc.

References active, uiButSearch::arg, uiButSearch::arg_free_fn, BLI_assert, uiBut::block, uiBut::drawstr, uiBlock::flag, uiBut::func, uiButSearch::item_active, uiButSearch::items_update_fn, uiButSearch::popup_create_fn, printf, uiButSearch::results_are_suggestions, SearchMenu, uiBut::type, UI_BLOCK_LOOP, UI_but_func_set(), UI_but_funcN_set(), ui_but_search_refresh(), and ui_searchbox_create_generic().

Referenced by blender::nodes::add_attribute_search_button(), blender::nodes::add_layer_name_search_button(), blender::ed::space_node::create_search_popup_block(), blender::ed::outliner::merged_element_search_menu(), blender::ed::space_node::node_find_menu(), blender::ed::space_node::node_geometry_add_attribute_search_button(), blender::ed::space_node::node_geometry_add_layer_search_button(), blender::ed::space_node::node_geometry_add_volume_grid_search_button(), template_common_search_menu(), ui_but_add_search(), UI_but_func_menu_search(), UI_but_func_operator_search(), and uiDefSearchButO_ptr().

◆ UI_but_func_search_set_context_menu()

void UI_but_func_search_set_context_menu ( uiBut * but,
uiButSearchContextMenuFn context_menu_fn )

Definition at line 6580 of file interface.cc.

References BLI_assert, uiButSearch::item_context_menu_fn, SearchMenu, and uiBut::type.

Referenced by UI_but_func_menu_search().

◆ UI_but_func_search_set_listen()

void UI_but_func_search_set_listen ( uiBut * but,
uiButSearchListenFn listen_fn )

◆ UI_but_func_search_set_results_are_suggestions()

◆ UI_but_func_search_set_sep_string()

void UI_but_func_search_set_sep_string ( uiBut * but,
const char * search_sep_string )

◆ UI_but_func_search_set_tooltip()

void UI_but_func_search_set_tooltip ( uiBut * but,
uiButSearchTooltipFn tooltip_fn )

◆ UI_but_func_set() [1/2]

void UI_but_func_set ( uiBut * but,
std::function< void(bContext &)> func )

Definition at line 6296 of file interface.cc.

References uiBut::apply_func.

Referenced by blender::ed::asset::shelf::add_catalog_tabs(), add_preset_button(), ANIM_channel_draw_widgets(), block_create__close_file_dialog(), block_create_autorun_warning(), blender::ed::asset::shelf::AssetCatalogSelectorTree::Item::build_row(), uiLayout::button(), colorband_buttons_layout(), colorband_tools_fn(), curve_profile_presets_fn(), curve_profile_tools_fn(), curvemap_buttons_layout(), curvemap_clipping_func(), curvemap_tools_func(), CurveProfile_buttons_layout(), uiLayout::decorator(), envelope_panel_draw(), graph_draw_driver_settings_panel(), graph_panel_key_properties(), blender::ed::space_node::node_draw_basis(), blender::ed::space_node::node_draw_collapsed(), blender::ed::space_node::node_draw_panels(), blender::ed::outliner::outliner_draw_mode_column_toggle(), blender::ed::outliner::outliner_draw_restrictbuts(), blender::ed::outliner::outliner_draw_userbuts(), save_file_overwrite_cancel_button(), save_file_overwrite_confirm_button(), save_file_overwrite_saveas_button(), template_operator_property_buts_draw_single(), ui_alert_create(), ui_block_colorpicker(), ui_colorpicker_circle(), ui_colorpicker_square(), ui_imageuser_slot_menu(), ui_item_array(), ui_item_enum_expand_elem_exec(), ui_item_with_label(), UI_popup_block_template_confirm(), ui_popup_context_menu_for_button(), ui_template_list_layout_draw(), uiTemplateKeymapItemProperties(), uiTemplateLayers(), uiTemplateTextureShow(), view3d_panel_vgroup(), wm_block_dialog_create(), wm_block_file_close_cancel_button(), wm_block_file_close_discard_button(), wm_block_file_close_save_button(), wm_block_insert_unicode_create(), and wm_block_splash_create().

◆ UI_but_func_set() [2/2]

void UI_but_func_set ( uiBut * but,
uiButHandleFunc func,
void * arg1,
void * arg2 )

Definition at line 6289 of file interface.cc.

References uiBut::func, uiBut::func_arg1, and uiBut::func_arg2.

Referenced by UI_but_func_search_set().

◆ UI_but_func_tooltip_custom_set()

◆ UI_but_func_tooltip_set()

◆ UI_but_funcN_set()

◆ ui_but_get_float_precision()

float ui_but_get_float_precision ( uiBut * but)
static

Definition at line 694 of file interface.cc.

References BLI_assert_unreachable, Num, NumSlider, and uiBut::type.

Referenced by ui_but_calc_float_precision(), and ui_get_but_string_unit().

◆ ui_but_get_float_step_size()

float ui_but_get_float_step_size ( uiBut * but)
static

Definition at line 706 of file interface.cc.

References BLI_assert_unreachable, Num, NumSlider, and uiBut::type.

Referenced by ui_but_hide_fraction().

◆ ui_but_hide_fraction()

bool ui_but_hide_fraction ( uiBut * but,
double value )
static

◆ UI_but_hint_drawstr_set()

void UI_but_hint_drawstr_set ( uiBut * but,
const char * string )

Adds a hint to the button which draws right aligned, grayed out and never clipped.

Definition at line 6720 of file interface.cc.

References ui_but_add_shortcut().

Referenced by blender::ed::spreadsheet::draw_row_suffix().

◆ ui_but_icon_extra_get()

◆ ui_but_icon_extra_is_visible_bone_eyedropper()

◆ ui_but_icon_extra_is_visible_search_eyedropper()

bool ui_but_icon_extra_is_visible_search_eyedropper ( uiBut * but)
static

◆ ui_but_icon_extra_is_visible_search_unlink()

bool ui_but_icon_extra_is_visible_search_unlink ( const uiBut * but)
static

◆ ui_but_icon_extra_is_visible_text_clear()

bool ui_but_icon_extra_is_visible_text_clear ( const uiBut * but)
static

Definition at line 1824 of file interface.cc.

References BLI_assert, uiBut::drawstr, uiBut::flag, Text, uiBut::type, and UI_BUT_VALUE_CLEAR.

Referenced by ui_but_icon_extra_get().

◆ UI_but_icon_indicator_color_set()

void UI_but_icon_indicator_color_set ( uiBut * but,
const uchar color[4] )

◆ UI_but_icon_indicator_number_set()

void UI_but_icon_indicator_number_set ( uiBut * but,
const int indicator_number )

◆ UI_but_icon_indicator_set()

void UI_but_icon_indicator_set ( uiBut * but,
const char * string )

◆ ui_but_is_bool()

◆ UI_but_is_color_gamma()

bool UI_but_is_color_gamma ( uiBut & but)

Definition at line 6112 of file interface.cc.

References ui_but_is_color_gamma().

◆ ui_but_is_compatible()

bool ui_but_is_compatible ( const uiBut * but_a,
const uiBut * but_b )

Check if this button is similar enough to be grouped with another.

Definition at line 2694 of file interface.cc.

References uiBut::pointype, RNA_property_subtype(), RNA_property_type(), uiBut::rnapoin, uiBut::rnaprop, PointerRNA::type, and uiBut::type.

Referenced by ui_multibut_states_tag().

◆ ui_but_is_float()

◆ ui_but_is_pushed()

int ui_but_is_pushed ( uiBut * but)

Definition at line 2451 of file interface.cc.

References ui_but_is_pushed_ex(), and UI_BUT_VALUE_UNSET.

Referenced by ui_drag_toggle_but_pushed_state().

◆ ui_but_is_pushed_ex()

◆ ui_but_is_rna_undo()

bool ui_but_is_rna_undo ( const uiBut * but)
static

◆ ui_but_is_rna_valid()

bool ui_but_is_rna_valid ( uiBut * but)

◆ ui_but_is_row_alignment_group()

bool ui_but_is_row_alignment_group ( const uiBut * left,
const uiBut * right )
static

Definition at line 411 of file interface.cc.

References uiBut::alignnr, left, uiBut::rect, and rctf::xmin.

Referenced by ui_block_bounds_calc_text().

◆ ui_but_is_unit()

◆ ui_but_is_unit_radians()

bool ui_but_is_unit_radians ( const uiBut * but)
static

◆ ui_but_is_unit_radians_ex()

bool ui_but_is_unit_radians_ex ( const UnitSettings * unit,
const int unit_type )
static

◆ UI_but_label_alpha_factor_set()

void UI_but_label_alpha_factor_set ( uiBut * but,
const float alpha_factor )

◆ UI_but_menu_disable_hover_open()

void UI_but_menu_disable_hover_open ( uiBut * but)

When a button displays a menu, hovering another button that can display one will switch to that menu instead. In some cases that's unexpected, so the feature can be disabled here (as in, this button will not spawn its menu on hover and the previously spawned menu will remain open).

Definition at line 6330 of file interface.cc.

References uiBut::menu_no_hover_open.

Referenced by blender::ui::template_asset_shelf_popover().

◆ ui_but_menu_draw_as_popover()

bool ui_but_menu_draw_as_popover ( const uiBut * but)

◆ ui_but_new()

std::unique_ptr< uiBut > ui_but_new ( const ButType type)
static

Factory function: Allocate button and set uiBut.type.

Definition at line 4217 of file interface.cc.

References Color, ColorBand, Curve, CurveProfile, Decorator, HotkeyEvent, HsvCube, Label, Num, NumSlider, Progress, Scroll, SearchMenu, SeprLine, Tab, and ViewItem.

Referenced by ui_but_change_type(), and ui_def_but().

◆ UI_but_node_link_set()

void UI_but_node_link_set ( uiBut * but,
bNodeSocket * socket,
const float draw_color[4] )

◆ UI_but_number_precision_set()

◆ UI_but_number_slider_precision_set()

void UI_but_number_slider_precision_set ( uiBut * but,
float precision )

Definition at line 6775 of file interface.cc.

References BLI_assert, NumSlider, uiButNumberSlider::precision, and uiBut::type.

Referenced by ui_block_colorpicker(), and ui_def_but_rna().

◆ UI_but_number_slider_step_size_set()

void UI_but_number_slider_step_size_set ( uiBut * but,
float step_size )

Definition at line 6766 of file interface.cc.

References BLI_assert, NumSlider, uiButNumberSlider::step_size, and uiBut::type.

Referenced by ui_block_colorpicker(), and ui_def_but_rna().

◆ UI_but_number_step_size_set()

◆ UI_but_operator_ptr_ensure()

◆ UI_but_operator_set()

◆ UI_but_operator_set_never_call()

void UI_but_operator_set_never_call ( uiBut * but)

Disable calling operators from but in button handling. Useful to attach an operator to a button for tooltips, "Assign Shortcut", etc. without actually making the button execute the operator.

Definition at line 6013 of file interface.cc.

References uiBut::operator_never_call.

Referenced by blender::ed::asset::shelf::AssetViewItem::build_grid_tile().

◆ ui_but_override_flag()

◆ ui_but_pie_direction_string()

std::string ui_but_pie_direction_string ( const uiBut * but)
static

Definition at line 1673 of file interface.cc.

References ARRAY_SIZE, BLI_assert, uiBut::pie_dir, and ui_radial_dir_to_numpad.

Referenced by ui_menu_block_set_keymaps().

◆ ui_but_pixelrect_in_view()

bool ui_but_pixelrect_in_view ( const ARegion * region,
const rcti * rect )
static

Definition at line 2219 of file interface.cc.

References BLI_rcti_isect(), BLI_rcti_translate(), ARegion::winrct, rcti::xmin, and rcti::ymin.

Referenced by UI_block_draw().

◆ ui_but_placeholder_get()

◆ UI_but_placeholder_set()

◆ ui_but_predefined_extra_operator_icons_add()

void ui_but_predefined_extra_operator_icons_add ( uiBut * but)
static

While some extra operator icons have to be set explicitly upon button creating, this code adds some generic ones based on button data. Currently these are mutually exclusive, so there's only ever one predefined extra icon.

Definition at line 1905 of file interface.cc.

References BLI_assert, uiBut::extra_op_icons, blender::wm::InvokeDefault, LISTBASE_FOREACH, PREDEFINED_EXTRA_OP_ICON_BONE_EYEDROPPER, PREDEFINED_EXTRA_OP_ICON_CLEAR, PREDEFINED_EXTRA_OP_ICON_EYEDROPPER, ui_but_extra_operator_icon_add_ptr(), ui_but_icon_extra_get(), and WM_operatortype_find().

Referenced by UI_block_end_ex().

◆ ui_but_range_set_hard()

◆ ui_but_range_set_soft()

◆ UI_but_return_value_get()

int UI_but_return_value_get ( uiBut * but)

Definition at line 6160 of file interface.cc.

References uiBut::retval.

◆ UI_but_rna_enum_item_get()

◆ ui_but_rna_equals()

bool ui_but_rna_equals ( const uiBut * a,
const uiBut * b )

Definition at line 766 of file interface.cc.

References b, and ui_but_rna_equals_ex().

Referenced by ui_but_equals_old(), and ui_list_contains_row().

◆ ui_but_rna_equals_ex()

bool ui_but_rna_equals_ex ( const uiBut * but,
const PointerRNA * ptr,
const PropertyRNA * prop,
int index )

◆ ui_but_rna_menu_convert_to_menu_type()

◆ ui_but_rna_menu_convert_to_panel_type()

void ui_but_rna_menu_convert_to_panel_type ( uiBut * but,
const char * panel_type )

◆ ui_but_scale_type()

◆ UI_but_search_preview_grid_size_set()

void UI_but_search_preview_grid_size_set ( uiBut * but,
int rows,
int cols )

◆ ui_but_string_eval_number()

◆ ui_but_string_get()

void ui_but_string_get ( uiBut * but,
char * str,
const size_t str_maxncpy )

◆ ui_but_string_get_dynamic()

char * ui_but_string_get_dynamic ( uiBut * but,
int * r_str_size )

◆ ui_but_string_get_ex()

◆ UI_but_string_get_label()

std::string UI_but_string_get_label ( uiBut & but)

◆ ui_but_string_get_maxncpy()

int ui_but_string_get_maxncpy ( uiBut * but)

◆ UI_but_string_get_operator_keymap()

std::string UI_but_string_get_operator_keymap ( bContext & C,
uiBut & but )

Buttons assigned to an operator (common case).

Definition at line 7025 of file interface.cc.

References C, and ui_but_event_operator_string().

Referenced by ui_tooltip_data_from_button_or_extra_icon(), and ui_tooltip_data_from_tool().

◆ UI_but_string_get_property_keymap()

std::string UI_but_string_get_property_keymap ( bContext & C,
uiBut & but )

Use for properties that are bound to one of the context cycle, etc. keys.

Definition at line 7030 of file interface.cc.

References C, and ui_but_event_property_operator_string().

Referenced by ui_tooltip_data_from_button_or_extra_icon().

◆ UI_but_string_get_rna_label()

◆ UI_but_string_get_rna_label_context()

std::string UI_but_string_get_rna_label_context ( const uiBut & but)

◆ UI_but_string_get_rna_property_identifier()

std::string UI_but_string_get_rna_property_identifier ( const uiBut & but)

◆ UI_but_string_get_rna_struct_identifier()

◆ UI_but_string_get_rna_tooltip()

◆ UI_but_string_get_tooltip()

std::string UI_but_string_get_tooltip ( bContext & C,
uiBut & but )

◆ UI_but_string_get_tooltip_label()

std::string UI_but_string_get_tooltip_label ( const uiBut & but)

Query the result of #uiBut::tip_label_func(). Meant to allow overriding the label to be displayed in the tool-tip.

Definition at line 6930 of file interface.cc.

References uiBut::tip_quick_func.

Referenced by ui_tooltip_data_from_button_or_extra_icon().

◆ ui_but_string_set()

◆ ui_but_submenu_enable()

void ui_but_submenu_enable ( uiBlock * block,
uiBut * but )
static

◆ ui_but_supports_cycling()

bool ui_but_supports_cycling ( const uiBut * but)

Checks if the button supports cycling next/previous menu items (ctrl+mouse-wheel).

Definition at line 2729 of file interface.cc.

References Color, ELEM, ListBox, Menu, uiBut::menu_step_func, Num, NumSlider, Row, uiBut::type, and ui_but_menu_step_poll().

Referenced by ui_do_but_BLOCK(), and ui_handle_panel_category_cycling().

◆ ui_but_to_pixelrect()

void ui_but_to_pixelrect ( rcti * rect,
const ARegion * region,
const uiBlock * block,
const uiBut * but )

Project button or block (but==nullptr) to pixels in region-space.

Definition at line 2204 of file interface.cc.

References uiBlock::rect, uiBut::rect, and ui_to_pixelrect().

Referenced by button_section_bounds_calc(), UI_block_draw(), and ui_update_flexible_spacing().

◆ UI_but_type_set_menu_from_pulldown()

◆ UI_but_unit_type_get()

◆ UI_but_unit_type_set()

void UI_but_unit_type_set ( uiBut * but,
const int unit_type )

◆ ui_but_update()

◆ ui_but_update_and_icon_set()

void ui_but_update_and_icon_set ( uiBut * but,
int icon )
static

◆ ui_but_update_edited()

◆ ui_but_update_ex()

void ui_but_update_ex ( uiBut * but,
const bool validate )
static
Parameters
butButton to update.
validateWhen set, this function may change the button value. Otherwise treat the button value as read-only.

Definition at line 4011 of file interface.cc.

References wmKeyMapItem::alt, BLI_assert, BLI_rctf_size_x(), uiBut::block, wmKeyMapItem::ctrl, uiBut::drawflag, uiBut::drawstr, uiBut::editstr, uiBlock::evil_C, uiBlock::flag, uiBut::flag, uiBut::hardmax, uiBut::hardmin, HotkeyEvent, HsvCircle, HsvCube, wmKeyMapItem::hyper, EnumPropertyItem::icon, uiBut::icon, uiBut::iconadd, IconToggle, IconToggleN, IFACE_, KeyEvent, KM_ALT, KM_CTRL, KM_HYPER, KM_MOD_HELD, KM_NOTHING, KM_OSKEY, KM_SHIFT, Label, Menu, uiButHotkeyEvent::modifier_key, EnumPropertyItem::name, Num, NumSlider, wmKeyMapItem::oskey, uiBut::poin, uiBut::pointype, PROP_ENUM, PROP_ICONS_CONSECUTIVE, PROP_ICONS_REVERSE, uiBut::rect, RNA_property_enum_get(), RNA_property_enum_item_from_value_gettexted(), RNA_property_flag(), RNA_property_type(), uiBut::rnapoin, uiBut::rnaprop, Scroll, SearchMenu, wmKeyMapItem::shift, uiBut::softmax, uiBut::softmin, str, uiBut::str, Text, uiBut::type, UI_BLOCK_LOOP, ui_but_build_drawstr_float(), ui_but_build_drawstr_int(), ui_but_calc_float_precision(), UI_BUT_ICON_REVERSE, ui_but_is_editing(), ui_but_is_float(), UI_BUT_POIN_TYPES, ui_but_range_set_soft(), ui_but_string_get(), ui_but_update_select_flag(), ui_but_value_set(), UI_BUT_VALUE_UNSET, UI_GET_BUT_VALUE_INIT, UI_MAX_DRAW_STR, UI_SELECT, UI_UNIT_X, WM_key_event_string(), and WM_keymap_item_to_string().

Referenced by ui_but_update(), and ui_but_update_edited().

◆ ui_but_update_from_old_block()

bool ui_but_update_from_old_block ( uiBlock * block,
blender::Set< const uiBut * > & matched_old_buttons,
std::unique_ptr< uiBut > * but_uptr,
std::optional< int64_t > * but_old_idx )
static

Optimization: but_old_idx is used to avoid having to lookup the matching button from the old block on every iteration. On most redraws, button order doesn't change, so the index of the new button is the index of the matching old button. Only if they don't match using the expected index, a lookup has to be performed. Even if individual buttons are inserted or removed, likely at some point the following buttons (if any) will match again, so successive indices will produce successive matches again. Think of but_old_idx as a cursor that indicates the likely/expected position of the matching button in the old block. This optimization brings the whole button updating to O(n) amortized time instead of O(n^2).

Parameters
matched_old_buttonsCollects all previously found matches in the old block. These should be ignored when looking up further matches.
but_uptrThe owning pointer for the button to update. The pointed to button may be replaced, in which case the function will return true.
but_old_idxIndex into the old-button vector indicating the likely/expected position of the matching button in the old block, for the optimization explained above. Value is optional because sometimes the expected position of the following matching button can not be determined, in which case a full lookup will have to be performed.
Returns
true when the button pointed to by but_uptr is replaced (only done for active buttons).

Definition at line 1072 of file interface.cc.

References uiBut::active, blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), BLI_assert, BLI_listbase_is_empty(), uiBut::block, uiBlock::butstore, uiBlock::buttons, blender::IndexRange::contains(), blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains(), ELEM, uiBut::flag, Vector< T, InlineBufferCapacity, Allocator >::index_range(), LIKELY, ListRow, uiBlock::oldblock, uiBut::semi_modal_state, Vector< T, InlineBufferCapacity, Allocator >::size(), uiBut::type, UI_BUT_DRAG_MULTI, ui_but_equals_old(), ui_but_find_old(), ui_but_find_old_idx(), ui_but_update_old_active_from_new(), UI_butstore_register_update(), ui_button_group_replace_but_ptr(), UI_HOVER, UNUSED_VARS, and ViewItem.

Referenced by UI_block_update_from_old().

◆ ui_but_update_old_active_from_new()

void ui_but_update_old_active_from_new ( uiBut * oldbut,
uiBut * but )
static

Update pointers and other information in the old active button based on new information in the corresponding new button from the current layout pass.

Parameters
oldbutThe button from the last layout pass that will be moved to the new block.
butThe newly added button with much of the up to date information, to be feed later.
Note
uiBut has ownership of many of its pointers. When the button is freed all these pointers are freed as well, so ownership has to be moved out of but in order to free it.

Definition at line 945 of file interface.cc.

References uiBut::active, uiBut::alignnr, uiButLabel::alpha_factor, uiButSearch::arg, uiButSearch::arg_free_fn, BLI_assert, uiBut::context, uiBut::dragpoin, uiBut::drawflag, ELEM, uiBut::extra_op_icons, uiBut::flag, uiBut::func_argN, uiBut::hardmax, uiBut::icon, uiBut::iconadd, uiBut::imb, uiButSeparatorLine::is_vertical, Label, ListRow, uiBut::poin, Progress, uiButProgress::progress_factor, uiBut::pushed_state_func, uiBut::rect, uiBut::rename_full_func, Row, Scroll, SearchMenu, uiBut::semi_modal_state, SeprLine, uiBut::str, uiBut::tip_arg, uiBut::tip_arg_free, uiBut::tip_custom_func, uiBut::tip_func, uiBut::tip_quick_func, uiBut::type, ui_but_extra_icons_update_from_old_but(), UI_BUT_HAS_QUICK_TOOLTIP, UI_BUT_REDALERT, UI_HAS_ICON, UI_SELECT_DRAW, ui_view_item_swap_button_pointers(), uiButViewItem::view_item, ViewItem, and uiButScrollBar::visual_height.

Referenced by ui_but_update_from_old_block().

◆ ui_but_update_select_flag()

void ui_but_update_select_flag ( uiBut * but,
double * value )
static

Definition at line 2457 of file interface.cc.

References uiBut::flag, ui_but_is_pushed_ex(), and UI_SELECT.

Referenced by ui_but_update_ex(), and ui_but_value_set().

◆ ui_but_v3_get()

◆ ui_but_v3_set()

◆ ui_but_v4_get()

◆ ui_but_v4_set()

◆ ui_but_validate()

void ui_but_validate ( const uiBut * but)
static

Extra sanity checks for invariants (debug builds only).

Definition at line 2007 of file interface.cc.

References BLI_assert, Char, ELEM, Int, Num, uiBut::pointype, Short, uiButNumber::step_size, and uiBut::type.

Referenced by UI_block_end_ex().

◆ ui_but_value_get()

◆ ui_but_value_set()

◆ UI_but_view_item_draw_size_set()

void UI_but_view_item_draw_size_set ( uiBut * but,
const std::optional< int > draw_width,
const std::optional< int > draw_height )

◆ ui_def_but()

uiBut * ui_def_but ( uiBlock * block,
uiButTypeWithPointerType but_and_ptr_type,
int retval,
const StringRef str,
int x,
int y,
short width,
short height,
void * poin,
float min,
float max,
const std::optional< StringRef > tip )
static
Parameters
x,yThe lower left hand corner of the button (X axis)
width,heightThe size of the button.

Definition at line 4323 of file interface.cc.

References uiBlock::alignnr, uiBut::alignnr, Vector< T, InlineBufferCapacity, Allocator >::append(), Bit, uiBut::bit, uiButTypeWithPointerType::bit_index, uiBut::bitnr, BLI_assert, Block, uiBut::block, But, uiButTypeWithPointerType::but_type, ButMenu, uiBlock::buttons, Color, uiBlock::curlayout, Decorator, uiBut::disabled_info, uiBut::dragflag, uiBut::drawflag, ELEM, uiBlock::emboss, uiBut::emboss, uiBlock::flag, uiBut::flag, uiBlock::func, uiBut::func, uiBlock::func_arg1, uiBut::func_arg1, uiBlock::func_arg2, uiBut::func_arg2, uiBlock::func_argN, uiBut::func_argN, uiBlock::func_argN_copy_fn, uiBut::func_argN_copy_fn, uiBlock::func_argN_free_fn, uiBut::func_argN_free_fn, uiBlock::funcN, uiBut::funcN, Grip, uiBut::hardmax, uiBut::hardmin, Label, Vector< T, InlineBufferCapacity, Allocator >::last(), ListBox, uiBlock::lock, uiBlock::lockstr, max, Menu, min, Num, NumSlider, uiBut::poin, uiButTypeWithPointerType::pointer_type, uiBut::pointype, Popover, uiBut::pos, Pulldown, uiBut::rect, uiBut::retval, Roundbox, Scroll, SearchMenu, Sepr, SeprLine, SeprSpacer, uiBut::softmax, uiBut::softmin, str, uiBut::str, Text, uiBut::tip, uiBut::type, ui_block_is_popover(), UI_BLOCK_LOOP, UI_BLOCK_PIE_MENU, UI_BLOCK_QUICK_SETUP, UI_BUT_ALIGN, ui_but_can_align(), UI_BUT_DISABLED, UI_BUT_DRAG_FULL_BUT, UI_BUT_ICON_LEFT, ui_but_new(), UI_BUT_POIN_TYPES, UI_BUT_TEXT_LEFT, UI_BUT_UNDO, UI_editsource_active_but_test(), UI_editsource_enable_check(), ui_layout_add_but(), UI_MAX_NAME_STR, x, rctf::xmax, rctf::xmin, y, rctf::ymax, and rctf::ymin.

Referenced by ui_def_but_operator_ptr(), ui_def_but_rna(), ui_def_but_rna_propname(), uiDefBlockBut(), uiDefBlockButN(), uiDefBut(), uiDefButImage(), uiDefIconBlockBut(), uiDefIconBut(), uiDefIconMenuBut(), uiDefIconPreviewBut(), uiDefIconTextBut(), uiDefIconTextMenuBut(), uiDefMenuBut(), and uiDefSearchBut().

◆ ui_def_but_icon()

◆ ui_def_but_icon_clear()

void ui_def_but_icon_clear ( uiBut * but)

Avoid using this where possible since it's better not to ask for an icon in the first place.

Definition at line 4487 of file interface.cc.

References uiBut::drawflag, uiBut::flag, uiBut::icon, UI_BUT_ICON_LEFT, and UI_HAS_ICON.

Referenced by uiLayout::prop().

◆ ui_def_but_operator_ptr()

uiBut * ui_def_but_operator_ptr ( uiBlock * block,
ButType type,
wmOperatorType * ot,
blender::wm::OpCallContext opcontext,
const StringRef str,
int x,
int y,
short width,
short height,
std::optional< StringRef > tip )
static

◆ ui_def_but_rna()

uiBut * ui_def_but_rna ( uiBlock * block,
ButType type,
int retval,
std::optional< StringRef > str,
int x,
int y,
short width,
short height,
PointerRNA * ptr,
PropertyRNA * prop,
int index,
float min,
float max,
std::optional< StringRef > tip )
static

ui_def_but_rna_propname and ui_def_but_rna both take the same args except for propname vs prop, this is done so we can avoid an extra lookup on 'prop' when its already available.

When this kind of change won't disrupt branches, best look into making more of our UI functions take prop rather than propname.

Definition at line 4817 of file interface.cc.

References BLI_assert, Color, uiBut::context, uiBlock::contexts, CTX_IFACE_, CTX_store_add(), PointerRNA::data, ELEM, uiBut::emboss, uiBlock::evil_C, uiBut::flag, free(), HsvCircle, HsvCube, i, EnumPropertyItem::icon, ListRow, max, MEM_freeN(), Menu, uiBut::menu_create_func, min, EnumPropertyItem::name, Num, NumSlider, uiBut::poin, PROP_ENUM, PROP_FLOAT, PROP_INT, PROP_POINTER, PROP_STRING, ptr, blender::ui::Pulldown, RNA_enum_from_value(), RNA_property_array_check(), RNA_property_editable_info(), RNA_property_enum_get(), RNA_property_enum_items(), RNA_property_float_range(), RNA_property_float_ui_range(), RNA_property_int_range(), RNA_property_int_ui_range(), RNA_property_pointer_get(), RNA_property_string_maxlength(), RNA_property_translation_context(), RNA_property_type(), RNA_property_ui_description(), RNA_property_ui_icon(), RNA_property_ui_name(), RNA_struct_is_ID(), uiBut::rnaindex, uiBut::rnapoin, uiBut::rnaprop, Row, SearchMenu, step, uiButNumber::step_size, uiButNumberSlider::step_size, str, PointerRNA::type, uiBut::type, UI_but_disable(), ui_but_is_rna_undo(), ui_but_is_unit(), UI_but_number_precision_set(), UI_but_number_slider_precision_set(), UI_but_number_slider_step_size_set(), UI_but_number_step_size_set(), ui_but_submenu_enable(), UI_BUT_UNDO, ui_def_but(), ui_def_but_icon(), ui_def_but_rna__menu(), ui_get_but_step_unit(), UI_HAS_ICON, x, and y.

Referenced by ui_def_but_rna_propname(), uiDefButR_prop(), uiDefIconButR_prop(), and uiDefIconTextButR_prop().

◆ ui_def_but_rna__menu()

◆ ui_def_but_rna__menu_type()

void ui_def_but_rna__menu_type ( bContext * C,
uiLayout * layout,
void * but_p )
static

◆ ui_def_but_rna__panel_type()

void ui_def_but_rna__panel_type ( bContext * C,
uiLayout * layout,
void * arg )
static

◆ ui_def_but_rna_propname()

uiBut * ui_def_but_rna_propname ( uiBlock * block,
ButType type,
int retval,
std::optional< StringRef > str,
int x,
int y,
short width,
short height,
PointerRNA * ptr,
const StringRefNull propname,
int index,
float min,
float max,
const std::optional< StringRef > tip )
static

◆ UI_exit()

void UI_exit ( )

Definition at line 7087 of file interface.cc.

References ui_but_clipboard_free(), and ui_resources_free().

Referenced by WM_exit_ex().

◆ ui_fontscale()

void ui_fontscale ( float * points,
float aspect )

◆ ui_get_but_scale_unit()

double ui_get_but_scale_unit ( uiBut * but,
double value )
static

◆ ui_get_but_step_unit()

◆ ui_get_but_string_unit()

void ui_get_but_string_unit ( uiBut * but,
char * str,
int str_maxncpy,
double value,
bool pad,
int float_precision )
static

◆ UI_init()

void UI_init ( )

Definition at line 7057 of file interface.cc.

References ui_resources_init().

Referenced by WM_init().

◆ UI_init_userdef()

void UI_init_userdef ( )

Definition at line 7062 of file interface.cc.

References uiStyleInit().

Referenced by wm_init_userdef().

◆ UI_interface_tag_script_reload()

void UI_interface_tag_script_reload ( )

Definition at line 7093 of file interface.cc.

References ui_interface_tag_script_reload_queries().

Referenced by WM_script_tag_reload().

◆ ui_menu_block_set_keyaccels()

void ui_menu_block_set_keyaccels ( uiBlock * block)
static

◆ ui_menu_block_set_keymaps()

◆ ui_number_from_string()

◆ ui_number_from_string_factor()

bool ui_number_from_string_factor ( bContext * C,
const char * str,
double * r_value )
static

◆ ui_number_from_string_percentage()

bool ui_number_from_string_percentage ( bContext * C,
const char * str,
double * r_value )
static

◆ ui_number_from_string_units()

bool ui_number_from_string_units ( bContext * C,
const char * str,
const int unit_type,
const UnitSettings * unit,
double * r_value )
static

◆ ui_number_from_string_units_with_but()

bool ui_number_from_string_units_with_but ( bContext * C,
const char * str,
const uiBut * but,
double * r_value )
static

◆ UI_preview_tile_size_x()

int UI_preview_tile_size_x ( const int size_px = 96)

Get the scaled size for a preview button (typically #UI_BTyPE_PREVIEW_TILE) based on size_px plus padding.

Definition at line 5241 of file interface.cc.

References pad, PREVIEW_TILE_PAD, round_fl_to_int(), and UI_UNIT_X.

Referenced by blender::ui::AbstractGridView::AbstractGridView(), blender::ed::asset::shelf::asset_shelf_default_tile_height(), blender::ed::asset::shelf::tile_width(), and ui_template_list_layout_draw().

◆ UI_preview_tile_size_y()

◆ UI_preview_tile_size_y_no_label()

int UI_preview_tile_size_y_no_label ( const int size_px)

◆ UI_region_message_subscribe()

void UI_region_message_subscribe ( ARegion * region,
wmMsgBus * mbus )

◆ ui_region_to_window() [1/2]

void ui_region_to_window ( const ARegion * region,
int * x,
int * y )

Definition at line 261 of file interface.cc.

References ARegion::winrct, x, rcti::xmin, y, and rcti::ymin.

Referenced by select_operator_view_and_item_find_xy().

◆ ui_region_to_window() [2/2]

void ui_region_to_window ( const ARegion * region,
int region_x,
int region_y,
int * r_window_x,
int * r_window_y )

Definition at line 267 of file interface.cc.

References ARegion::winrct, rcti::xmin, and rcti::ymin.

◆ ui_region_winrct_get_no_margin()

void ui_region_winrct_get_no_margin ( const ARegion * region,
rcti * r_rect )

Popups will add a margin to ARegion.winrct for shadow, for interactivity (point-inside tests for eg), we want the winrct without the margin added.

Definition at line 388 of file interface.cc.

References BLI_rcti_rctf_copy_floor(), BLI_rcti_translate(), uiBlock::flag, uiBlock::rect, ARegion::runtime, UI_BLOCK_LOOP, UI_BLOCK_PIE_MENU, ARegion::winrct, rcti::xmin, and rcti::ymin.

Referenced by ui_region_contains_point_px(), ui_region_contains_rect_px(), and ui_screen_region_find_mouse_over_ex().

◆ UI_reinit_font()

void UI_reinit_font ( )

Definition at line 7068 of file interface.cc.

References uiStyleInit().

Referenced by reloadtranslation_exec().

◆ ui_to_pixelrect()

rcti ui_to_pixelrect ( const ARegion * region,
const uiBlock * block,
const rctf * src_rect )

◆ ui_update_flexible_spacing()

◆ UI_update_text_styles()

◆ ui_update_window_matrix()

void ui_update_window_matrix ( const wmWindow * window,
const ARegion * region,
uiBlock * block )
static

◆ ui_window_to_block()

◆ ui_window_to_block_fl()

◆ ui_window_to_block_rctf()

void ui_window_to_block_rctf ( const ARegion * region,
const uiBlock * block,
rctf * rct_dst,
const rctf * rct_src )

Definition at line 218 of file interface.cc.

References ui_window_to_block_fl(), rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.

Referenced by ui_but_find_rect_over().

◆ ui_window_to_region()

void ui_window_to_region ( const ARegion * region,
int * x,
int * y )

Definition at line 239 of file interface.cc.

References ARegion::winrct, x, rcti::xmin, y, and rcti::ymin.

Referenced by ui_region_contains_point_px().

◆ ui_window_to_region_rctf()

void ui_window_to_region_rctf ( const ARegion * region,
rctf * rect_dst,
const rctf * rct_src )

Definition at line 253 of file interface.cc.

References ARegion::winrct, rctf::xmax, rctf::xmin, rcti::xmin, rctf::ymax, rctf::ymin, and rcti::ymin.

◆ ui_window_to_region_rcti()

void ui_window_to_region_rcti ( const ARegion * region,
rcti * rect_dst,
const rcti * rct_src )

Definition at line 245 of file interface.cc.

References ARegion::winrct, rcti::xmax, rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by ui_region_contains_rect_px().

◆ uiDefBlockBut()

uiBut * uiDefBlockBut ( uiBlock * block,
uiBlockCreateFunc func,
void * arg,
const StringRef str,
int x,
int y,
short width,
short height,
const std::optional< StringRef > tip )

◆ uiDefBlockButN()

uiBut * uiDefBlockButN ( uiBlock * block,
uiBlockCreateFunc func,
void * argN,
const StringRef str,
int x,
int y,
short width,
short height,
const std::optional< StringRef > tip,
uiButArgNFree func_argN_free_fn,
uiButArgNCopy func_argN_copy_fn )

◆ uiDefBut()

uiBut * uiDefBut ( uiBlock * block,
uiButTypeWithPointerType but_and_ptr_type,
int retval,
const StringRef str,
int x,
int y,
short width,
short height,
void * poin,
float min,
float max,
const std::optional< StringRef > tip )

Definition at line 5069 of file interface.cc.

References max, min, str, ui_but_update(), ui_def_but(), x, and y.

Referenced by blender::ui::AbstractViewItem::add_rename_button(), blender::ed::asset::shelf::add_tab_button(), blender::ui::TreeViewLayoutBuilder::build_from_tree(), blender::ui::PreviewGridItem::build_grid_tile_button(), blender::ui::TreeViewLayoutBuilder::build_row(), colorband_buttons_layout(), blender::ed::space_node::create_search_popup_block(), create_title_button(), curvemap_buttons_layout(), CurveProfile_buttons_layout(), blender::ed::vse::draw_channel_labels(), envelope_panel_draw(), file_add_preview_drag_but(), file_draw_list(), blender::ed::outliner::merged_element_search_menu(), blender::ed::space_node::node_draw_basis(), blender::ed::space_node::node_draw_collapsed(), blender::ed::space_node::node_draw_extra_info_row(), blender::ed::space_node::node_draw_panels(), blender::ed::space_node::node_find_menu(), uiLayout::op_enum_items(), blender::ed::outliner::outliner_buttons(), blender::ed::outliner::outliner_draw_overrides_rna_buts(), blender::ed::outliner::outliner_draw_userbuts(), uiLayout::progress_indicator(), uiLayout::prop(), blender::ed::space_node::reroute_node_draw_label(), uiLayout::separator(), uiLayout::separator_spacer(), template_common_search_menu(), template_ID(), ui_alert_create(), ui_block_colorpicker(), ui_def_but_rna__menu(), ui_imageuser_layer_menu(), ui_imageuser_pass_menu(), ui_imageuser_slot_menu(), ui_imageuser_view_menu_multiview(), ui_imageuser_view_menu_rr(), ui_item_array(), ui_item_disabled(), ui_item_with_label(), ui_layout_add_padding_button(), ui_layout_box(), blender::ed::space_node::ui_node_menu_column(), UI_pie_menu_begin(), ui_template_list_layout_draw(), blender::ed::space_node::ui_template_node_link_menu(), uiDefAutoButR(), uiDefButBit(), uiDefButC(), uiDefButF(), uiDefButI(), uiDefButS(), uiItem_simple(), uiLayoutListItemAddPadding(), uiTemplateHistogram(), uiTemplateMarker(), uiTemplateMovieClip(), uiTemplateNodeSocket(), uiTemplatePreview(), uiTemplateReportsBanner(), uiTemplateStatusInfo(), uiTemplateTrack(), uiTemplateVectorscope(), uiTemplateWaveform(), v3d_editvertex_buts(), v3d_object_dimension_buts(), view3d_panel_curve_data(), wm_block_dialog_create(), wm_block_insert_unicode_create(), wm_block_search_menu(), wm_block_splash_add_label(), and wm_enum_search_menu().

◆ uiDefButAlert()

uiBut * uiDefButAlert ( uiBlock * block,
int icon,
int x,
int y,
short width,
short height )

◆ uiDefButBit()

uiBut * uiDefButBit ( uiBlock * block,
uiButTypeWithPointerType but_and_ptr_type,
int bit,
int retval,
const StringRef str,
int x,
int y,
short width,
short height,
void * poin,
float min,
float max,
const std::optional< StringRef > tip )
static

◆ uiDefButBitC()

uiBut * uiDefButBitC ( uiBlock * block,
ButType type,
int bit,
int retval,
const StringRef str,
int x,
int y,
short width,
short height,
char * poin,
float min,
float max,
const std::optional< StringRef > tip )

Definition at line 5465 of file interface.cc.

References Char, max, min, str, uiDefButBit(), x, and y.

Referenced by block_create__close_file_dialog().

◆ uiDefButBitI()

uiBut * uiDefButBitI ( uiBlock * block,
ButType type,
int bit,
int retval,
const StringRef str,
int x,
int y,
short width,
short height,
int * poin,
float min,
float max,
const std::optional< StringRef > tip )

Definition at line 5357 of file interface.cc.

References Int, max, min, str, uiDefButBit(), x, and y.

Referenced by curvemap_clipping_func(), and uiTemplateMarker().

◆ uiDefButBitS()

uiBut * uiDefButBitS ( uiBlock * block,
ButType type,
int bit,
int retval,
const StringRef str,
int x,
int y,
short width,
short height,
short * poin,
float min,
float max,
const std::optional< StringRef > tip )

Definition at line 5411 of file interface.cc.

References max, min, Short, str, uiDefButBit(), x, and y.

Referenced by v3d_editvertex_buts().

◆ uiDefButC()

uiBut * uiDefButC ( uiBlock * block,
ButType type,
int retval,
const StringRef str,
int x,
int y,
short width,
short height,
char * poin,
float min,
float max,
const std::optional< StringRef > tip )

◆ uiDefButF()

uiBut * uiDefButF ( uiBlock * block,
ButType type,
int retval,
const StringRef str,
int x,
int y,
short width,
short height,
float * poin,
float min,
float max,
const std::optional< StringRef > tip )

◆ uiDefButI()

uiBut * uiDefButI ( uiBlock * block,
ButType type,
int retval,
const StringRef str,
int x,
int y,
short width,
short height,
int * poin,
float min,
float max,
const std::optional< StringRef > tip )

◆ uiDefButImage()

uiBut * uiDefButImage ( uiBlock * block,
void * imbuf,
int x,
int y,
short width,
short height,
const uchar color[4] )

◆ uiDefButO()

uiBut * uiDefButO ( uiBlock * block,
ButType type,
const StringRefNull opname,
blender::wm::OpCallContext opcontext,
std::optional< StringRef > str,
int x,
int y,
short width,
short height,
const std::optional< StringRef > tip )

◆ uiDefButO_ptr()

uiBut * uiDefButO_ptr ( uiBlock * block,
ButType type,
wmOperatorType * ot,
blender::wm::OpCallContext opcontext,
const StringRef str,
int x,
int y,
short width,
short height,
const std::optional< StringRef > tip )

Definition at line 5534 of file interface.cc.

References ot, str, ui_but_update(), ui_def_but_operator_ptr(), x, and y.

Referenced by uiDefButO(), uiItemFullO_ptr_ex(), and view3d_panel_vgroup().

◆ uiDefButR()

◆ uiDefButR_prop()

uiBut * uiDefButR_prop ( uiBlock * block,
ButType type,
int retval,
const std::optional< StringRef > str,
int x,
int y,
short width,
short height,
PointerRNA * ptr,
PropertyRNA * prop,
int index,
float min,
float max,
const std::optional< StringRef > tip )

◆ uiDefButS()

uiBut * uiDefButS ( uiBlock * block,
ButType type,
int retval,
const StringRef str,
int x,
int y,
short width,
short height,
short * poin,
float min,
float max,
const std::optional< StringRef > tip )

◆ uiDefIconBlockBut()

uiBut * uiDefIconBlockBut ( uiBlock * block,
uiBlockCreateFunc func,
void * arg,
int retval,
int icon,
int x,
int y,
short width,
short height,
std::optional< blender::StringRef > tip )

◆ uiDefIconBut()

◆ uiDefIconButBit()

uiBut * uiDefIconButBit ( uiBlock * block,
uiButTypeWithPointerType but_and_ptr_type,
int bit,
int retval,
int icon,
int x,
int y,
short width,
short height,
void * poin,
float min,
float max,
const std::optional< StringRef > tip )
static

◆ uiDefIconButBitC()

uiBut * uiDefIconButBitC ( uiBlock * block,
ButType type,
int bit,
int retval,
int icon,
int x,
int y,
short width,
short height,
char * poin,
float min,
float max,
const std::optional< StringRef > tip )

Definition at line 5751 of file interface.cc.

References Char, max, min, uiDefIconButBit(), x, and y.

Referenced by blender::ui::TreeViewLayoutBuilder::build_from_tree(), and draw_setting_widget().

◆ uiDefIconButBitI()

uiBut * uiDefIconButBitI ( uiBlock * block,
ButType type,
int bit,
int retval,
int icon,
int x,
int y,
short width,
short height,
int * poin,
float min,
float max,
const std::optional< StringRef > tip )

◆ uiDefIconButBitS()

uiBut * uiDefIconButBitS ( uiBlock * block,
ButType type,
int bit,
int retval,
int icon,
int x,
int y,
short width,
short height,
short * poin,
float min,
float max,
const std::optional< StringRef > tip )

◆ uiDefIconButI()

uiBut * uiDefIconButI ( uiBlock * block,
ButType type,
int retval,
int icon,
int x,
int y,
short width,
short height,
int * poin,
float min,
float max,
const std::optional< StringRef > tip )

◆ uiDefIconButO()

◆ uiDefIconButO_ptr()

uiBut * uiDefIconButO_ptr ( uiBlock * block,
ButType type,
wmOperatorType * ot,
blender::wm::OpCallContext opcontext,
int icon,
int x,
int y,
short width,
short height,
const std::optional< StringRef > tip )

◆ uiDefIconButR()

uiBut * uiDefIconButR ( uiBlock * block,
ButType type,
int retval,
int icon,
int x,
int y,
short width,
short height,
PointerRNA * ptr,
const StringRefNull propname,
int index,
float min,
float max,
const std::optional< StringRef > tip )

Definition at line 5779 of file interface.cc.

References max, min, ptr, ui_but_update_and_icon_set(), ui_def_but_rna_propname(), x, and y.

Referenced by template_ID().

◆ uiDefIconButR_prop()

uiBut * uiDefIconButR_prop ( uiBlock * block,
ButType type,
int retval,
int icon,
int x,
int y,
short width,
short height,
PointerRNA * ptr,
PropertyRNA * prop,
int index,
float min,
float max,
const std::optional< StringRef > tip )

◆ uiDefIconButS()

uiBut * uiDefIconButS ( uiBlock * block,
ButType type,
int retval,
int icon,
int x,
int y,
short width,
short height,
short * poin,
float min,
float max,
const std::optional< StringRef > tip )

Definition at line 5697 of file interface.cc.

References max, min, Short, uiDefIconBut(), x, and y.

Referenced by uiTemplatePreview().

◆ uiDefIconMenuBut()

uiBut * uiDefIconMenuBut ( uiBlock * block,
uiMenuCreateFunc func,
void * arg,
int icon,
int x,
int y,
short width,
short height,
const std::optional< StringRef > tip )

◆ uiDefIconPreviewBut()

uiBut * uiDefIconPreviewBut ( uiBlock * block,
ButType type,
int retval,
int icon,
int x,
int y,
short width,
short height,
void * poin,
float min,
float max,
const std::optional< StringRef > tip )

◆ uiDefIconTextBut()

uiBut * uiDefIconTextBut ( uiBlock * block,
uiButTypeWithPointerType but_and_ptr_type,
int retval,
int icon,
blender::StringRef str,
int x,
int y,
short width,
short height,
void * poin,
std::optional< blender::StringRef > tip )

Button containing both string label and icon.

Definition at line 5850 of file interface.cc.

References uiBut::drawflag, str, UI_BUT_ICON_LEFT, ui_but_update_and_icon_set(), ui_def_but(), x, and y.

Referenced by block_create_autorun_warning(), colorband_buttons_layout(), colorband_tools_fn(), create_title_button(), curve_profile_presets_fn(), curve_profile_tools_fn(), curvemap_tools_func(), CurveProfile_buttons_layout(), blender::ed::spreadsheet::SpreadsheetLayoutDrawer::draw_byte_color(), blender::ed::spreadsheet::SpreadsheetLayoutDrawer::draw_content_cell_value(), blender::ed::spreadsheet::SpreadsheetLayoutDrawer::draw_float_vector(), blender::ed::spreadsheet::SpreadsheetLayoutDrawer::draw_int(), blender::ed::spreadsheet::SpreadsheetLayoutDrawer::draw_int_vector(), blender::ed::spreadsheet::SpreadsheetLayoutDrawer::draw_left_column_cell(), blender::ed::spreadsheet::SpreadsheetLayoutDrawer::draw_top_row_cell(), blender::ed::spreadsheet::SpreadsheetLayoutDrawer::draw_undrawable(), graph_draw_driver_settings_panel(), uiLayout::panel_prop(), save_file_overwrite_cancel_button(), save_file_overwrite_confirm_button(), save_file_overwrite_saveas_button(), template_ID(), template_id_def_new_but(), template_operator_property_buts_draw_single(), template_texture_user_menu(), ui_imageuser_slot_menu(), blender::ed::space_node::ui_node_menu_column(), UI_pie_menu_begin(), ui_pie_menu_level_create(), UI_popup_block_template_confirm_op(), ui_popup_context_menu_for_button(), uiDefIconTextButI(), uiDefIconTextButS(), uiItem_simple(), uiTemplateRunningJobs(), wm_block_file_close_cancel_button(), wm_block_file_close_discard_button(), wm_block_file_close_save_button(), and wm_block_insert_unicode_create().

◆ uiDefIconTextButI()

uiBut * uiDefIconTextButI ( uiBlock * block,
ButType type,
int retval,
int icon,
const StringRef str,
int x,
int y,
short width,
short height,
int * poin,
const std::optional< StringRef > tip )

Definition at line 5868 of file interface.cc.

References Int, str, uiDefIconTextBut(), x, and y.

Referenced by ui_def_but_rna__menu().

◆ uiDefIconTextButO()

uiBut * uiDefIconTextButO ( uiBlock * block,
ButType type,
const StringRefNull opname,
blender::wm::OpCallContext opcontext,
int icon,
const StringRef str,
int x,
int y,
short width,
short height,
const std::optional< StringRef > tip )

◆ uiDefIconTextButO_ptr()

uiBut * uiDefIconTextButO_ptr ( uiBlock * block,
ButType type,
wmOperatorType * ot,
blender::wm::OpCallContext opcontext,
int icon,
const StringRef str,
int x,
int y,
short width,
short height,
const std::optional< StringRef > tip )

◆ uiDefIconTextButR()

◆ uiDefIconTextButR_prop()

uiBut * uiDefIconTextButR_prop ( uiBlock * block,
ButType type,
int retval,
int icon,
const std::optional< blender::StringRef > str,
int x,
int y,
short width,
short height,
PointerRNA * ptr,
PropertyRNA * prop,
int index,
float min,
float max,
const std::optional< StringRef > tip )

◆ uiDefIconTextButS()

uiBut * uiDefIconTextButS ( uiBlock * block,
ButType type,
int retval,
int icon,
const StringRef str,
int x,
int y,
short width,
short height,
short * poin,
const std::optional< StringRef > tip )

Definition at line 5892 of file interface.cc.

References Short, str, uiDefIconTextBut(), x, and y.

◆ uiDefIconTextMenuBut()

uiBut * uiDefIconTextMenuBut ( uiBlock * block,
uiMenuCreateFunc func,
void * arg,
int icon,
const StringRef str,
int x,
int y,
short width,
short height,
const std::optional< StringRef > tip )

◆ uiDefMenuBut()

uiBut * uiDefMenuBut ( uiBlock * block,
uiMenuCreateFunc func,
void * arg,
const StringRef str,
int x,
int y,
short width,
short height,
const std::optional< StringRef > tip )

◆ uiDefSearchBut()

uiBut * uiDefSearchBut ( uiBlock * block,
void * arg,
int retval,
int icon,
int maxncpy,
int x,
int y,
short width,
short height,
std::optional< blender::StringRef > tip )

◆ uiDefSearchButO_ptr()

uiBut * uiDefSearchButO_ptr ( uiBlock * block,
wmOperatorType * ot,
IDProperty * properties,
void * arg,
int retval,
int icon,
int maxncpy,
int x,
int y,
short width,
short height,
std::optional< blender::StringRef > tip )

Same parameters as for uiDefSearchBut, with additional operator type and properties, used by callback to call again the right op with the right options (properties values).

Definition at line 6685 of file interface.cc.

References blender::wm::ExecDefault, IDP_CopyProperty(), uiBut::opcontext, operator_enum_search_exec_fn(), operator_enum_search_update_fn(), uiBut::optype, ot, ptr, UI_but_func_search_set(), UI_but_operator_ptr_ensure(), ui_searchbox_create_generic(), uiDefSearchBut(), x, and y.

Referenced by wm_enum_search_menu().

Variable Documentation

◆ LOG

CLG_LogRef LOG = {"ui"}
static

Definition at line 82 of file interface.cc.

◆ ui_radial_dir_order

const char ui_radial_dir_order[8]
Initial value:

Definition at line 1659 of file interface.cc.

Referenced by ui_get_radialbut_vec().

◆ ui_radial_dir_to_angle

const short ui_radial_dir_to_angle[8] = {90, 45, 0, 315, 270, 225, 180, 135}

Definition at line 1671 of file interface.cc.

Referenced by ui_but_pie_dir().

◆ ui_radial_dir_to_numpad

const char ui_radial_dir_to_numpad[8] = {8, 9, 6, 3, 2, 1, 4, 7}

Definition at line 1670 of file interface.cc.

Referenced by ui_but_pie_direction_string().