11#include <fmt/format.h>
75#include "RNA_prototypes.hh"
89#define KM_MODAL_CANCEL 1
90#define KM_MODAL_APPLY 2
91#define KM_MODAL_SNAP_ON 3
92#define KM_MODAL_SNAP_OFF 4
148 if (
G.is_rendering) {
166 if (screen ==
nullptr) {
261 if (region ==
nullptr) {
265 if (gzmap ==
nullptr) {
308 if (ob && ob == obedit) {
418 return (ob !=
nullptr);
578 if (obpose !=
nullptr) {
633 return nullptr != ((
Curve *)obedit->
data)->editnurb;
652 return nullptr != ((
Curve *)obedit->
data)->editnurb;
672 return nullptr != ((
Curve *)obedit->
data)->editnurb;
681 return nullptr != ((
Curve *)obedit->
data)->editfont;
690 return nullptr != ((
Lattice *)obedit->
data)->editlatt;
699 return nullptr != ((
MetaBall *)obedit->
data)->editelems;
806 rcti *rect,
const short ,
const short ,
const short x2,
const short y2)
814 *r_rect_clip = az->
rect;
931 if (mouse_sq < spot_sq) {
934 else if (mouse_sq < fadein_sq) {
937 else if (mouse_sq < fadeout_sq) {
938 az->
alpha = 1.0f - float(mouse_sq - fadein_sq) / float(fadeout_sq - fadein_sq);
966 else if (test_only) {
967 if (isect_value != 0) {
974 if (isect_value ==
'h') {
981 else if (isect_value ==
'v') {
990 float dist_fac = 0.0f, alpha = 0.0f;
994 CLAMP(dist_fac, 0.0f, 1.0f);
995 alpha = 1.0f - dist_fac;
1001 CLAMP(dist_fac, 0.0f, 1.0f);
1002 alpha = 1.0f - dist_fac;
1017 else if (!test_only && !
IS_EQF(az->
alpha, 0.0f)) {
1050 if (az !=
nullptr) {
1112 event.customdata_free =
true;
1134 sad->
x =
event->xy[0];
1135 sad->
y =
event->xy[1];
1162 switch (event->
type) {
1164 const int delta_x = (
event->xy[0] - sad->
x);
1165 const int delta_y = (
event->xy[1] - sad->
y);
1168 const int delta_max =
max_ii(
abs(delta_x),
abs(delta_y));
1171 const int join_threshold = (0.6 *
U.widget_unit);
1172 const int split_threshold = (1.2 *
U.widget_unit);
1173 const int area_threshold = (0.1 *
U.widget_unit);
1176 if (delta_y >
abs(delta_x)) {
1179 else if (delta_x >=
abs(delta_y)) {
1182 else if (delta_y < -
abs(delta_x)) {
1209 is_gesture = (delta_max > area_threshold);
1216 else if (area == sad->
sa1) {
1221 is_gesture = (delta_max > split_threshold);
1223 else if (!area || area->
global) {
1243 is_gesture = (delta_max > join_threshold);
1247#if defined(__APPLE__)
1257 is_gesture = (delta_max > area_threshold);
1294 ot->name =
"Handle Area Action Zones";
1295 ot->description =
"Handle area action zones for mouse actions/gestures";
1296 ot->idname =
"SCREEN_OT_actionzone";
1306 RNA_def_int(
ot->srna,
"modifier", 0, 0, 2,
"Modifier",
"Modifier state", 0, 2);
1316 const int cursor[2],
1328 if (actedge ==
nullptr) {
1388 if (sad ==
nullptr || sad->
sa1 ==
nullptr) {
1432 switch (event->
type) {
1438 status.
item(
IFACE_(
"Select Area"), ICON_MOUSE_LMB);
1439 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
1444 if (!sad->
sa2 || sad->
sa1 == sad->
sa2) {
1478 if (sa1 ==
nullptr || sa2 ==
nullptr) {
1487 ot->name =
"Swap Areas";
1488 ot->description =
"Swap selected areas screen positions";
1489 ot->idname =
"SCREEN_OT_area_swap";
1501 ot->srna,
"cursor", 2,
nullptr, INT_MIN, INT_MAX,
"Cursor",
"", INT_MIN, INT_MAX);
1523 const rcti window_rect = {
1524 position.x, position.x + area->
winx, position.y, position.y + area->
winy};
1538 return (newwin !=
nullptr);
1546 if (sad ==
nullptr) {
1571 ot->name =
"Duplicate Area into New Window";
1572 ot->description =
"Duplicate selected area into new window";
1573 ot->idname =
"SCREEN_OT_area_dupli";
1648 ot->name =
"Close Area";
1649 ot->description =
"Close selected area";
1650 ot->idname =
"SCREEN_OT_area_close";
1714 bool *use_bigger_smaller_snap)
1717 *bigger = *smaller = 100000;
1719 if (use_bigger_smaller_snap !=
nullptr) {
1720 *use_bigger_smaller_snap =
false;
1725 size_min =
max_ii(size_min, 0);
1730 if (area->v1->editflag && area->v2->editflag) {
1731 *smaller = area->v4->vec.x - size_max;
1732 *bigger = area->v4->vec.x - size_min;
1733 *use_bigger_smaller_snap =
true;
1737 if (area->v2->editflag && area->v3->editflag) {
1738 *smaller = area->v1->vec.y + size_min;
1739 *bigger = area->v1->vec.y + size_max;
1740 *use_bigger_smaller_snap =
true;
1744 if (area->v3->editflag && area->v4->editflag) {
1745 *smaller = area->v1->vec.x + size_min;
1746 *bigger = area->v1->vec.x + size_max;
1747 *use_bigger_smaller_snap =
true;
1751 if (area->v4->editflag && area->v1->editflag) {
1752 *smaller = area->v2->vec.y - size_max;
1753 *bigger = area->v2->vec.y - size_min;
1754 *use_bigger_smaller_snap =
true;
1767 if (area->v1->editflag && area->v4->editflag) {
1768 *bigger =
min_ii(*bigger, y1);
1770 else if (area->v2->editflag && area->v3->editflag) {
1771 *smaller =
min_ii(*smaller, y1);
1777 if (area->v1->editflag && area->v2->editflag) {
1778 *bigger =
min_ii(*bigger, x1);
1780 else if (area->v3->editflag && area->v4->editflag) {
1781 *smaller =
min_ii(*smaller, x1);
1811 const int xy[2] = {
x,
y};
1817 if (actedge ==
nullptr) {
1836 v1->editflag = v1->flag;
1839 bool use_bigger_smaller_snap =
false;
1860 int m_cursor_final = -1;
1861 const int m_cursor = origval + delta;
1862 const int m_span = float(bigger + smaller);
1863 const int m_min = origval - smaller;
1866 switch (snap_type) {
1868 m_cursor_final = m_cursor;
1869 if (!
ELEM(delta, bigger, -smaller)) {
1870 m_cursor_final -= (m_cursor %
AREAGRID);
1871 CLAMP(m_cursor_final, origval - smaller, origval + bigger);
1876 if (m_cursor_final < (m_min + snap_threshold)) {
1877 m_cursor_final = m_min;
1879 else if (m_cursor_final > (origval + bigger - snap_threshold)) {
1880 m_cursor_final = origval + bigger;
1885 m_cursor_final = (m_cursor >= bigger) ? bigger : smaller;
1890 int snap_dist_best = INT_MAX;
1892 const float div_array[] = {
1910 const int snap_dist_test =
abs(m_cursor - m_cursor_test);
1911 if (snap_dist_best >= snap_dist_test) {
1912 snap_dist_best = snap_dist_test;
1913 m_cursor_final = m_cursor_test;
1919 if (!v1->editflag) {
1922 const int v_loc = (&v1->vec.x)[!axis];
1928 if (v_loc == (&
v2->vec.x)[!axis]) {
1929 const int v_loc2 = (&
v2->vec.x)[axis];
1931 if ((origval - smaller) < v_loc2 && v_loc2 < (origval + bigger)) {
1932 const int snap_dist_test =
abs(m_cursor - v_loc2);
1933 if (snap_dist_best >= snap_dist_test) {
1934 snap_dist_best = snap_dist_test;
1935 m_cursor_final = v_loc2;
1948 IN_RANGE_INCL(m_cursor_final, origval - smaller, origval + bigger));
1950 return m_cursor_final;
1963 status.
item(
IFACE_(
"Confirm"), ICON_MOUSE_LMB);
1964 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
1969 short final_loc = -1;
1970 bool doredraw =
false;
1973 CLAMP(delta, -smaller, bigger);
1977 final_loc = origval + delta;
1981 screen, snap_type, delta, origval, dir_axis, bigger, smaller);
1990 short oldval = (&v1->vec.x)[axis];
1991 (&v1->vec.x)[axis] = final_loc;
1993 if (oldval == final_loc) {
2003 bool redraw_all =
false;
2005 if (area->v1->editflag || area->v2->editflag || area->v3->editflag || area->v4->editflag) {
2009 if (
abs(height - area->global->size_min) <
abs(height - area->global->size_max)) {
2010 area->global->cur_fixed_height = area->global->size_min;
2013 area->global->cur_fixed_height = area->global->size_max;
2087 status.
item(
IFACE_(
"Confirm"), ICON_MOUSE_LMB);
2088 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
2112 switch (event->
type) {
2128 switch (event->
val) {
2150 status.
item(
IFACE_(
"Confirm"), ICON_MOUSE_LMB);
2151 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
2167 ot->name =
"Move Area Edges";
2168 ot->description =
"Move selected area edges";
2169 ot->idname =
"SCREEN_OT_area_move";
2181 RNA_def_int(
ot->srna,
"x", 0, INT_MIN, INT_MAX,
"X",
"", INT_MIN, INT_MAX);
2182 RNA_def_int(
ot->srna,
"y", 0, INT_MIN, INT_MAX,
"Y",
"", INT_MIN, INT_MAX);
2183 RNA_def_int(
ot->srna,
"delta", 0, INT_MIN, INT_MAX,
"Delta",
"", INT_MIN, INT_MAX);
2242 if (!area || area->
global) {
2288 if (area ==
nullptr) {
2325 if (sav1 == sbv4 && sav2 == sbv3) {
2328 if (sav2 == sbv1 && sav3 == sbv4) {
2331 if (sav3 == sbv2 && sav4 == sbv1) {
2334 if (sav1 == sbv2 && sav4 == sbv3) {
2357 if (sd->
narea ==
nullptr) {
2452 if (sad ==
nullptr || sad->
modifier > 0) {
2457 if (sad->
sa1 ==
nullptr || sad->
az ==
nullptr) {
2467 const float factor_v = float(event->
xy[1] - sad->
sa1->
v1->
vec.
y) / float(sad->
sa1->
winy);
2468 const float factor_h = float(event->
xy[0] - sad->
sa1->
v1->
vec.
x) / float(sad->
sa1->
winx);
2469 const bool is_left = factor_v < 0.5f;
2470 const bool is_bottom = factor_h < 0.5f;
2471 const bool is_right = !
is_left;
2472 const bool is_top = !is_bottom;
2485 if ((is_top &&
is_left) || (is_bottom && is_right)) {
2486 factor = 1.0f - factor;
2500 if (area ==
nullptr) {
2506 op->
ptr, prop_factor,
float(event->
xy[0] - area->
v1->
vec.
x) /
float(area->
winx));
2510 op->
ptr, prop_factor,
float(event->
xy[1] - area->
v1->
vec.
y) /
float(area->
winy));
2533 if (actedge ==
nullptr) {
2600 sd->
narea =
nullptr;
2610 bool update_factor =
false;
2613 switch (event->
type) {
2615 update_factor =
true;
2644 update_factor =
true;
2659 update_factor =
true;
2666 if (update_factor) {
2747 {0,
nullptr, 0,
nullptr,
nullptr},
2752 ot->name =
"Split Area";
2753 ot->description =
"Split selected area into new windows";
2754 ot->idname =
"SCREEN_OT_area_split";
2768 RNA_def_float(
ot->srna,
"factor", 0.5f, 0.0, 1.0,
"Factor",
"", 0.0, 1.0);
2770 ot->srna,
"cursor", 2,
nullptr, INT_MIN, INT_MAX,
"Cursor",
"", INT_MIN, INT_MAX);
2900 short *
size, maxsize = -1;
2911 if (*
size > maxsize && maxsize > 0) {
2931 if (region_tool_header !=
nullptr) {
2948 switch (event->
type) {
2954 const int snap_size_threshold = (
U.widget_unit * 2) / aspect;
2955 bool size_changed =
false;
2958 delta =
event->xy[0] - rmd->
orig_xy[0];
2966 const int size_no_snap = rmd->
origval + delta;
2975 if ((
abs(rmd->
region->
sizex - sizex_test) < snap_size_threshold) &&
2977 sizex_test <= rmd->maxsize)
2984 if (size_no_snap <
UI_UNIT_X / aspect) {
3000 size_changed =
true;
3004 delta =
event->xy[1] - rmd->
orig_xy[1];
3012 const int size_no_snap = rmd->
origval + delta;
3021 if ((
abs(rmd->
region->
sizey - sizey_test) < snap_size_threshold) &&
3023 (sizey_test <= rmd->maxsize))
3033 if (size_no_snap < (
UI_UNIT_Y / 4) / aspect) {
3049 size_changed =
true;
3052 if (size_changed && rmd->
region->
runtime->type->on_user_resize) {
3108 ot->name =
"Scale Region Size";
3109 ot->description =
"Scale selected area";
3110 ot->idname =
"SCREEN_OT_region_scale";
3157 if ((current_frame >= region->v2d.cur.xmin) && (current_frame <= region->v2d.cur.xmax)) {
3165 region->v2d.cur.xmax = current_frame + (
w / 2);
3166 region->v2d.cur.xmin = current_frame - (
w / 2);
3169 if (current_frame < region->v2d.cur.xmin) {
3170 region->v2d.cur.xmax = current_frame;
3171 region->v2d.cur.xmin = region->v2d.cur.xmax -
w;
3174 region->v2d.cur.xmin = current_frame;
3175 region->v2d.cur.xmax = region->v2d.cur.xmin +
w;
3191 if (delta < 0 && scene->r.subframe > 0) {
3194 scene->
r.
cfra += delta;
3209 ot->name =
"Frame Offset";
3210 ot->idname =
"SCREEN_OT_frame_offset";
3211 ot->description =
"Move current frame forward/backward by a given number";
3217 ot->undo_group =
"Frame Change";
3220 RNA_def_int(
ot->srna,
"delta", 0, INT_MIN, INT_MAX,
"Delta",
"", INT_MIN, INT_MAX);
3271 ot->name =
"Jump to Endpoint";
3272 ot->description =
"Jump to first/last frame in frame range";
3273 ot->idname =
"SCREEN_OT_frame_jump";
3279 ot->undo_group =
"Frame Change";
3283 ot->srna,
"end",
false,
"Last Frame",
"Jump to the last frame of the frame range");
3320 fcurve_to_keylist(ale->adt, fcu, &keylist, 0, {-FLT_MAX, FLT_MAX}, use_nla_mapping);
3348 nullptr,
static_cast<const GreasePencil *
>(ob->data), &keylist, 0, active_layer_only);
3369 if (scene ==
nullptr) {
3400 while ((ak !=
nullptr) && (done ==
false)) {
3401 if (cfra < ak->cfra) {
3413 while ((ak !=
nullptr) && (done ==
false)) {
3414 if (cfra > ak->
cfra) {
3428 if (done ==
false) {
3450 ot->name =
"Jump to Keyframe";
3451 ot->description =
"Jump to previous/next keyframe";
3452 ot->idname =
"SCREEN_OT_keyframe_jump";
3458 ot->undo_group =
"Frame Change";
3481 if ((marker->frame > scene->
r.
cfra) && (!found ||
closest > marker->frame)) {
3514 ot->name =
"Jump to Marker";
3515 ot->description =
"Jump to previous/next marker";
3516 ot->idname =
"SCREEN_OT_marker_jump";
3522 ot->undo_group =
"Frame Change";
3549 ot->name =
"Set Screen";
3550 ot->description =
"Cycle through available screens";
3551 ot->idname =
"SCREEN_OT_screen_set";
3557 RNA_def_int(
ot->srna,
"delta", 1, -1, 1,
"Delta",
"", -1, 1);
3578 if (area_iter->full) {
3584 if (area ==
nullptr) {
3623 ot->name =
"Toggle Maximize Area";
3624 ot->description =
"Toggle display selected area as fullscreen/maximized";
3625 ot->idname =
"SCREEN_OT_screen_full_area";
3631 prop =
RNA_def_boolean(
ot->srna,
"use_hide_panels",
false,
"Hide Panels",
"Hide all the panels");
3690 if (!sd || !sd->
sa1) {
3694 if (sd->
sa1 == sd->
sa2) {
3737 if (sa1 ==
nullptr && sa2 ==
nullptr) {
3754 if (sa1 ==
nullptr) {
3852 if (sad ==
nullptr || sad->
modifier > 0 || sad->
sa1 ==
nullptr) {
3901 bool aligned_neighbors = (offset1 == 0 && offset2 == 0);
3902 bool same_area = (jd->
sa1 == jd->
sa2);
3917 if (jd->
factor <= 0.5f) {
3958 if (event->
xy[0] < 0 || event->
xy[0] > jd->
win1->
sizex || event->
xy[1] < 1 ||
3968 if (screen && screen->
temp) {
3999#if defined(__APPLE__)
4011 const bool alt =
event->modifier &
KM_ALT;
4012 const bool ctrl =
event->modifier &
KM_CTRL;
4013 const float accel = (alt || ctrl) ? 2.5f : 2.0;
4015 float factor =
pos * accel;
4018 if (factor >= 0.4375f && factor < 0.5f) {
4021 else if (factor >= 0.5f && factor < 0.5625f) {
4027 if (factor < 0.1875f) {
4030 else if (factor >= 0.1875f && factor < 0.3125f) {
4033 else if (factor >= 0.3125f && factor < 0.4375f) {
4036 else if (factor >= 0.5625f && factor < 0.6875f) {
4039 else if (factor >= 0.6875f && factor < 0.8125f) {
4042 else if (factor > 0.8125f) {
4056 if (jd->
sa1 == jd->
sa2) {
4062 if (screen && screen->
temp) {
4075 const int x =
event->xy[0] + win1_posx - win2_posx - jd->
sa2->
totrct.
xmin;
4076 const int y =
event->xy[1] + win1_posy - win2_posy - jd->
sa2->
totrct.
ymin;
4081 const float fac_x = float(
x) / float(jd->
sa2->
winx);
4082 const float fac_y = float(
y) / float(jd->
sa2->
winy);
4118 if (jd->
sa2->
winx < (min_x * 3)) {
4119 if (fac_y > 0.4f && fac_y < 0.6f) {
4122 if (
float(
y) >
float(jd->
sa2->
winy) / 2.0f) {
4129 if (jd->
sa2->
winy < (min_y * 3)) {
4130 if (fac_x > 0.4f && fac_x < 0.6f) {
4133 if (
float(
x) >
float(jd->
sa2->
winx) / 2.0f) {
4142 if (fac_x > 0.4f && fac_x < 0.6f && fac_y > 0.4f && fac_y < 0.6f) {
4147 const float area_ratio = float(jd->
sa2->
winx) / float(jd->
sa2->
winy);
4149 const bool upper_left = float(
x) / float(
y + 1) < area_ratio;
4151 const bool lower_left = float(
x) / float(jd->
sa2->
winy -
y + 1) < area_ratio;
4153 if (upper_left && !lower_left) {
4157 if (!upper_left && lower_left) {
4161 if (upper_left && lower_left) {
4165 if (!upper_left && !lower_left) {
4186 const int v_loc = (&v1->vec.x)[axis];
4187 const int v_dist =
abs(v_loc - event->
xy[axis]);
4188 if (v_dist < dist) {
4197 float frac_fac =
round(fac * 12.0f) / 12.0f;
4200 fac = (
fabs(near_fac - fac) <
fabs(frac_fac - fac)) ? near_fac : frac_fac;
4204 if (fac >= 0.48f && fac < 0.5f) {
4207 else if (fac >= 0.5f && fac < 0.52f) {
4216 if (min_fac < 0.5f) {
4217 return std::clamp(fac, min_fac, 1.0f - min_fac);
4229#if (OS_WINDOWS || OS_MAC)
4244 if (win_count > 1) {
4258 if (jd->
sa1 == area) {
4261 if (!(
abs(jd->
start_x - event->
xy[0]) > drag_threshold ||
4306 if (jd ==
nullptr) {
4311 switch (event->
type) {
4322 status.
item(
IFACE_(
"Split/Dock"), ICON_MOUSE_LMB_DRAG);
4323 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
4326 status.
item(
IFACE_(
"Select Split"), ICON_MOUSE_LMB_DRAG);
4327 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
4333 status.
item(
IFACE_(
"Select Area"), ICON_MOUSE_LMB_DRAG);
4334 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
4337 status.
item(
IFACE_(
"Select Location"), ICON_MOUSE_LMB_DRAG);
4338 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
4353 if (jd->
sa1 && !jd->
sa2) {
4355 if (event->
xy[0] < 0 || event->
xy[0] > jd->
win1->
sizex || event->
xy[1] < 1 ||
4373 else if (jd->
sa1 && jd->
sa1 == jd->
sa2) {
4391 if (large_v || large_h) {
4429 const bool do_close_win = jd->
close_win;
4457 ot->name =
"Join Area";
4458 ot->description =
"Join selected areas into new window";
4459 ot->idname =
"SCREEN_OT_area_join";
4515 ptr = layout->
op(
"SCREEN_OT_area_split",
4516 IFACE_(
"Vertical Split"),
4517 ICON_SPLIT_VERTICAL,
4525 ptr = layout->
op(
"SCREEN_OT_area_split",
4526 IFACE_(
"Horizontal Split"),
4527 ICON_SPLIT_HORIZONTAL,
4542 ptr = layout->
op(
"SCREEN_OT_area_join",
4552 "SCREEN_OT_area_join",
4566 ptr = layout->
op(
"SCREEN_OT_area_swap",
4582 ot->name =
"Area Options";
4583 ot->description =
"Operations for splitting and merging";
4584 ot->idname =
"SCREEN_OT_area_options";
4608 if (area->spacedata.first != area->spacedata.last) {
4626 ot->name =
"Clean Up Space Data";
4627 ot->description =
"Remove unused settings for invisible editors";
4628 ot->idname =
"SCREEN_OT_spacedata_cleanup";
4660 lastop = lastop->
prev;
4674 ot->name =
"Repeat Last";
4675 ot->description =
"Repeat last action";
4676 ot->idname =
"SCREEN_OT_repeat_last";
4708 lastop = lastop->
prev,
i--)
4741 ot->name =
"Repeat History";
4742 ot->description =
"Display menu for previous actions performed";
4743 ot->idname =
"SCREEN_OT_repeat_history";
4750 RNA_def_int(
ot->srna,
"index", 0, 0, INT_MAX,
"Index",
"", 0, 1000);
4775 ot->name =
"Redo Last";
4776 ot->description =
"Display parameters for last action performed";
4777 ot->idname =
"SCREEN_OT_redo_last";
4801 ScrArea *area,
ARegion *region,
const char viewlock,
const char view,
const char persp)
4813 rv3d->
persp = persp;
4848 if (region != region_user) {
4882 else if (region->
next) {
4899 int index_qsplit = 0;
4915 (region = region->
next),
4920 (region = region->
next),
4946 ot->name =
"Toggle Quad View";
4947 ot->description =
"Split selected area into camera, front, right, and top views";
4948 ot->idname =
"SCREEN_OT_region_quadview";
4998 ot->name =
"Toggle Region";
4999 ot->idname =
"SCREEN_OT_region_toggle";
5000 ot->description =
"Hide or unhide the region";
5012 "Type of the region to toggle");
5066 ot->name =
"Flip Region";
5067 ot->idname =
"SCREEN_OT_region_flip";
5068 ot->description =
"Toggle the region's alignment (left/right or top/bottom)";
5098 ot->name =
"Expand/Collapse Header Menus";
5099 ot->idname =
"SCREEN_OT_header_toggle_menus";
5100 ot->description =
"Expand or collapse the header pull-down menus";
5122 ptr = layout->
op(
"SCREEN_OT_area_join",
5123 IFACE_(
"Move/Split Area"),
5130 layout->
op(
"SCREEN_OT_screen_full_area",
5135 ptr = layout->
op(
"SCREEN_OT_screen_full_area",
5136 IFACE_(
"Full Screen Area"),
5143 layout->
op(
"SCREEN_OT_area_dupli", std::nullopt, ICON_NONE);
5145 layout->
op(
"SCREEN_OT_area_close", std::nullopt, ICON_X);
5167 col->op(
"SCREEN_OT_header_toggle_menus",
5202 IFACE_(
"Flip to Bottom");
5207 layout->
op(
"SCREEN_OT_region_flip", but_flip_str, ICON_NONE);
5257 layout->
op(
"SCREEN_OT_region_toggle",
IFACE_(
"Hide"), ICON_NONE);
5274 ot->name =
"Region";
5275 ot->description =
"Display region context menu";
5276 ot->idname =
"SCREEN_OT_region_context_menu";
5293 bool from_anim_edit)
5298 switch (spacetype) {
5338 if ((redraws &
TIME_CLIPS) || from_anim_edit) {
5374 switch (spacetype) {
5387 switch (spacetype) {
5475#ifdef PROFILE_AUDIO_SYNC
5476 static int old_frame = 0;
5501 if (scene_eval ==
nullptr) {
5513#ifdef PROFILE_AUDIO_SYNC
5514 newfra_int = scene->
r.
cfra;
5515 if (newfra_int < old_frame) {
5516 printf(
"back -%d jump detected, frame %d!\n", old_frame - newfra_int, old_frame);
5518 else if (newfra_int > old_frame + 1) {
5519 printf(
"forward +%d jump detected, frame %d!\n", newfra_int - old_frame, old_frame);
5522 old_frame = newfra_int;
5535 if (delta_frames < 1.0) {
5541 delta_frames = 1.0f;
5549 const int step = delta_frames;
5613#ifdef PROFILE_AUDIO_SYNC
5614 old_frame = scene->
r.
cfra;
5628 bool redraw =
false;
5629 if (region == sad->
region) {
5672 ot->name =
"Animation Step";
5673 ot->description =
"Step through animation by position";
5674 ot->idname =
"SCREEN_OT_animation_step";
5698 const bool is_playing = screen !=
nullptr;
5699 bool playback_sync =
false;
5700 int play_direction = 0;
5833 ot->name =
"Play Animation";
5834 ot->description =
"Play animation";
5835 ot->idname =
"SCREEN_OT_animation_play";
5843 ot->srna,
"reverse",
false,
"Play in Reverse",
"Animation is played backwards");
5845 prop =
RNA_def_boolean(
ot->srna,
"sync",
false,
"Sync",
"Drop frames to maintain framerate");
5862 if (restore_start_frame) {
5869 if (restore_start_frame) {
5872 scene->
r.
cfra = frame;
5883 ot->name =
"Cancel Animation";
5884 ot->description =
"Cancel animation, returning to the original frame";
5885 ot->idname =
"SCREEN_OT_animation_cancel";
5896 "Restore the frame when animation was initialized");
5929 printf(
"box select do select\n");
5932 printf(
"box select deselect\n");
5935 printf(
"box select do something\n");
5944 ot->name =
"Box Select";
5945 ot->idname =
"SCREEN_OT_box_select";
5956 RNA_def_int(
ot->srna,
"event_type", 0, INT_MIN, INT_MAX,
"Event Type",
"", INT_MIN, INT_MAX);
5976 if (area_iter->full) {
5994 ot->name =
"Back to Previous Screen";
5995 ot->description =
"Revert back to the original screen layout, before fullscreen area overlay";
5996 ot->idname =
"SCREEN_OT_back_to_previous";
6028 const rcti window_rect = {
6030 event->xy[0] + sizex,
6032 event->xy[1] + sizey,
6045 nullptr) !=
nullptr)
6068 const char *section_name;
6070 return fmt::format(fmt::runtime(
TIP_(
"Show {} preferences")), section_name);
6082 ot->name =
"Open Preferences...";
6083 ot->description =
"Edit user preferences and system settings";
6084 ot->idname =
"SCREEN_OT_userpref_show";
6096 "Section to activate in the Preferences");
6124 const rcti window_rect = {
6126 event->xy[0] + sizex,
6128 event->xy[1] + sizey,
6133 IFACE_(
"Blender Drivers Editor"),
6141 nullptr) !=
nullptr)
6147 bool driven, special;
6149 C, &
ptr, prop, index,
nullptr,
nullptr, &driven, &special);
6181 ot->name =
"Show Drivers Editor";
6182 ot->description =
"Show drivers editor in a separate window";
6183 ot->idname =
"SCREEN_OT_drivers_editor_show";
6201 const int shift_y = 480;
6202 const int mx =
event->
xy[0];
6203 const int my =
event->xy[1] + shift_y;
6207 const rcti window_rect = {
6216 IFACE_(
"Blender Info Log"),
6224 nullptr) !=
nullptr)
6235 ot->name =
"Show Info Log";
6236 ot->description =
"Show info log in a separate window";
6237 ot->idname =
"SCREEN_OT_info_log_show";
6267 ot->name =
"New Screen";
6268 ot->description =
"Add a new screen";
6269 ot->idname =
"SCREEN_OT_new";
6296 ot->name =
"Delete Screen";
6297 ot->description =
"Delete active screen";
6298 ot->idname =
"SCREEN_OT_delete";
6322#define TIMESTEP (1.0f / 60.0f)
6327 if (region->
runtime->regiontimer ==
nullptr &&
6330 region = region->
prev;
6333 if (region->
runtime->regiontimer) {
6335 region->
runtime->regiontimer->customdata);
6338 alpha = float(region->
runtime->regiontimer->time_duration) /
TIMEOUT;
6344 CLAMP(alpha, 0.0f, 1.0f);
6376 region->
runtime->regiontimer =
nullptr;
6384 if (region->
runtime->regiontimer) {
6411 region->
runtime->regiontimer->customdata = rgi;
6444 ot->name =
"Region Alpha";
6445 ot->idname =
"SCREEN_OT_region_blend";
6446 ot->description =
"Blend in and out overlapping region";
6493 for (
int i = 1;
i < item_len;
i++) {
6495 if ((item_test->
value >> 16) == space_type) {
6512 ot->name =
"Cycle Space Type Set";
6513 ot->description =
"Set the space type or cycle subtype";
6514 ot->idname =
"SCREEN_OT_space_type_set_or_cycle";
6534 {0,
nullptr, 0,
nullptr,
nullptr},
6553 const char *propname;
6559 propname =
"context";
6563 propname =
"active_section";
6594 ot->name =
"Cycle Space Context";
6595 ot->description =
"Cycle through the editor context by activating the next/previous one";
6596 ot->idname =
"SCREEN_OT_space_context_cycle";
6609 "Direction to cycle through");
6632 if (ordered.
size() == 1) {
6639 switch (direction) {
6641 workspace_dst =
reinterpret_cast<WorkSpace *
>(index == 0 ? ordered.
last() :
6642 ordered[index - 1]);
6645 workspace_dst =
reinterpret_cast<WorkSpace *
>(
6646 index == ordered.
index_range().last() ? ordered.
first() : ordered[index + 1]);
6660 ot->name =
"Cycle Workspace";
6661 ot->description =
"Cycle through workspaces";
6662 ot->idname =
"SCREEN_OT_workspace_cycle";
6675 "Direction to cycle through");
6748 {0,
nullptr, 0,
nullptr,
nullptr},
@ BKE_CB_EVT_ANIMATION_PLAYBACK_PRE
@ BKE_CB_EVT_ANIMATION_PLAYBACK_POST
void BKE_callback_exec_id_depsgraph(Main *bmain, ID *id, Depsgraph *depsgraph, eCbEvent evt)
WorkSpace * CTX_wm_workspace(const bContext *C)
SpaceImage * CTX_wm_space_image(const bContext *C)
bScreen * CTX_wm_screen(const bContext *C)
Mask * CTX_data_edit_mask(const bContext *C)
SpaceFile * CTX_wm_space_file(const bContext *C)
PointerRNA CTX_data_pointer_get_type(const bContext *C, const char *member, StructRNA *type)
SpaceNode * CTX_wm_space_node(const bContext *C)
void CTX_wm_operator_poll_msg_set(bContext *C, const char *msg)
Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
ScrArea * CTX_wm_area(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
Object * CTX_data_active_object(const bContext *C)
SpaceLink * CTX_wm_space_data(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Object * CTX_data_edit_object(const bContext *C)
void CTX_wm_window_set(bContext *C, wmWindow *win)
Main * CTX_data_main(const bContext *C)
void CTX_wm_area_set(bContext *C, ScrArea *area)
void CTX_wm_region_set(bContext *C, ARegion *region)
RegionView3D * CTX_wm_region_view3d(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
BMEditMesh * BKE_editmesh_from_object(Object *ob)
Return the BMEditMesh for a given object.
FCurve * BKE_fcurve_find_by_rna_context_ui(bContext *C, const PointerRNA *ptr, PropertyRNA *prop, int rnaindex, AnimData **r_animdata, bAction **r_action, bool *r_driven, bool *r_special)
void BKE_icon_changed(int icon_id)
bool BKE_id_is_editable(const Main *bmain, const ID *id)
blender::Vector< ID * > BKE_id_ordered_list(const ListBase *lb)
struct MaskLayer * BKE_mask_layer_active(struct Mask *mask)
General operations, lookup, etc. for blender objects.
bool BKE_object_pose_context_check(const Object *ob)
Object * BKE_object_pose_armature_get(Object *ob)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_scene_frame_set(Scene *scene, float frame)
float BKE_scene_frame_get(const Scene *scene)
Depsgraph * BKE_scene_get_depsgraph(const Scene *scene, const ViewLayer *view_layer)
void BKE_screen_remove_unused_scrverts(bScreen *screen)
void BKE_screen_remove_unused_scredges(bScreen *screen)
void BKE_screen_remove_double_scrverts(bScreen *screen)
void BKE_spacedata_freelist(ListBase *lb)
ScrEdge * BKE_screen_find_edge(const bScreen *screen, ScrVert *v1, ScrVert *v2)
ScrArea ScrArea * BKE_screen_find_area_xy(const bScreen *screen, int spacetype, const int xy[2]) ATTR_NONNULL(1
void BKE_screen_remove_double_scredges(bScreen *screen)
ARegion * BKE_area_find_region_type(const ScrArea *area, int region_type)
ARegion * BKE_area_region_copy(const SpaceType *st, const ARegion *region)
double BKE_sound_sync_scene(struct Scene *scene)
void BKE_sound_init(struct Main *bmain)
void BKE_sound_stop_scene(struct Scene *scene)
void BKE_sound_play_scene(struct Scene *scene)
WorkSpaceLayout * BKE_workspace_layout_find(const WorkSpace *workspace, const bScreen *screen) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
bScreen * BKE_workspace_active_screen_get(const WorkSpaceInstanceHook *hook) GETTER_ATTRS
WorkSpace * BKE_workspace_active_get(WorkSpaceInstanceHook *hook) GETTER_ATTRS
WorkSpaceLayout * BKE_workspace_active_layout_get(const WorkSpaceInstanceHook *hook) GETTER_ATTRS
void BLI_kdtree_nd_ free(KDTree *tree)
int BLI_findindex(const ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void BLI_INLINE bool BLI_listbase_is_single(const ListBase *lb)
MINLINE int round_fl_to_int(float a)
MINLINE int min_ii(int a, int b)
MINLINE int square_i(int a)
MINLINE int max_ii(int a, int b)
void copy_qt_qt(float q[4], const float a[4])
MINLINE void copy_v2_v2_int(int r[2], const int a[2])
MINLINE int len_manhattan_v2v2_int(const int a[2], const int b[2]) ATTR_WARN_UNUSED_RESULT
bool BLI_rcti_isect_pt_v(const struct rcti *rect, const int xy[2])
int BLI_rcti_length_x(const rcti *rect, int x)
void BLI_rcti_translate(struct rcti *rect, int x, int y)
int BLI_rcti_length_y(const rcti *rect, int y)
void BLI_rcti_init(struct rcti *rect, int xmin, int xmax, int ymin, int ymax)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
#define IN_RANGE_INCL(a, b, c)
#define CTX_IFACE_(context, msgid)
#define BLT_I18NCONTEXT_ID_SCREEN
void DEG_id_tag_update(ID *id, unsigned int flags)
Scene * DEG_get_evaluated_scene(const Depsgraph *graph)
#define OB_MODE_ALL_WEIGHT_PAINT
Object is a sort of wrapper for general info.
#define RGN_ALIGN_ENUM_FROM_MASK(align)
#define AREAMAP_FROM_SCREEN(screen)
@ RGN_FLAG_RESIZE_RESPECT_BUTTON_SECTIONS
@ RGN_FLAG_NO_USER_RESIZE
@ RGN_FLAG_HIDDEN_BY_USER
@ AREA_FLAG_ACTIONZONES_UPDATE
@ RGN_ALIGN_HIDE_WITH_PREV
@ FILE_TYPE_BLENDER_BACKUP
#define FRAMENUMBER_MIN_CLAMP(cfra)
@ ANIMFILTER_DATA_VISIBLE
void ED_drivers_editor_init(bContext *C, ScrArea *area)
bool ED_fileselect_is_file_browser(const SpaceFile *sfile)
bool ED_fileselect_is_asset_browser(const SpaceFile *sfile)
bool ED_space_image_show_uvedit(const SpaceImage *sima, Object *obedit)
Mesh * ED_mesh_context(bContext *C)
void ED_scene_fps_average_accumulate(Scene *scene, short fps_samples, double ltime) ATTR_NONNULL(1)
bool void ED_scene_fps_average_clear(Scene *scene) ATTR_NONNULL(1)
void ED_area_tag_redraw(ScrArea *area)
void ED_screen_global_areas_sync(wmWindow *win)
void ED_area_init(bContext *C, const wmWindow *win, ScrArea *area)
bool ED_workspace_layout_cycle(WorkSpace *workspace, short direction, bContext *C) ATTR_NONNULL()
bool ED_operator_screen_mainwinactive(bContext *C)
int ED_area_max_regionsize(const ScrArea *area, const ARegion *scale_region, const AZEdge edge)
void ED_region_toggle_hidden(bContext *C, ARegion *region)
int ED_area_global_min_size_y(const ScrArea *area)
ScrArea * ED_area_find_under_cursor(const bContext *C, int spacetype, const int event_xy[2])
#define ED_screen_verts_iter(win, screen, vert_name)
#define ED_screen_areas_iter(win, screen, area_name)
bool ED_operator_screenactive(bContext *C)
void ED_area_tag_redraw_no_rebuild(ScrArea *area)
int ED_area_global_max_size_y(const ScrArea *area)
bool ED_area_is_global(const ScrArea *area)
void ED_area_swapspace(bContext *C, ScrArea *sa1, ScrArea *sa2)
void ED_region_tag_redraw_no_rebuild(ARegion *region)
void ED_screen_animation_timer(bContext *C, int redraws, int sync, int enable)
bool ED_operator_screenactive_nobackground(bContext *C)
bool ED_operator_region_view3d_active(bContext *C)
void ED_region_visibility_change_update(bContext *C, ScrArea *area, ARegion *region)
bool ED_operator_areaactive(bContext *C)
ScrArea * ED_screen_state_toggle(bContext *C, wmWindow *win, ScrArea *area, short state)
void ED_workspace_status_text(bContext *C, const char *str)
void ED_update_for_newframe(Main *bmain, Depsgraph *depsgraph)
WorkSpaceLayout * ED_workspace_layout_duplicate(Main *bmain, WorkSpace *workspace, const WorkSpaceLayout *layout_old, wmWindow *win) ATTR_NONNULL()
void ED_region_visibility_change_update_ex(bContext *C, ScrArea *area, ARegion *region, bool is_hidden, bool do_init)
void ED_region_tag_redraw(ARegion *region)
void ED_region_remove(bContext *C, ScrArea *area, ARegion *region)
void ED_screen_full_prevspace(bContext *C, ScrArea *area)
@ SPACE_CONTEXT_CYCLE_NEXT
@ SPACE_CONTEXT_CYCLE_PREV
@ ANIMPLAY_FLAG_USE_NEXT_FRAME
bool ED_view3d_context_user_region(bContext *C, View3D **r_v3d, ARegion **r_region)
bool ED_view3d_lock(RegionView3D *rv3d)
char ED_view3d_lock_view_from_index(int index)
void ED_view3d_lastview_store(RegionView3D *rv3d)
void ED_view3d_quadview_update(ScrArea *area, ARegion *region, bool do_clip)
bool GPU_mem_stats_supported()
Read Guarded memory(de)allocation.
#define UI_REGION_OVERLAP_MARGIN
#define UI_NAVIGATION_REGION_WIDTH
bool UI_drop_color_poll(bContext *C, wmDrag *drag, const wmEvent *event)
void UI_popup_menu_end(bContext *C, uiPopupMenu *pup)
uiPopupMenu * UI_popup_menu_begin(bContext *C, const char *title, int icon) ATTR_NONNULL()
uiBut * UI_context_active_but_prop_get(const bContext *C, PointerRNA *r_ptr, PropertyRNA **r_prop, int *r_index)
uiLayout * UI_popup_menu_layout(uiPopupMenu *pup)
void UI_drop_color_copy(bContext *C, wmDrag *drag, wmDropBox *drop)
bool UI_region_button_sections_is_inside_x(const ARegion *region, const int mval_x)
void uiLayoutSetActive(uiLayout *layout, bool active)
void uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
void UI_view2d_curRect_validate(View2D *v2d)
char UI_view2d_mouse_in_scrollers_ex(const ARegion *region, const View2D *v2d, const int xy[2], int *r_scroll) ATTR_NONNULL(1
float UI_view2d_view_to_region_y(const View2D *v2d, float y)
#define V2D_SCROLL_HIDE_WIDTH
float UI_view2d_view_to_region_x(const View2D *v2d, float x)
#define V2D_SCROLL_HIDE_HEIGHT
@ WIN_ALIGN_LOCATION_CENTER
#define ND_SPACE_SEQUENCER
#define ND_SPACE_SPREADSHEET
void ANIM_anim_channels_select_set(bAnimContext *ac, eAnimChannels_SetFlag sel)
void ANIM_set_active_channel(bAnimContext *ac, void *data, eAnimCont_Types datatype, eAnimFilter_Flags filter, void *channel_data, eAnim_ChannelType channel_type)
void ANIM_animdata_freelist(ListBase *anim_data)
bool ANIM_nla_mapping_allowed(const bAnimListElem *ale)
bool ANIM_animdata_get_context(const bContext *C, bAnimContext *ac)
void region_toggle_hidden(bContext *C, ARegion *region, const bool do_fade)
void ED_area_data_copy(ScrArea *area_dst, ScrArea *area_src, const bool do_free)
ATTR_WARN_UNUSED_RESULT const BMVert * v2
BPy_StructRNA * depsgraph
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
bool closest(btVector3 &v)
void item_bool(std::string text, bool inverted, int icon1, int icon2=0)
void item(std::string text, int icon1, int icon2=0)
const T & last(const int64_t n=0) const
IndexRange index_range() const
int64_t first_index_of(const T &value) const
static float is_left(const float p0[2], const float p1[2], const float p2[2])
VecBase< float, D > step(VecOp< float, D >, VecOp< float, D >) RET
#define ID_IS_EDITABLE(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
void mask_to_keylist(bDopeSheet *, MaskLayer *masklay, AnimKeylist *keylist)
const ActKeyColumn * ED_keylist_find_prev(const AnimKeylist *keylist, const float cfra)
void fcurve_to_keylist(AnimData *adt, FCurve *fcu, AnimKeylist *keylist, const int saction_flag, blender::float2 range, const bool use_nla_remapping)
void scene_to_keylist(bDopeSheet *ads, Scene *sce, AnimKeylist *keylist, const int saction_flag, blender::float2 range)
void ob_to_keylist(bDopeSheet *ads, Object *ob, AnimKeylist *keylist, const int saction_flag, blender::float2 range)
void grease_pencil_data_block_to_keylist(AnimData *adt, const GreasePencil *grease_pencil, AnimKeylist *keylist, const int saction_flag, const bool active_layer_only)
void ED_keylist_prepare_for_direct_access(AnimKeylist *keylist)
void summary_to_keylist(bAnimContext *ac, AnimKeylist *keylist, const int saction_flag, blender::float2 range)
AnimKeylist * ED_keylist_create()
void ED_keylist_free(AnimKeylist *keylist)
const ActKeyColumn * ED_keylist_find_next(const AnimKeylist *keylist, const float cfra)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
static wmOperatorStatus box_select_exec(bContext *C, wmOperator *op)
ccl_device_inline float2 fabs(const float2 a)
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
ListBase get_editable_fcurves(bAnimContext &ac)
Object * context_active_object(const bContext *C)
bool has_playback_animation(const Scene *scene)
VecBase< int32_t, 2 > int2
Object * ED_pose_object_from_context(bContext *C)
void RNA_int_set_array(PointerRNA *ptr, const char *name, const int *values)
void RNA_int_get_array(PointerRNA *ptr, const char *name, int *values)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value)
int RNA_property_enum_step(const bContext *C, PointerRNA *ptr, PropertyRNA *prop, int from_value, int step)
void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
bool RNA_property_enum_name_gettexted(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const int value, const char **r_name)
int RNA_int_get(PointerRNA *ptr, const char *name)
float RNA_float_get(PointerRNA *ptr, const char *name)
void RNA_float_set(PointerRNA *ptr, const char *name, float value)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value)
void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values)
int RNA_enum_from_value(const EnumPropertyItem *item, const int value)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_property_enum_items(bContext *C, PointerRNA *ptr, PropertyRNA *prop, const EnumPropertyItem **r_item, int *r_totitem, bool *r_free)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_float(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_int_vector(StructOrFunctionRNA *cont_, const char *identifier, const int len, const int *default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
const EnumPropertyItem rna_enum_region_type_items[]
const EnumPropertyItem rna_enum_space_type_items[]
const EnumPropertyItem rna_enum_preference_section_items[]
void screen_draw_region_scale_highlight(ARegion *region)
void screen_draw_move_highlight(const wmWindow *win, bScreen *screen, eScreenAxis dir_axis)
void screen_draw_split_preview(ScrArea *area, const eScreenAxis dir_axis, const float factor)
void screen_draw_join_highlight(const wmWindow *win, ScrArea *sa1, ScrArea *sa2, eScreenDir dir)
void screen_draw_dock_preview(const wmWindow *win, ScrArea *source, ScrArea *target, AreaDockTarget dock_target, float factor, int x, int y)
void area_getoffsets(ScrArea *sa_a, ScrArea *sa_b, const eScreenDir dir, int *r_offset1, int *r_offset2)
eScreenDir area_getorientation(ScrArea *sa_a, ScrArea *sa_b)
bool screen_area_close(bContext *C, ReportList *reports, bScreen *screen, ScrArea *area)
ScrArea * area_split(const wmWindow *win, bScreen *screen, ScrArea *area, const eScreenAxis dir_axis, const float fac, const bool merge)
int screen_area_join(bContext *C, ReportList *reports, bScreen *screen, ScrArea *sa1, ScrArea *sa2)
ScrEdge * screen_geom_find_active_scredge(const wmWindow *win, const bScreen *screen, const int mx, const int my)
void screen_geom_select_connected_edge(const wmWindow *win, ScrEdge *edge)
bool screen_geom_edge_is_horizontal(ScrEdge *se)
ScrEdge * screen_geom_area_map_find_active_scredge(const ScrAreaMap *area_map, const rcti *bounds_rect, const int mx, const int my, int safety)
int screen_geom_area_height(const ScrArea *area)
void SCREEN_OT_screenshot(wmOperatorType *ot)
void SCREEN_OT_screenshot_area(wmOperatorType *ot)
#define SCREEN_DIR_IS_VERTICAL(dir)
static bool blend_file_drop_poll(bContext *, wmDrag *drag, const wmEvent *)
static wmOperatorStatus screen_delete_exec(bContext *C, wmOperator *)
static wmOperatorStatus space_context_cycle_invoke(bContext *C, wmOperator *op, const wmEvent *)
static void area_join_dock_cb(const wmWindow *win, void *userdata)
static void screen_animation_region_tag_redraw(bContext *C, ScrArea *area, ARegion *region, const Scene *scene, eScreen_Redraws_Flag redraws)
static float area_split_factor(bContext *C, sAreaJoinData *jd, const wmEvent *event)
static void view3d_localview_update_rv3d(RegionView3D *rv3d)
bool ED_operator_spreadsheet_active(bContext *C)
bool ED_operator_region_outliner_active(bContext *C)
static void stop_playback(bContext *C)
static void SCREEN_OT_area_options(wmOperatorType *ot)
bool ED_operator_editarmature(bContext *C)
static void area_dupli_fn(bScreen *, ScrArea *area, void *user_data)
static void screen_area_menu_items(ScrArea *area, uiLayout *layout)
static wmOperatorStatus area_split_modal(bContext *C, wmOperator *op, const wmEvent *event)
static bool ed_operator_posemode_exclusive_ex(bContext *C, Object *obact)
static wmOperatorStatus space_type_set_or_cycle_exec(bContext *C, wmOperator *op)
static void area_swap_cancel(bContext *C, wmOperator *op)
static void actionzone_exit(wmOperator *op)
static void SCREEN_OT_region_context_menu(wmOperatorType *ot)
static bool area_split_allowed(const ScrArea *area, const eScreenAxis dir_axis)
static void keymap_modal_set(wmKeyConfig *keyconf)
static void keylist_from_dopesheet(bContext &C, AnimKeylist &keylist)
static wmOperatorStatus area_split_exec(bContext *C, wmOperator *op)
static void SCREEN_OT_region_scale(wmOperatorType *ot)
static wmOperatorStatus area_swap_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void fullscreen_click_rcti_init(rcti *rect, const short, const short, const short x2, const short y2)
bool ED_operator_uvmap(bContext *C)
static wmOperatorStatus userpref_show_exec(bContext *C, wmOperator *op)
bool ED_operator_graphedit_active(bContext *C)
wmOperatorStatus ED_screen_animation_play(bContext *C, int sync, int mode)
bool ED_operator_action_active(bContext *C)
bool ED_operator_sequencer_active_editable(bContext *C)
bool ED_operator_animview_active(bContext *C)
static wmOperatorStatus repeat_history_exec(bContext *C, wmOperator *op)
bool ED_operator_node_editable(bContext *C)
static void SCREEN_OT_info_log_show(wmOperatorType *ot)
bool ED_operator_screen_mainwinactive(bContext *C)
static wmOperatorStatus area_join_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static bool area_split_menu_init(bContext *C, wmOperator *op)
static wmOperatorStatus header_toggle_menus_exec(bContext *C, wmOperator *)
AZone * ED_area_actionzone_find_xy(ScrArea *area, const int xy[2])
static void area_move_set_limits(wmWindow *win, bScreen *screen, const eScreenAxis dir_axis, int *bigger, int *smaller, bool *use_bigger_smaller_snap)
static void region_scale_validate_size(RegionMoveData *rmd)
void ED_reset_audio_device(bContext *C)
static wmOperatorStatus space_workspace_cycle_invoke(bContext *C, wmOperator *op, const wmEvent *)
static wmOperatorStatus drivers_editor_show_exec(bContext *C, wmOperator *op)
static bool keyframe_jump_poll(bContext *C)
static bool space_context_cycle_poll(bContext *C)
static void keylist_from_graph_editor(bContext &C, AnimKeylist &keylist)
static void keylist_fallback_for_keyframe_jump(bContext &C, AnimKeylist &keylist)
static bool area_split_apply(bContext *C, wmOperator *op)
bool ED_operator_console_active(bContext *C)
static void context_cycle_prop_get(bScreen *screen, const ScrArea *area, PointerRNA *r_ptr, PropertyRNA **r_prop)
float ED_region_blend_alpha(ARegion *region)
static void SCREEN_OT_animation_play(wmOperatorType *ot)
static bool area_join_init(bContext *C, wmOperator *op, ScrArea *sa1, ScrArea *sa2)
static wmOperatorStatus fullscreen_back_exec(bContext *C, wmOperator *op)
static void SCREEN_OT_workspace_cycle(wmOperatorType *ot)
bool ED_operator_object_active_only(bContext *C)
static wmOperatorStatus start_playback(bContext *C, int sync, int mode)
static void area_move_exit(bContext *C, wmOperator *op)
bool ED_operator_info_active(bContext *C)
static void area_join_dock_cb_window(sAreaJoinData *jd, wmOperator *op)
static wmOperatorStatus area_join_exec(bContext *C, wmOperator *op)
void ED_keymap_screen(wmKeyConfig *keyconf)
static bool operator_screenactive_norender(bContext *C)
static wmOperatorStatus area_dupli_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static wmOperatorStatus screen_context_menu_invoke(bContext *C, wmOperator *, const wmEvent *)
static int area_snap_calc_location(const bScreen *screen, const enum AreaMoveSnapType snap_type, const int delta, const int origval, const eScreenAxis dir_axis, const int bigger, const int smaller)
static wmOperatorStatus area_swap_modal(bContext *C, wmOperator *op, const wmEvent *event)
static void SCREEN_OT_userpref_show(wmOperatorType *ot)
bool ED_operator_editable_mesh(bContext *C)
static void SCREEN_OT_actionzone(wmOperatorType *ot)
static void actionzone_apply(bContext *C, wmOperator *op, int type)
void ED_areas_do_frame_follow(bContext *C, bool center_view)
bool ED_operator_scene(bContext *C)
bool ED_operator_object_active_local_editable(bContext *C)
bool ED_operator_screenactive(bContext *C)
bool ED_operator_regionactive(bContext *C)
static void area_actionzone_get_rect(AZone *az, rcti *r_rect)
static bool actionzone_area_poll(bContext *C)
bool ED_operator_editsurfcurve_region_view3d(bContext *C)
static wmOperatorStatus screen_animation_step_invoke(bContext *C, wmOperator *, const wmEvent *event)
static float area_docking_snap(const float pos, const wmEvent *event)
static wmOperatorStatus info_log_show_exec(bContext *C, wmOperator *op)
static void region_scale_toggle_hidden(bContext *C, RegionMoveData *rmd)
static wmOperatorStatus frame_offset_exec(bContext *C, wmOperator *op)
static bool match_region_with_redraws(const ScrArea *area, eRegion_Type regiontype, eScreen_Redraws_Flag redraws, bool from_anim_edit)
static wmOperatorStatus screen_maximize_area_exec(bContext *C, wmOperator *op)
static void SCREEN_OT_back_to_previous(wmOperatorType *ot)
static void SCREEN_OT_keyframe_jump(wmOperatorType *ot)
static bool space_type_set_or_cycle_poll(bContext *C)
static bool ed_spacetype_test(bContext *C, int type)
static int area_join_cursor(sAreaJoinData *jd, const wmEvent *event)
bool ED_operator_object_active(bContext *C)
bool ED_operator_editsurfcurve(bContext *C)
static void SCREEN_OT_frame_jump(wmOperatorType *ot)
static wmOperatorStatus region_blend_invoke(bContext *C, wmOperator *, const wmEvent *event)
static void SCREEN_OT_area_close(wmOperatorType *ot)
static void SCREEN_OT_redo_last(wmOperatorType *ot)
@ SNAP_FRACTION_AND_ADJACENT
@ SNAP_BIGGER_SMALLER_ONLY
static void actionzone_cancel(bContext *, wmOperator *op)
static bool area_swap_init(wmOperator *op, const wmEvent *event)
static void area_move_apply(bContext *C, wmOperator *op)
bool ED_operator_editcurve_3d(bContext *C)
bool ED_operator_objectmode(bContext *C)
static wmOperatorStatus area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static bool area_split_init(bContext *C, wmOperator *op)
bool ED_operator_sequencer_active(bContext *C)
static void SCREEN_OT_animation_step(wmOperatorType *ot)
static void SCREEN_OT_header_toggle_menus(wmOperatorType *ot)
bScreen * ED_screen_animation_no_scrub(const wmWindowManager *wm)
bool ED_operator_scene_editable(bContext *C)
bool ED_operator_asset_browsing_active(bContext *C)
static void SCREEN_OT_delete(wmOperatorType *ot)
bool ED_operator_objectmode_with_view3d_poll_msg(bContext *C)
static AZone * area_actionzone_refresh_xy(ScrArea *area, const int xy[2], const bool test_only)
bool ED_operator_image_active(bContext *C)
static void SCREEN_OT_space_type_set_or_cycle(wmOperatorType *ot)
static wmOperatorStatus frame_jump_exec(bContext *C, wmOperator *op)
void ED_operatortypes_screen()
bool ED_operator_view3d_active(bContext *C)
void ED_screens_region_flip_menu_create(bContext *C, uiLayout *layout, void *)
static const EnumPropertyItem prop_direction_items[]
static wmOperatorStatus spacedata_cleanup_exec(bContext *C, wmOperator *op)
bool ED_operator_node_active(bContext *C)
static wmOperatorStatus region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event)
static void SCREEN_OT_screen_full_area(wmOperatorType *ot)
static wmOperatorStatus redo_last_invoke(bContext *C, wmOperator *, const wmEvent *)
static bool azone_clipped_rect_calc(const AZone *az, rcti *r_rect_clip)
static bool repeat_history_poll(bContext *C)
bool ED_operator_posemode_local(bContext *C)
static void screen_modal_action_end()
static void SCREEN_OT_frame_offset(wmOperatorType *ot)
static wmOperatorStatus repeat_last_exec(bContext *C, wmOperator *)
static void area_docking_apply(bContext *C, wmOperator *op)
static ScrArea * screen_actionzone_area(bScreen *screen, const AZone *az)
static void area_move_draw_cb(const wmWindow *win, void *userdata)
bool ED_operator_nla_active(bContext *C)
static AZone * screen_actionzone_find_xy(bScreen *screen, const int xy[2])
bool ED_operator_object_active_local_editable_ex(bContext *C, const Object *ob)
bool ED_operator_screenactive_nobackground(bContext *C)
bool ED_operator_uvedit_space_image(bContext *C)
static void region_scale_exit(wmOperator *op)
static void SCREEN_OT_space_context_cycle(wmOperatorType *ot)
bool ED_operator_region_view3d_active(bContext *C)
bool ED_operator_object_active_editable(bContext *C)
static wmOperatorStatus screen_new_exec(bContext *C, wmOperator *)
static void area_join_update_data(bContext *C, sAreaJoinData *jd, const wmEvent *event)
bool ED_operator_posemode_exclusive(bContext *C)
static wmOperatorStatus region_flip_exec(bContext *C, wmOperator *)
bScreen * ED_screen_animation_playing(const wmWindowManager *wm)
static bool region_toggle_poll(bContext *C)
static ScrEdge * area_findsharededge(bScreen *screen, ScrArea *area, ScrArea *sb)
static void region_scale_draw_cb(const wmWindow *, void *userdata)
static wmOperatorStatus repeat_history_invoke(bContext *C, wmOperator *op, const wmEvent *)
static wmOperatorStatus area_join_modal(bContext *C, wmOperator *op, const wmEvent *event)
bool ED_operator_editcurve(bContext *C)
static void area_split_exit(bContext *C, wmOperator *op)
static bool area_close_poll(bContext *C)
static void SCREEN_OT_area_swap(wmOperatorType *ot)
static void area_swap_exit(bContext *C, wmOperator *op)
static wmOperatorStatus region_quadview_exec(bContext *C, wmOperator *op)
bool ED_operator_areaactive(bContext *C)
bool ED_operator_editmesh_region_view3d(bContext *C)
bool ED_operator_file_browsing_active(bContext *C)
static void SCREEN_OT_area_split(wmOperatorType *ot)
void ED_region_visibility_change_update_animated(bContext *C, ScrArea *area, ARegion *region)
AZone * ED_area_azones_update(ScrArea *area, const int xy[2])
bool ED_operator_object_active_editable_mesh(bContext *C)
static wmOperatorStatus screen_set_exec(bContext *C, wmOperator *op)
static void SCREEN_OT_spacedata_cleanup(wmOperatorType *ot)
static wmOperatorStatus actionzone_modal(bContext *C, wmOperator *op, const wmEvent *event)
bool ED_operator_posemode_context(bContext *C)
static void SCREEN_OT_repeat_history(wmOperatorType *ot)
bool ED_operator_posemode(bContext *C)
bool ED_operator_editmball(bContext *C)
static void SCREEN_OT_new(wmOperatorType *ot)
static void SCREEN_OT_animation_cancel(wmOperatorType *ot)
static wmOperatorStatus screen_animation_play_exec(bContext *C, wmOperator *op)
void ED_screens_footer_tools_menu_create(bContext *C, uiLayout *layout, void *)
bool ED_operator_camera_poll(bContext *C)
static void SCREEN_OT_area_dupli(wmOperatorType *ot)
#define KM_MODAL_SNAP_OFF
bool ED_operator_file_active(bContext *C)
static void area_split_preview_update_cursor(bContext *C, wmOperator *op)
static bool screen_animation_region_supports_time_follow(eSpace_Type spacetype, eRegion_Type regiontype)
static void SCREEN_OT_region_quadview(wmOperatorType *ot)
static void SCREEN_OT_screen_set(wmOperatorType *ot)
static AreaDockTarget area_docking_target(sAreaJoinData *jd, const wmEvent *event)
bool ED_operator_editmesh_view3d(bContext *C)
static wmOperatorStatus area_move_modal(bContext *C, wmOperator *op, const wmEvent *event)
static void area_split_cancel(bContext *C, wmOperator *op)
static bool screen_active_editable(bContext *C)
bool ED_operator_object_active_local_editable_posemode_exclusive(bContext *C)
static void area_move_apply_do(bContext *C, int delta, const int origval, const eScreenAxis dir_axis, const int bigger, const int smaller, const enum AreaMoveSnapType snap_type)
static wmOperatorStatus actionzone_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void region_scale_cancel(bContext *, wmOperator *op)
bool ED_operator_editsurf(bContext *C)
static void SCREEN_OT_repeat_last(wmOperatorType *ot)
static wmOperatorStatus area_move_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static bool area_join_apply(bContext *C, wmOperator *op)
static void region_blend_end(bContext *C, ARegion *region, const bool is_running)
static void SCREEN_OT_drivers_editor_show(wmOperatorType *ot)
bool ED_operator_object_active_editable_ex(bContext *C, const Object *ob)
static void SCREEN_OT_area_move(wmOperatorType *ot)
static void screen_modal_action_begin()
static void SCREEN_OT_marker_jump(wmOperatorType *ot)
bool ED_operator_editlattice(bContext *C)
bool ED_operator_outliner_active_no_editobject(bContext *C)
static bool region_flip_poll(bContext *C)
void ED_screens_header_tools_menu_create(bContext *C, uiLayout *layout, void *)
static wmOperatorStatus region_scale_invoke(bContext *C, wmOperator *op, const wmEvent *event)
bool ED_operator_editmesh(bContext *C)
static void ed_screens_statusbar_menu_create(uiLayout *layout, void *)
static bool ed_object_hidden(const Object *ob)
static wmOperatorStatus area_move_exec(bContext *C, wmOperator *op)
static const EnumPropertyItem space_context_cycle_direction[]
bool ED_operator_uvedit(bContext *C)
static wmOperatorStatus marker_jump_exec(bContext *C, wmOperator *op)
static void area_join_cancel(bContext *C, wmOperator *op)
bool ED_operator_outliner_active(bContext *C)
bool ED_operator_object_active_editable_font(bContext *C)
static wmOperatorStatus region_toggle_exec(bContext *C, wmOperator *op)
static void region_quadview_init_rv3d(ScrArea *area, ARegion *region, const char viewlock, const char view, const char persp)
static void SCREEN_OT_region_flip(wmOperatorType *ot)
static wmOperatorStatus screen_area_options_invoke(bContext *C, wmOperator *op, const wmEvent *event)
bool ED_operator_region_gizmo_active(bContext *C)
static void area_join_exit(bContext *C, wmOperator *op)
static bool area_move_init(bContext *C, wmOperator *op)
static void area_move_cancel(bContext *C, wmOperator *op)
static void blend_file_drop_copy(bContext *, wmDrag *drag, wmDropBox *drop)
static wmOperatorStatus screen_animation_cancel_exec(bContext *C, wmOperator *op)
bool ED_operator_objectmode_poll_msg(bContext *C)
static bool screen_maximize_area_poll(bContext *C)
static void SCREEN_OT_region_blend(wmOperatorType *ot)
bool ED_operator_buttons_active(bContext *C)
static void area_join_draw_cb(const wmWindow *win, void *userdata)
static ScrEdge * screen_area_edge_from_cursor(const bContext *C, const int cursor[2], ScrArea **r_sa1, ScrArea **r_sa2)
static wmOperatorStatus area_swap_exec(bContext *C, wmOperator *op)
static wmOperatorStatus keyframe_jump_exec(bContext *C, wmOperator *op)
static void SCREEN_OT_region_toggle(wmOperatorType *ot)
static wmOperatorStatus area_close_exec(bContext *C, wmOperator *op)
static bool area_dupli_open(bContext *C, ScrArea *area, const blender::int2 position)
static void SCREEN_OT_area_join(wmOperatorType *ot)
bool ED_operator_editfont(bContext *C)
static void area_split_draw_cb(const wmWindow *, void *userdata)
static std::string userpref_show_get_description(bContext *C, wmOperatorType *, PointerRNA *ptr)
static bool is_split_edge(const int alignment, const AZEdge edge)
ARegionRuntimeHandle * runtime
AZScrollDirection direction
struct RegionView3D * localvd
short butspacetype_subtype
ScrGlobalAreaData * global
double lagging_frame_count
struct bNodeTree * edittree
WorkSpace * temp_workspace_store
struct wmTimer * animtimer
struct ARegion * active_region
AreaDockTarget dock_target
void * draw_dock_callback
AreaMoveSnapType snap_type
PointerRNA op(wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, wmOperatorCallContext context, eUI_Item_Flag flag)
uiLayout & column(bool align)
void separator(float factor=1.0f, LayoutSeparatorType type=LayoutSeparatorType::Auto)
void menu_fn(blender::StringRefNull name, int icon, uiMenuCreateFunc func, void *arg)
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)
wmEventModifierFlag modifier
struct ReportList * reports
struct wmOperatorType * type
struct wmEvent * eventstate
struct WorkSpaceInstanceHook * workspace_hook
void WM_operator_free_all_after(wmWindowManager *wm, wmOperator *op)
void WM_cursor_modal_set(wmWindow *win, int val)
void WM_cursor_set(wmWindow *win, int curs)
void WM_cursor_modal_restore(wmWindow *win)
wmDropBox * WM_dropbox_add(ListBase *lb, const char *idname, bool(*poll)(bContext *C, wmDrag *drag, const wmEvent *event), void(*copy)(bContext *C, wmDrag *drag, wmDropBox *drop), void(*cancel)(Main *bmain, wmDrag *drag, wmDropBox *drop), WMDropboxTooltipFunc tooltip)
int WM_drag_get_path_file_type(const wmDrag *drag)
const char * WM_drag_get_single_path(const wmDrag *drag)
ListBase * WM_dropboxmap_find(const char *idname, int spaceid, int regionid)
void * WM_draw_cb_activate(wmWindow *win, void(*draw)(const wmWindow *win, void *customdata), void *customdata)
void WM_draw_cb_exit(wmWindow *win, void *handle)
int WM_event_drag_threshold(const wmEvent *event)
bool WM_operator_repeat_check(const bContext *, wmOperator *op)
wmOperatorStatus WM_operator_repeat_last(bContext *C, wmOperator *op)
void WM_main_add_notifier(uint type, void *reference)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
void WM_event_modal_handler_region_replace(wmWindow *win, const ARegion *old_region, ARegion *new_region)
wmOperatorStatus WM_operator_repeat(bContext *C, wmOperator *op)
wmEvent * WM_event_add(wmWindow *win, const wmEvent *event_to_add)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void wm_event_init_from_window(wmWindow *win, wmEvent *event)
void WM_event_add_mousemove(wmWindow *win)
@ EVT_ACTIONZONE_FULLSCREEN
void WM_gesture_box_cancel(bContext *C, wmOperator *op)
wmOperatorStatus WM_gesture_box_modal(bContext *C, wmOperator *op, const wmEvent *event)
wmOperatorStatus WM_gesture_box_invoke(bContext *C, wmOperator *op, const wmEvent *event)
wmKeyMap * WM_modalkeymap_ensure(wmKeyConfig *keyconf, const char *idname, const EnumPropertyItem *items)
void WM_modalkeymap_assign(wmKeyMap *km, const char *opname)
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
void WM_operator_properties_border(wmOperatorType *ot)
std::string WM_operatortype_name(wmOperatorType *ot, PointerRNA *properties)
void WM_operatortype_append(void(*opfunc)(wmOperatorType *))
wmOperatorStatus WM_operator_redo_popup(bContext *C, wmOperator *op)
bool WM_operator_winactive(bContext *C)
wmOperator * WM_operator_last_redo(const bContext *C)
void WM_window_native_pixel_coords(const wmWindow *win, int *x, int *y)
bool wm_cursor_position_get(wmWindow *win, int *r_x, int *r_y)
void wm_window_close(bContext *C, wmWindowManager *wm, wmWindow *win)
wmWindow * WM_window_open(bContext *C, const char *title, const rcti *rect_unscaled, int space_type, bool toplevel, bool dialog, bool temp, eWindowAlignment alignment, void(*area_setup_fn)(bScreen *screen, ScrArea *area, void *user_data), void *area_setup_user_data)
wmTimer * WM_event_timer_add(wmWindowManager *wm, wmWindow *win, const wmEventType event_type, const double time_step)
bool WM_window_is_temp_screen(const wmWindow *win)
void WM_window_rect_calc(const wmWindow *win, rcti *r_rect)
wmWindow * WM_window_find_by_area(wmWindowManager *wm, const ScrArea *area)
void WM_window_screen_rect_calc(const wmWindow *win, rcti *r_rect)
ViewLayer * WM_window_get_active_view_layer(const wmWindow *win)
void WM_event_timer_remove(wmWindowManager *wm, wmWindow *, wmTimer *timer)
void WM_window_title(wmWindowManager *wm, wmWindow *win, const char *title)
WorkSpace * WM_window_get_active_workspace(const wmWindow *win)
bScreen * WM_window_get_active_screen(const wmWindow *win)