Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/interface/interface_intern.h')
-rw-r--r--source/blender/editors/interface/interface_intern.h264
1 files changed, 250 insertions, 14 deletions
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index 8c33e2d1cc9..dc8744aaae9 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -351,15 +351,6 @@ typedef struct uiButProgressbar {
float progress;
} uiButProgressbar;
-/** Derived struct for #UI_BTYPE_DATASETROW. */
-typedef struct uiButDatasetRow {
- uiBut but;
-
- uint8_t geometry_component_type;
- uint8_t attribute_domain;
- int indentation;
-} uiButDatasetRow;
-
/** Derived struct for #UI_BTYPE_TREEROW. */
typedef struct uiButTreeRow {
uiBut but;
@@ -629,6 +620,9 @@ extern void ui_block_to_window_rctf(const struct ARegion *region,
rctf *rct_dst,
const rctf *rct_src);
extern float ui_block_to_window_scale(const struct ARegion *region, uiBlock *block);
+/**
+ * For mouse cursor.
+ */
extern void ui_window_to_block_fl(const struct ARegion *region,
uiBlock *block,
float *x,
@@ -646,23 +640,52 @@ extern void ui_window_to_region_rctf(const struct ARegion *region,
rctf *rect_dst,
const rctf *rct_src);
extern void ui_region_to_window(const struct ARegion *region, int *x, int *y);
+/**
+ * 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.
+ */
extern void ui_region_winrct_get_no_margin(const struct ARegion *region, struct rcti *r_rect);
+/**
+ * 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.
+ */
uiBut *ui_but_change_type(uiBut *but, eButType new_type);
extern double ui_but_value_get(uiBut *but);
extern void ui_but_value_set(uiBut *but, double value);
+/**
+ * For picker, while editing HSV.
+ */
extern void ui_but_hsv_set(uiBut *but);
+/**
+ * For buttons pointing to color for example.
+ */
extern void ui_but_v3_get(uiBut *but, float vec[3]);
+/**
+ * For buttons pointing to color for example.
+ */
extern void ui_but_v3_set(uiBut *but, const float vec[3]);
extern void ui_hsvcircle_vals_from_pos(
const rcti *rect, const float mx, const float my, float *r_val_rad, float *r_val_dist);
+/**
+ * Cursor in HSV circle, in float units -1 to 1, to map on radius.
+ */
extern void ui_hsvcircle_pos_from_vals(
const ColorPicker *cpicker, const rcti *rect, const float *hsv, float *xpos, float *ypos);
extern void ui_hsvcube_pos_from_vals(
const struct uiButHSVCube *hsv_but, const rcti *rect, const float *hsv, float *xp, float *yp);
+/**
+ * \param float_precision: For number buttons the precision
+ * to use or -1 to fallback to the button default.
+ * \param use_exp_float: Use exponent representation of floats
+ * when out of reasonable range (outside of 1e3/1e-3).
+ */
extern void ui_but_string_get_ex(uiBut *but,
char *str,
const size_t maxlen,
@@ -670,7 +693,16 @@ extern void ui_but_string_get_ex(uiBut *but,
const bool use_exp_float,
bool *r_use_exp_float) ATTR_NONNULL(1, 2);
extern void ui_but_string_get(uiBut *but, char *str, const size_t maxlen) ATTR_NONNULL();
+/**
+ * A version of #ui_but_string_get_ex for dynamic buffer sizes
+ * (where #ui_but_string_get_max_length returns 0).
+ *
+ * \param r_str_size: size of the returned string (including terminator).
+ */
extern char *ui_but_string_get_dynamic(uiBut *but, int *r_str_size);
+/**
+ * \param str: will be overwritten.
+ */
extern void ui_but_convert_to_unit_alt_name(uiBut *but, char *str, size_t maxlen) ATTR_NONNULL();
extern bool ui_but_string_set(struct bContext *C, uiBut *but, const char *str) ATTR_NONNULL();
extern bool ui_but_string_eval_number(struct bContext *C,
@@ -678,12 +710,22 @@ extern bool ui_but_string_eval_number(struct bContext *C,
const char *str,
double *value) ATTR_NONNULL();
extern int ui_but_string_get_max_length(uiBut *but);
-/* Clear & exit the active button's string. */
+/**
+ * Clear & exit the active button's string..
+ */
extern void ui_but_active_string_clear_and_exit(struct bContext *C, uiBut *but) ATTR_NONNULL();
+/**
+ * Use handling code to set a string for the button. Handles the case where the string is set for a
+ * search button while the search menu is open, so the results are updated accordingly.
+ * This is basically the same as pasting the string into the button.
+ */
extern void ui_but_set_string_interactive(struct bContext *C, uiBut *but, const char *value);
extern uiBut *ui_but_drag_multi_edit_get(uiBut *but);
void ui_def_but_icon(uiBut *but, const int icon, const int flag);
+/**
+ * Avoid using this where possible since it's better not to ask for an icon in the first place.
+ */
void ui_def_but_icon_clear(uiBut *but);
void ui_but_extra_operator_icons_free(uiBut *but);
@@ -696,6 +738,11 @@ void ui_but_range_set_hard(uiBut *but);
void ui_but_range_set_soft(uiBut *but);
bool ui_but_context_poll_operator(struct bContext *C, struct wmOperatorType *ot, const uiBut *but);
+/**
+ * Check if the operator \a ot poll is successful with the context given by \a but (optionally).
+ * \param but: The 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).
+ */
bool ui_but_context_poll_operator_ex(struct bContext *C,
const uiBut *but,
const struct wmOperatorCallParams *optype_params);
@@ -706,10 +753,21 @@ extern PropertyScaleType ui_but_scale_type(const uiBut *but) ATTR_WARN_UNUSED_RE
extern bool ui_but_is_float(const uiBut *but) ATTR_WARN_UNUSED_RESULT;
extern bool ui_but_is_bool(const uiBut *but) ATTR_WARN_UNUSED_RESULT;
extern bool ui_but_is_unit(const uiBut *but) ATTR_WARN_UNUSED_RESULT;
+/**
+ * Check if this button is similar enough to be grouped with another.
+ */
extern bool ui_but_is_compatible(const uiBut *but_a, const uiBut *but_b) ATTR_WARN_UNUSED_RESULT;
extern bool ui_but_is_rna_valid(uiBut *but) ATTR_WARN_UNUSED_RESULT;
+/**
+ * Checks if the button supports cycling next/previous menu items (ctrl+mouse-wheel).
+ */
extern bool ui_but_supports_cycling(const uiBut *but) ATTR_WARN_UNUSED_RESULT;
+/**
+ * Check if the button is pushed, this is only meaningful for some button types.
+ *
+ * \return (0 == UNSELECT), (1 == SELECT), (-1 == DO-NOTHING)
+ */
extern int ui_but_is_pushed_ex(uiBut *but, double *value) ATTR_WARN_UNUSED_RESULT;
extern int ui_but_is_pushed(uiBut *but) ATTR_WARN_UNUSED_RESULT;
@@ -804,6 +862,7 @@ struct uiPopupBlockHandle {
/* interface_region_*.c */
/* interface_region_tooltip.c */
+
/* exposed as public API in UI_interface.h */
/* interface_region_color_picker.c */
@@ -811,6 +870,10 @@ void ui_color_picker_rgb_to_hsv_compat(const float rgb[3], float r_cp[3]);
void ui_color_picker_rgb_to_hsv(const float rgb[3], float r_cp[3]);
void ui_color_picker_hsv_to_rgb(const float r_cp[3], float rgb[3]);
+/**
+ * Returns true if the button is for a color with gamma baked in,
+ * or if it's a color picker for such a button.
+ */
bool ui_but_is_color_gamma(uiBut *but);
void ui_scene_linear_to_perceptual_space(uiBut *but, float rgb[3]);
@@ -820,7 +883,10 @@ uiBlock *ui_block_func_COLOR(struct bContext *C, uiPopupBlockHandle *handle, voi
ColorPicker *ui_block_colorpicker_create(struct uiBlock *block);
/* interface_region_search.c */
-/* Search-box for string button. */
+
+/**
+ * Search-box for string button.
+ */
struct ARegion *ui_searchbox_create_generic(struct bContext *C,
struct ARegion *butregion,
uiButSearch *search_but);
@@ -831,8 +897,14 @@ struct ARegion *ui_searchbox_create_menu(struct bContext *C,
struct ARegion *butregion,
uiButSearch *search_but);
+/**
+ * x and y in screen-coords.
+ */
bool ui_searchbox_inside(struct ARegion *region, const int xy[2]) ATTR_NONNULL(1, 2);
int ui_searchbox_find_index(struct ARegion *region, const char *name);
+/**
+ * Region is the search box itself.
+ */
void ui_searchbox_update(struct bContext *C, struct ARegion *region, uiBut *but, const bool reset);
int ui_searchbox_autocomplete(struct bContext *C, struct ARegion *region, uiBut *but, char *str);
bool ui_searchbox_event(struct bContext *C,
@@ -840,16 +912,26 @@ bool ui_searchbox_event(struct bContext *C,
uiBut *but,
struct ARegion *butregion,
const struct wmEvent *event);
+/**
+ * String validated to be of correct length (but->hardmax).
+ */
bool ui_searchbox_apply(uiBut *but, struct ARegion *region);
void ui_searchbox_free(struct bContext *C, struct ARegion *region);
+/**
+ * XXX weak: search_func adds all partial matches.
+ */
void ui_but_search_refresh(uiButSearch *but);
/* interface_region_menu_popup.c */
+
int ui_but_menu_step(uiBut *but, int direction);
bool ui_but_menu_step_poll(const uiBut *but);
uiBut *ui_popup_menu_memory_get(struct uiBlock *block);
void ui_popup_menu_memory_set(uiBlock *block, struct uiBut *but);
+/**
+ * Called for creating new popups and refreshing existing ones.
+ */
uiBlock *ui_popup_block_refresh(struct bContext *C,
uiPopupBlockHandle *handle,
struct ARegion *butregion,
@@ -869,6 +951,7 @@ uiPopupBlockHandle *ui_popup_menu_create(struct bContext *C,
void *arg);
/* interface_region_popover.c */
+
uiPopupBlockHandle *ui_popover_panel_create(struct bContext *C,
struct ARegion *butregion,
uiBut *but,
@@ -876,6 +959,10 @@ uiPopupBlockHandle *ui_popover_panel_create(struct bContext *C,
void *arg);
/* interface_region_menu_pie.c */
+
+/**
+ * Set up data for defining a new pie menu level and add button that invokes it.
+ */
void ui_pie_menu_level_create(uiBlock *block,
struct wmOperatorType *ot,
const char *propname,
@@ -886,6 +973,10 @@ void ui_pie_menu_level_create(uiBlock *block,
int flag);
/* interface_region_popup.c */
+
+/**
+ * Translate any popup regions (so we can drag them).
+ */
void ui_popup_translate(struct ARegion *region, const int mdiff[2]);
void ui_popup_block_free(struct bContext *C, uiPopupBlockHandle *handle);
void ui_popup_block_scrolltest(struct uiBlock *block);
@@ -893,10 +984,19 @@ void ui_popup_block_scrolltest(struct uiBlock *block);
/* end interface_region_*.c */
/* interface_panel.c */
+
+/**
+ * Handle region panel events like opening and closing panels, changing categories, etc.
+ *
+ * \note Could become a modal key-map.
+ */
extern int ui_handler_panel_region(struct bContext *C,
const struct wmEvent *event,
struct ARegion *region,
const uiBut *active_but);
+/**
+ * Draw a panel integrated in buttons-window, tool/property lists etc.
+ */
extern void ui_draw_aligned_panel(const struct uiStyle *style,
const uiBlock *block,
const rcti *rect,
@@ -906,14 +1006,20 @@ extern void ui_draw_aligned_panel(const struct uiStyle *style,
void ui_panel_tag_search_filter_match(struct Panel *panel);
/* interface_draw.c */
+
extern void ui_draw_dropshadow(
const rctf *rct, float radius, float aspect, float alpha, int select);
+/**
+ * Draws in resolution of 48x4 colors.
+ */
void ui_draw_gradient(const rcti *rect,
const float hsv[3],
const eButGradientType type,
const float alpha);
+/* based on UI_draw_roundbox_gl_mode,
+ * check on making a version which allows us to skip some sides */
void ui_draw_but_TAB_outline(const rcti *rect,
float rad,
uchar highlight[3],
@@ -931,11 +1037,17 @@ void ui_draw_but_VECTORSCOPE(struct ARegion *region,
const struct uiWidgetColors *wcol,
const rcti *rect);
void ui_draw_but_COLORBAND(uiBut *but, const struct uiWidgetColors *wcol, const rcti *rect);
-void ui_draw_but_UNITVEC(uiBut *but, const struct uiWidgetColors *wcol, const rcti *rect);
+void ui_draw_but_UNITVEC(uiBut *but,
+ const struct uiWidgetColors *wcol,
+ const rcti *rect,
+ const float radius);
void ui_draw_but_CURVE(struct ARegion *region,
uiBut *but,
const struct uiWidgetColors *wcol,
const rcti *rect);
+/**
+ * Draws the curve profile widget. Somewhat similar to ui_draw_but_CURVE.
+ */
void ui_draw_but_CURVEPROFILE(struct ARegion *region,
uiBut *but,
const struct uiWidgetColors *wcol,
@@ -950,8 +1062,19 @@ void ui_draw_but_TRACKPREVIEW(struct ARegion *region,
const rcti *rect);
/* interface_undo.c */
+
+/**
+ * Start the undo stack.
+ *
+ * \note The current state should be pushed immediately after calling this.
+ */
struct uiUndoStack_Text *ui_textedit_undo_stack_create(void);
void ui_textedit_undo_stack_destroy(struct uiUndoStack_Text *undo_stack);
+/**
+ * Push the information in the arguments to a new state in the undo stack.
+ *
+ * \note Currently the total length of the undo stack is not limited.
+ */
void ui_textedit_undo_push(struct uiUndoStack_Text *undo_stack,
const char *text,
int cursor_index);
@@ -960,10 +1083,25 @@ const char *ui_textedit_undo(struct uiUndoStack_Text *undo_stack,
int *r_cursor_index);
/* interface_handlers.c */
+
extern void ui_handle_afterfunc_add_operator(struct wmOperatorType *ot,
wmOperatorCallContext opcontext);
+/**
+ * Assumes event type is MOUSEPAN.
+ */
extern void ui_pan_to_scroll(const struct wmEvent *event, int *type, int *val);
+/**
+ * Exported to interface.c: #UI_but_active_only()
+ * \note The region is only for the button.
+ * The context needs to be set by the caller.
+ */
extern void ui_but_activate_event(struct bContext *C, struct ARegion *region, uiBut *but);
+/**
+ * Simulate moving the mouse over a button (or navigating to it with arrow keys).
+ *
+ * exported so menus can start with a highlighted button,
+ * even if the mouse isn't over it
+ */
extern void ui_but_activate_over(struct bContext *C, struct ARegion *region, uiBut *but);
extern void ui_but_execute_begin(struct bContext *C,
struct ARegion *region,
@@ -974,13 +1112,25 @@ extern void ui_but_execute_end(struct bContext *C,
uiBut *but,
void *active_back);
extern void ui_but_active_free(const struct bContext *C, uiBut *but);
+/**
+ * In some cases we may want to update the view (#View2D) in-between layout definition and drawing.
+ * E.g. to make sure a button is visible while editing.
+ */
extern void ui_but_update_view_for_active(const struct bContext *C, const uiBlock *block);
extern int ui_but_menu_direction(uiBut *but);
extern void ui_but_text_password_hide(char password_str[128], uiBut *but, const bool restore);
+/**
+ * Finds the pressed button in an aligned row (typically an expanded enum).
+ *
+ * \param direction: Use when there may be multiple buttons pressed.
+ */
extern uiBut *ui_but_find_select_in_enum(uiBut *but, int direction);
bool ui_but_is_editing(const uiBut *but);
float ui_block_calc_pie_segment(struct uiBlock *block, const float event_xy[2]);
+/* XXX, this code will shorten any allocated string to 'UI_MAX_NAME_STR'
+ * since this is really long its unlikely to be an issue,
+ * but this could be supported */
void ui_but_add_shortcut(uiBut *but, const char *shortcut_str, const bool do_strip);
void ui_but_clipboard_free(void);
bool ui_but_rna_equals(const uiBut *a, const uiBut *b);
@@ -1045,6 +1195,9 @@ void ui_draw_widget_menu_back_color(const rcti *rect, bool use_shadow, const flo
void ui_draw_widget_menu_back(const rcti *rect, bool use_shadow);
void ui_draw_tooltip_background(const struct uiStyle *style, uiBlock *block, rcti *rect);
+/**
+ * Conversion from old to new buttons, so still messy.
+ */
extern void ui_draw_but(const struct bContext *C,
struct ARegion *region,
struct uiStyle *style,
@@ -1065,6 +1218,15 @@ typedef enum {
* get clipped before the normal text. */
UI_MENU_ITEM_SEPARATOR_HINT,
} uiMenuItemSeparatorType;
+/**
+ * Helper call to draw a menu item without a button.
+ *
+ * \param state: The state of the button,
+ * typically #UI_ACTIVE, #UI_BUT_DISABLED, #UI_BUT_INACTIVE.
+ * \param separator_type: The kind of separator which controls if and how the string is clipped.
+ * \param r_xmax: The right hand position of the text, this takes into the icon,
+ * padding and text clipping when there is not enough room to display the full text.
+ */
void ui_draw_menu_item(const struct uiFontStyle *fstyle,
rcti *rect,
const char *name,
@@ -1078,6 +1240,10 @@ void ui_draw_preview_item(const struct uiFontStyle *fstyle,
int iconid,
int state,
eFontStyle_Align text_align);
+/**
+ * Version of #ui_draw_preview_item() that does not draw the menu background and item text based on
+ * state. It just draws the preview and text directly.
+ */
void ui_draw_preview_item_stateless(const struct uiFontStyle *fstyle,
rcti *rect,
const char *name,
@@ -1087,59 +1253,102 @@ void ui_draw_preview_item_stateless(const struct uiFontStyle *fstyle,
#define UI_TEXT_MARGIN_X 0.4f
#define UI_POPUP_MARGIN (UI_DPI_FAC * 12)
-/* Margin at top of screen for popups. Note this value must be sufficient
- * to draw a popover arrow to avoid cropping it. */
+/**
+ * Margin at top of screen for popups.
+ * Note this value must be sufficient to draw a popover arrow to avoid cropping it.
+ */
#define UI_POPUP_MENU_TOP (int)(10 * UI_DPI_FAC)
#define UI_PIXEL_AA_JITTER 8
extern const float ui_pixel_jitter[UI_PIXEL_AA_JITTER][2];
/* interface_style.c */
+
+/**
+ * Called on each startup.blend read,
+ * reading without #uiFont will create one.
+ */
void uiStyleInit(void);
/* interface_icons.c */
+
void ui_icon_ensure_deferred(const struct bContext *C, const int icon_id, const bool big);
int ui_id_icon_get(const struct bContext *C, struct ID *id, const bool big);
/* interface_icons_event.c */
+
void icon_draw_rect_input(
float x, float y, int w, int h, float alpha, short event_type, short event_value);
/* resources.c */
+
void ui_resources_init(void);
void ui_resources_free(void);
/* interface_layout.c */
+
void ui_layout_add_but(uiLayout *layout, uiBut *but);
void ui_layout_remove_but(uiLayout *layout, const uiBut *but);
+/**
+ * \return true if the button was successfully replaced.
+ */
bool ui_layout_replace_but_ptr(uiLayout *layout, const void *old_but_ptr, uiBut *new_but);
+/**
+ * \note May reallocate \a but, so the possibly new address is returned.
+ */
uiBut *ui_but_add_search(uiBut *but,
PointerRNA *ptr,
PropertyRNA *prop,
PointerRNA *searchptr,
PropertyRNA *searchprop);
+/**
+ * Check all buttons defined in this layout,
+ * and set any button flagged as UI_BUT_LIST_ITEM as active/selected.
+ * Needed to handle correctly text colors of active (selected) list item.
+ */
void ui_layout_list_set_labels_active(uiLayout *layout);
/* menu callback */
void ui_item_menutype_func(struct bContext *C, struct uiLayout *layout, void *arg_mt);
void ui_item_paneltype_func(struct bContext *C, struct uiLayout *layout, void *arg_pt);
/* interface_button_group.c */
+
+/**
+ * Every function that adds a set of buttons must create another group,
+ * then #ui_def_but adds buttons to the current group (the last).
+ */
void ui_block_new_button_group(uiBlock *block, uiButtonGroupFlag flag);
void ui_button_group_add_but(uiBlock *block, uiBut *but);
void ui_button_group_replace_but_ptr(uiBlock *block, const void *old_but_ptr, uiBut *new_but);
void ui_block_free_button_groups(uiBlock *block);
/* interface_align.c */
+
bool ui_but_can_align(const uiBut *but) ATTR_WARN_UNUSED_RESULT;
int ui_but_align_opposite_to_area_align_get(const struct ARegion *region) ATTR_WARN_UNUSED_RESULT;
+/**
+ * Compute the alignment of all 'align groups' of buttons in given block.
+ *
+ * This is using an order-independent algorithm,
+ * i.e. alignment of buttons should be OK regardless of order in which
+ * they are added to the block.
+ */
void ui_block_align_calc(uiBlock *block, const struct ARegion *region);
/* interface_anim.c */
+
void ui_but_anim_flag(uiBut *but, const struct AnimationEvalContext *anim_eval_context);
void ui_but_anim_copy_driver(struct bContext *C);
void ui_but_anim_paste_driver(struct bContext *C);
+/**
+ * \a str can be NULL to only perform check if \a but has an expression at all.
+ * \return if button has an expression.
+ */
bool ui_but_anim_expression_get(uiBut *but, char *str, size_t maxlen);
bool ui_but_anim_expression_set(uiBut *but, const char *str);
+/**
+ * Create new expression for button (i.e. a "scripted driver"), if it can be created.
+ */
bool ui_but_anim_expression_create(uiBut *but, const char *str);
void ui_but_anim_autokey(struct bContext *C, uiBut *but, struct Scene *scene, float cfra);
@@ -1147,9 +1356,15 @@ void ui_but_anim_decorate_cb(struct bContext *C, void *arg_but, void *arg_dummy)
void ui_but_anim_decorate_update_from_flag(uiButDecorator *but);
/* interface_query.c */
+
bool ui_but_is_editable(const uiBut *but) ATTR_WARN_UNUSED_RESULT;
bool ui_but_is_editable_as_text(const uiBut *but) ATTR_WARN_UNUSED_RESULT;
bool ui_but_is_toggle(const uiBut *but) ATTR_WARN_UNUSED_RESULT;
+/**
+ * Can we mouse over the button or is it hidden/disabled/layout.
+ * \note ctrl is kind of a hack currently,
+ * so that non-embossed UI_BTYPE_TEXT button behaves as a label when ctrl is not pressed.
+ */
bool ui_but_is_interactive(const uiBut *but, const bool labeledit) ATTR_WARN_UNUSED_RESULT;
bool ui_but_is_popover_once_compat(const uiBut *but) ATTR_WARN_UNUSED_RESULT;
bool ui_but_has_array_value(const uiBut *but) ATTR_WARN_UNUSED_RESULT;
@@ -1180,6 +1395,9 @@ uiBut *ui_tree_row_find_mouse_over(const struct ARegion *region, const int xy[2]
uiBut *ui_tree_row_find_active(const struct ARegion *region);
typedef bool (*uiButFindPollFn)(const uiBut *but, const void *customdata);
+/**
+ * x and y are only used in case event is NULL.
+ */
uiBut *ui_but_find_mouse_over_ex(const struct ARegion *region,
const int xy[2],
const bool labeledit,
@@ -1226,41 +1444,56 @@ bool ui_region_contains_point_px(const struct ARegion *region, const int xy[2])
ATTR_NONNULL(1, 2) ATTR_WARN_UNUSED_RESULT;
bool ui_region_contains_rect_px(const struct ARegion *region, const rcti *rect_px);
+/**
+ * Check if the cursor is over any popups.
+ */
struct ARegion *ui_screen_region_find_mouse_over_ex(struct bScreen *screen, const int xy[2])
ATTR_NONNULL(1, 2);
struct ARegion *ui_screen_region_find_mouse_over(struct bScreen *screen,
const struct wmEvent *event);
/* interface_context_menu.c */
+
bool ui_popup_context_menu_for_button(struct bContext *C, uiBut *but, const struct wmEvent *event);
+/**
+ * menu to show when right clicking on the panel header
+ */
void ui_popup_context_menu_for_panel(struct bContext *C,
struct ARegion *region,
struct Panel *panel);
/* interface_eyedropper.c */
+
struct wmKeyMap *eyedropper_modal_keymap(struct wmKeyConfig *keyconf);
struct wmKeyMap *eyedropper_colorband_modal_keymap(struct wmKeyConfig *keyconf);
/* interface_eyedropper_color.c */
+
void UI_OT_eyedropper_color(struct wmOperatorType *ot);
/* interface_eyedropper_colorband.c */
+
void UI_OT_eyedropper_colorramp(struct wmOperatorType *ot);
void UI_OT_eyedropper_colorramp_point(struct wmOperatorType *ot);
/* interface_eyedropper_datablock.c */
+
void UI_OT_eyedropper_id(struct wmOperatorType *ot);
/* interface_eyedropper_depth.c */
+
void UI_OT_eyedropper_depth(struct wmOperatorType *ot);
/* interface_eyedropper_driver.c */
+
void UI_OT_eyedropper_driver(struct wmOperatorType *ot);
/* interface_eyedropper_gpencil_color.c */
+
void UI_OT_eyedropper_gpencil_color(struct wmOperatorType *ot);
/* interface_template_asset_view.cc */
+
struct uiListType *UI_UL_asset_view(void);
/**
@@ -1286,12 +1519,15 @@ void ui_rna_collection_search_update_fn(const struct bContext *C,
const bool is_first);
/* interface_ops.c */
+
bool ui_jump_to_target_button_poll(struct bContext *C);
/* interface_queries.c */
+
void ui_interface_tag_script_reload_queries(void);
/* interface_view.cc */
+
void ui_block_free_views(struct uiBlock *block);
uiTreeViewHandle *ui_block_view_find_matching_in_old_block(const uiBlock *new_block,
const uiTreeViewHandle *new_view);