11#include <fmt/format.h>
71#include "RNA_prototypes.hh"
85#define KM_MODAL_CANCEL 1
86#define KM_MODAL_APPLY 2
87#define KM_MODAL_SNAP_ON 3
88#define KM_MODAL_SNAP_OFF 4
144 if (
G.is_rendering) {
162 if (screen ==
nullptr) {
165 if (screen->active_region !=
nullptr) {
257 if (region ==
nullptr) {
261 if (gzmap ==
nullptr) {
304 if (ob && ob == obedit) {
568 if (obpose !=
nullptr) {
623 return nullptr != ((
Curve *)obedit->
data)->editnurb;
642 return nullptr != ((
Curve *)obedit->
data)->editnurb;
662 return nullptr != ((
Curve *)obedit->
data)->editnurb;
671 return nullptr != ((
Curve *)obedit->
data)->editfont;
680 return nullptr != ((
Lattice *)obedit->
data)->editlatt;
689 return nullptr != ((
MetaBall *)obedit->
data)->editelems;
777 rcti *rect,
const short ,
const short ,
const short x2,
const short y2)
785 *r_rect_clip = az->
rect;
797 (region->winrct.xmin +
802 (region->winrct.xmin +
811 (region->winrct.ymin +
816 (region->winrct.ymin +
854 for (az =
static_cast<AZone *
>(area->actionzones.first); az; az = az->
next) {
864 const int local_xy[2] = {
xy[0] - region->
winrct.
xmin,
xy[1] - region->winrct.ymin};
869 if (region->visible && region->overlap &&
899 if (mouse_sq < spot_sq) {
902 else if (mouse_sq < fadein_sq) {
905 else if (mouse_sq < fadeout_sq) {
906 az->
alpha = 1.0f -
float(mouse_sq - fadein_sq) /
float(fadeout_sq - fadein_sq);
924 View2D *v2d = ®ion->v2d;
934 else if (test_only) {
935 if (isect_value != 0) {
942 if (isect_value ==
'h') {
949 else if (isect_value ==
'v') {
957 const int local_xy[2] = {
xy[0] - region->winrct.xmin,
xy[1] - region->winrct.ymin};
958 float dist_fac = 0.0f, alpha = 0.0f;
962 CLAMP(dist_fac, 0.0f, 1.0f);
963 alpha = 1.0f - dist_fac;
969 CLAMP(dist_fac, 0.0f, 1.0f);
970 alpha = 1.0f - dist_fac;
988 area->flag &= ~AREA_FLAG_ACTIONZONES_UPDATE;
995 area->flag &= ~AREA_FLAG_ACTIONZONES_UPDATE;
1000 area->flag &= ~AREA_FLAG_ACTIONZONES_UPDATE;
1018 if (az !=
nullptr) {
1052 G.moving &= ~G_TRANSFORM_WM;
1076 event.customdata_free =
true;
1098 sad->
x =
event->xy[0];
1099 sad->
y =
event->xy[1];
1126 switch (event->
type) {
1128 const int delta_x = (
event->xy[0] - sad->
x);
1129 const int delta_y = (
event->xy[1] - sad->
y);
1132 const int delta_max =
max_ii(
abs(delta_x),
abs(delta_y));
1135 const int join_threshold = (0.6 *
U.widget_unit);
1136 const int split_threshold = (1.2 *
U.widget_unit);
1137 const int area_threshold = (0.1 *
U.widget_unit);
1140 if (delta_y >
abs(delta_x)) {
1143 else if (delta_x >=
abs(delta_y)) {
1146 else if (delta_y < -
abs(delta_x)) {
1173 is_gesture = (delta_max > area_threshold);
1180 else if (area == sad->
sa1) {
1185 is_gesture = (delta_max > split_threshold);
1187 else if (!area || area->global) {
1207 is_gesture = (delta_max > join_threshold);
1211#if defined(__APPLE__)
1221 is_gesture = (delta_max > area_threshold);
1255 ot->
name =
"Handle Area Action Zones";
1256 ot->
description =
"Handle area action zones for mouse actions/gestures";
1257 ot->
idname =
"SCREEN_OT_actionzone";
1277 const int cursor[2],
1289 if (actedge ==
nullptr) {
1349 if (sad ==
nullptr || sad->
sa1 ==
nullptr) {
1391 switch (event->
type) {
1397 status.item(
IFACE_(
"Select Area"), ICON_MOUSE_LMB);
1398 status.item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
1403 if (!sad->
sa2 || sad->
sa1 == sad->
sa2) {
1434 if (sa1 ==
nullptr || sa2 ==
nullptr) {
1445 ot->
idname =
"SCREEN_OT_area_swap";
1457 ot->
srna,
"cursor", 2,
nullptr, INT_MIN, INT_MAX,
"Cursor",
"", INT_MIN, INT_MAX);
1479 const rcti window_rect = {
1480 position.x, position.x + area->winx, position.y, position.y + area->winy};
1494 return (newwin !=
nullptr);
1502 if (sad ==
nullptr) {
1527 ot->
name =
"Duplicate Area into New Window";
1528 ot->
description =
"Duplicate selected area into new window";
1529 ot->
idname =
"SCREEN_OT_area_dupli";
1606 ot->
idname =
"SCREEN_OT_area_close";
1670 bool *use_bigger_smaller_snap)
1673 *bigger = *smaller = 100000;
1675 if (use_bigger_smaller_snap !=
nullptr) {
1676 *use_bigger_smaller_snap =
false;
1681 size_min =
max_ii(size_min, 0);
1686 if (area->v1->editflag && area->v2->editflag) {
1687 *smaller = area->v4->vec.x - size_max;
1688 *bigger = area->v4->vec.x - size_min;
1689 *use_bigger_smaller_snap =
true;
1693 if (area->v2->editflag && area->v3->editflag) {
1694 *smaller = area->v1->vec.y + size_min;
1695 *bigger = area->v1->vec.y + size_max;
1696 *use_bigger_smaller_snap =
true;
1700 if (area->v3->editflag && area->v4->editflag) {
1701 *smaller = area->v1->vec.x + size_min;
1702 *bigger = area->v1->vec.x + size_max;
1703 *use_bigger_smaller_snap =
true;
1707 if (area->v4->editflag && area->v1->editflag) {
1708 *smaller = area->v2->vec.y - size_max;
1709 *bigger = area->v2->vec.y - size_min;
1710 *use_bigger_smaller_snap =
true;
1723 if (area->v1->vec.y > window_rect.
ymin) {
1724 areamin +=
U.pixelsize;
1726 if (area->v2->vec.y < (window_rect.
ymax - 1)) {
1727 areamin +=
U.pixelsize;
1733 if (area->v1->editflag && area->v4->editflag) {
1734 *bigger =
min_ii(*bigger, y1);
1736 else if (area->v2->editflag && area->v3->editflag) {
1737 *smaller =
min_ii(*smaller, y1);
1743 if (area->v1->vec.x > window_rect.
xmin) {
1744 areamin +=
U.pixelsize;
1746 if (area->v4->vec.x < (window_rect.
xmax - 1)) {
1747 areamin +=
U.pixelsize;
1753 if (area->v1->editflag && area->v2->editflag) {
1754 *bigger =
min_ii(*bigger, x1);
1756 else if (area->v3->editflag && area->v4->editflag) {
1757 *smaller =
min_ii(*smaller, x1);
1783 if (actedge ==
nullptr) {
1803 v1->editflag = v1->flag;
1806 bool use_bigger_smaller_snap =
false;
1827 int m_cursor_final = -1;
1828 const int m_cursor = origval + delta;
1829 const int m_span =
float(bigger + smaller);
1830 const int m_min = origval - smaller;
1833 switch (snap_type) {
1835 m_cursor_final = m_cursor;
1836 if (!
ELEM(delta, bigger, -smaller)) {
1837 m_cursor_final -= (m_cursor %
AREAGRID);
1838 CLAMP(m_cursor_final, origval - smaller, origval + bigger);
1843 m_cursor_final = (m_cursor >= bigger) ? bigger : smaller;
1848 int snap_dist_best = INT_MAX;
1850 const float div_array[] = {
1866 for (
int i = 0; i <
ARRAY_SIZE(div_array); i++) {
1867 const int m_cursor_test = m_min +
round_fl_to_int(m_span * div_array[i]);
1868 const int snap_dist_test =
abs(m_cursor - m_cursor_test);
1869 if (snap_dist_best >= snap_dist_test) {
1870 snap_dist_best = snap_dist_test;
1871 m_cursor_final = m_cursor_test;
1877 if (!v1->editflag) {
1880 const int v_loc = (&v1->vec.x)[!axis];
1886 if (v_loc == (&
v2->vec.x)[!axis]) {
1887 const int v_loc2 = (&
v2->vec.x)[axis];
1889 if ((origval - smaller) < v_loc2 && v_loc2 < (origval + bigger)) {
1890 const int snap_dist_test =
abs(m_cursor - v_loc2);
1891 if (snap_dist_best >= snap_dist_test) {
1892 snap_dist_best = snap_dist_test;
1893 m_cursor_final = v_loc2;
1906 IN_RANGE_INCL(m_cursor_final, origval - smaller, origval + bigger));
1908 return m_cursor_final;
1921 status.
item(
IFACE_(
"Confirm"), ICON_MOUSE_LMB);
1922 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
1927 short final_loc = -1;
1928 bool doredraw =
false;
1931 CLAMP(delta, -smaller, bigger);
1935 final_loc = origval + delta;
1939 screen, snap_type, delta, origval, dir_axis, bigger, smaller);
1948 short oldval = (&v1->vec.x)[axis];
1949 (&v1->vec.x)[axis] = final_loc;
1951 if (oldval == final_loc) {
1961 bool redraw_all =
false;
1963 if (area->v1->editflag || area->v2->editflag || area->v3->editflag || area->v4->editflag) {
1967 if (
abs(height - area->global->size_min) <
abs(height - area->global->size_max)) {
1968 area->global->cur_fixed_height = area->global->size_min;
1971 area->global->cur_fixed_height = area->global->size_max;
1974 screen->do_refresh =
true;
2015 G.moving &= ~G_TRANSFORM_WM;
2043 status.
item(
IFACE_(
"Confirm"), ICON_MOUSE_LMB);
2044 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
2068 switch (event->
type) {
2084 switch (event->
val) {
2106 status.
item(
IFACE_(
"Confirm"), ICON_MOUSE_LMB);
2107 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
2120 ot->
name =
"Move Area Edges";
2122 ot->
idname =
"SCREEN_OT_area_move";
2136 RNA_def_int(
ot->
srna,
"delta", 0, INT_MIN, INT_MAX,
"Delta",
"", INT_MIN, INT_MAX);
2195 if (!area || area->global) {
2241 if (area ==
nullptr) {
2254 sd->
origmin = area->v1->vec.x;
2258 sd->
origmin = area->v1->vec.y;
2278 if (sav1 == sbv4 && sav2 == sbv3) {
2281 if (sav2 == sbv1 && sav3 == sbv4) {
2284 if (sav3 == sbv2 && sav4 == sbv1) {
2287 if (sav1 == sbv2 && sav4 == sbv3) {
2310 if (sd->
narea ==
nullptr) {
2372 G.moving &= ~G_TRANSFORM_WM;
2405 if (sad ==
nullptr || sad->
modifier > 0) {
2410 if (sad->
sa1 ==
nullptr || sad->
az ==
nullptr) {
2422 const bool is_left = factor_v < 0.5f;
2423 const bool is_bottom = factor_h < 0.5f;
2424 const bool is_right = !
is_left;
2425 const bool is_top = !is_bottom;
2438 if ((is_top &&
is_left) || (is_bottom && is_right)) {
2439 factor = 1.0f - factor;
2453 if (area ==
nullptr) {
2459 op->
ptr, prop_factor,
float(event->
xy[0] - area->v1->vec.x) /
float(area->winx));
2463 op->
ptr, prop_factor,
float(event->
xy[1] - area->v1->vec.y) /
float(area->winy));
2486 if (actedge ==
nullptr) {
2553 sd->
narea =
nullptr;
2563 bool update_factor =
false;
2566 switch (event->
type) {
2568 update_factor =
true;
2597 update_factor =
true;
2612 update_factor =
true;
2616 if (update_factor) {
2658 sd->
origmin = area->v1->vec.x;
2662 sd->
origmin = area->v1->vec.y;
2667 area->v1->editflag = area->v2->editflag = area->v3->editflag = area->v4->editflag = 1;
2677 area->v1->editflag = area->v2->editflag = area->v3->editflag = area->v4->editflag = 0;
2697 {0,
nullptr, 0,
nullptr,
nullptr},
2704 ot->
idname =
"SCREEN_OT_area_split";
2720 ot->
srna,
"cursor", 2,
nullptr, INT_MIN, INT_MAX,
"Cursor",
"", INT_MIN, INT_MAX);
2749 dist = region->
winy + scale_region->
winy -
U.pixelsize;
2753 dist = region->
winx + scale_region->
winx -
U.pixelsize;
2767 if (region == scale_region) {
2772 dist -= region->winx;
2775 dist -= region->winx;
2784 dist -= region->winy;
2793 dist -= region->winy;
2815 G.moving &= ~G_TRANSFORM_WM;
2887 short *
size, maxsize = -1;
2898 if (*size > maxsize && maxsize > 0) {
2918 if (region_tool_header !=
nullptr) {
2935 switch (event->
type) {
2941 const int snap_size_threshold = (
U.widget_unit * 2) / aspect;
2942 bool size_changed =
false;
2945 delta =
event->xy[0] - rmd->
orig_xy[0];
2953 const int size_no_snap = rmd->
origval + delta;
2961 if ((
abs(rmd->
region->
sizex - sizex_test) < snap_size_threshold) &&
2963 sizex_test <= rmd->maxsize)
2970 if (size_no_snap <
UI_UNIT_X / aspect) {
2986 size_changed =
true;
2990 delta =
event->xy[1] - rmd->
orig_xy[1];
2998 const int size_no_snap = rmd->
origval + delta;
3006 if ((
abs(rmd->
region->
sizey - sizey_test) < snap_size_threshold) &&
3008 (sizey_test <= rmd->maxsize))
3018 if (size_no_snap < (
UI_UNIT_Y / 4) / aspect) {
3034 size_changed =
true;
3080 ot->
name =
"Scale Region Size";
3082 ot->
idname =
"SCREEN_OT_region_scale";
3126 if ((scene->r.cfra < region->v2d.cur.xmin) || (scene->r.cfra > region->v2d.cur.xmax)) {
3127 region->v2d.cur.xmax = scene->r.cfra + (
w / 2);
3128 region->v2d.cur.xmin = scene->r.cfra - (
w / 2);
3132 if (scene->r.cfra < region->v2d.cur.xmin) {
3133 region->v2d.cur.xmax = scene->r.cfra;
3134 region->v2d.cur.xmin = region->v2d.cur.xmax -
w;
3136 else if (scene->r.cfra > region->v2d.cur.xmax) {
3137 region->v2d.cur.xmin = scene->r.cfra;
3138 region->v2d.cur.xmax = region->v2d.cur.xmin +
w;
3156 if (delta < 0 && scene->r.subframe > 0) {
3159 scene->r.cfra += delta;
3161 scene->r.subframe = 0.0f;
3174 ot->
name =
"Frame Offset";
3175 ot->
idname =
"SCREEN_OT_frame_offset";
3176 ot->
description =
"Move current frame forward/backward by a given number";
3185 RNA_def_int(
ot->
srna,
"delta", 0, INT_MIN, INT_MAX,
"Delta",
"", INT_MIN, INT_MAX);
3218 scene->r.cfra =
PEFRA;
3221 scene->r.cfra =
PSFRA;
3236 ot->
name =
"Jump to Endpoint";
3237 ot->
description =
"Jump to first/last frame in frame range";
3238 ot->
idname =
"SCREEN_OT_frame_jump";
3248 ot->
srna,
"end",
false,
"Last Frame",
"Jump to the last frame of the frame range");
3267 if (scene ==
nullptr) {
3296 nullptr,
static_cast<const GreasePencil *
>(ob->
data), keylist, 0, active_layer_only);
3314 while ((ak !=
nullptr) && (done ==
false)) {
3315 if (cfra < ak->cfra) {
3327 while ((ak !=
nullptr) && (done ==
false)) {
3328 if (cfra > ak->
cfra) {
3342 if (done ==
false) {
3365 ot->
name =
"Jump to Keyframe";
3367 ot->
idname =
"SCREEN_OT_keyframe_jump";
3389 int closest = scene->r.cfra;
3396 if ((marker->frame > scene->r.cfra) && (!found || closest > marker->frame)) {
3397 closest = marker->frame;
3403 closest = marker->frame;
3429 ot->
name =
"Jump to Marker";
3431 ot->
idname =
"SCREEN_OT_marker_jump";
3466 ot->
idname =
"SCREEN_OT_screen_set";
3493 if (area_iter->full) {
3499 if (area ==
nullptr) {
3538 ot->
name =
"Toggle Maximize Area";
3539 ot->
description =
"Toggle display selected area as fullscreen/maximized";
3540 ot->
idname =
"SCREEN_OT_screen_full_area";
3605 if (!sd || !sd->
sa1) {
3609 if (sd->
sa1 == sd->
sa2) {
3652 if (sa1 ==
nullptr && sa2 ==
nullptr) {
3669 if (sa1 ==
nullptr) {
3735 G.moving &= ~G_TRANSFORM_WM;
3768 if (sad ==
nullptr || sad->
modifier > 0 || sad->
sa1 ==
nullptr) {
3817 bool aligned_neighbors = (offset1 == 0 && offset2 == 0);
3818 bool same_area = (jd->
sa1 == jd->
sa2);
3833 if (jd->
factor <= 0.5f) {
3865 if (event->
xy[0] < 0 || event->
xy[0] > jd->
win1->
sizex || event->
xy[1] < 1 ||
3875 if (screen && screen->temp) {
3889#if defined(__APPLE__)
3901 const bool alt =
event->modifier &
KM_ALT;
3902 const bool ctrl =
event->modifier &
KM_CTRL;
3903 const float accel = (alt || ctrl) ? 2.5f : 2.0;
3905 float factor =
pos * accel;
3908 if (factor >= 0.4375f && factor < 0.5f) {
3911 else if (factor >= 0.5f && factor < 0.5625f) {
3917 if (factor < 0.1875f) {
3920 else if (factor >= 0.1875f && factor < 0.3125f) {
3923 else if (factor >= 0.3125f && factor < 0.4375f) {
3926 else if (factor >= 0.5625f && factor < 0.6875f) {
3929 else if (factor >= 0.6875f && factor < 0.8125f) {
3932 else if (factor > 0.8125f) {
3946 if (jd->
sa1 == jd->
sa2) {
3952 if (screen && screen->temp) {
3965 const int x =
event->xy[0] + win1_posx - win2_posx - jd->
sa2->
totrct.
xmin;
3966 const int y =
event->xy[1] + win1_posy - win2_posy - jd->
sa2->
totrct.
ymin;
4006 if (fac_y > 0.4f && fac_y < 0.6f) {
4009 if (
float(y) >
float(jd->
sa2->
winy) / 2.0f) {
4019 if (fac_x > 0.4f && fac_x < 0.6f) {
4022 if (
float(x) >
float(jd->
sa2->
winx) / 2.0f) {
4033 if (fac_x > 0.4f && fac_x < 0.6f && fac_y > 0.4f && fac_y < 0.6f) {
4040 const bool upper_left =
float(x) /
float(y + 1) < area_ratio;
4044 if (upper_left && !lower_left) {
4048 if (!upper_left && lower_left) {
4052 if (upper_left && lower_left) {
4056 if (!upper_left && !lower_left) {
4077 const int v_loc = (&v1->vec.x)[axis];
4078 const int v_dist =
abs(v_loc - event->
xy[axis]);
4079 if (v_dist < dist) {
4088 float frac_fac = round(fac * 12.0f) / 12.0f;
4091 fac = (
fabs(near_fac - fac) <
fabs(frac_fac - fac)) ? near_fac : frac_fac;
4094 return std::clamp(fac, 0.001f, 0.999f);
4104#if (OS_WINDOWS || OS_MAC)
4119 if (win_count > 1) {
4133 if (jd->
sa1 == area) {
4135 if (!(
abs(jd->
start_x - event->
xy[0]) > (10 *
U.pixelsize) ||
4179 if (jd ==
nullptr) {
4184 switch (event->
type) {
4194 status.
item(
IFACE_(
"Select Split"), ICON_MOUSE_LMB);
4195 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
4200 status.
item(
IFACE_(
"Select Area"), ICON_MOUSE_LMB);
4201 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
4204 status.
item(
IFACE_(
"Select Location"), ICON_MOUSE_LMB);
4205 status.
item(
IFACE_(
"Cancel"), ICON_EVENT_ESC);
4218 if (jd->
sa1 && !jd->
sa2) {
4220 if (event->
xy[0] < 0 || event->
xy[0] > jd->
win1->
sizex || event->
xy[1] < 1 ||
4237 else if (jd->
sa1 && jd->
sa1 == jd->
sa2) {
4255 if (large_v || large_h) {
4293 const bool do_close_win = jd->
close_win;
4320 ot->
idname =
"SCREEN_OT_area_join";
4375 "SCREEN_OT_area_split",
4376 IFACE_(
"Vertical Split"),
4377 ICON_SPLIT_VERTICAL,
4388 "SCREEN_OT_area_split",
4389 IFACE_(
"Horizontal Split"),
4390 ICON_SPLIT_HORIZONTAL,
4408 "SCREEN_OT_area_join",
4420 "SCREEN_OT_area_join",
4437 "SCREEN_OT_area_swap",
4455 ot->
name =
"Area Options";
4457 ot->
idname =
"SCREEN_OT_area_options";
4481 if (area->spacedata.first != area->spacedata.last) {
4499 ot->
name =
"Clean Up Space Data";
4500 ot->
description =
"Remove unused settings for invisible editors";
4501 ot->
idname =
"SCREEN_OT_spacedata_cleanup";
4533 lastop = lastop->
prev;
4547 ot->
name =
"Repeat Last";
4549 ot->
idname =
"SCREEN_OT_repeat_last";
4579 lastop = lastop->
prev, i--)
4615 ot->
name =
"Repeat History";
4616 ot->
description =
"Display menu for previous actions performed";
4617 ot->
idname =
"SCREEN_OT_repeat_history";
4648 ot->
description =
"Display parameters for last action performed";
4649 ot->
idname =
"SCREEN_OT_redo_last";
4673 ScrArea *area,
ARegion *region,
const char viewlock,
const char view,
const char persp)
4685 rv3d->
persp = persp;
4708 region->alignment = 0;
4719 if (region != region_user) {
4720 std::swap(region->regiondata, region_user->
regiondata);
4721 rv3d =
static_cast<RegionView3D *
>(region->regiondata);
4750 else if (region->next) {
4766 View3D *v3d =
static_cast<View3D *
>(area->spacedata.first);
4767 int index_qsplit = 0;
4783 (region = region->next),
4788 (region = region->next),
4814 ot->
name =
"Toggle Quad View";
4815 ot->
description =
"Split selected area into camera, front, right, and top views";
4816 ot->
idname =
"SCREEN_OT_region_quadview";
4866 ot->
name =
"Toggle Region";
4867 ot->
idname =
"SCREEN_OT_region_toggle";
4880 "Type of the region to toggle");
4934 ot->
name =
"Flip Region";
4935 ot->
idname =
"SCREEN_OT_region_flip";
4936 ot->
description =
"Toggle the region's alignment (left/right or top/bottom)";
4966 ot->
name =
"Expand/Collapse Header Menus";
4967 ot->
idname =
"SCREEN_OT_header_toggle_menus";
4968 ot->
description =
"Expand or collapse the header pulldown menus";
4991 "SCREEN_OT_area_join",
4992 IFACE_(
"Move/Split Area"),
5002 area->full ?
IFACE_(
"Restore Areas") :
IFACE_(
"Maximize Area"),
5004 "SCREEN_OT_screen_full_area");
5006 if (area->spacetype !=
SPACE_FILE && !area->full) {
5008 "SCREEN_OT_screen_full_area",
5009 IFACE_(
"Full Screen Area"),
5018 uiItemO(layout,
nullptr, ICON_NONE,
"SCREEN_OT_area_dupli");
5020 uiItemO(layout,
nullptr, ICON_X,
"SCREEN_OT_area_close");
5039 "show_region_tool_header",
5041 IFACE_(
"Show Tool Settings"),
5048 "SCREEN_OT_header_toggle_menus");
5080 IFACE_(
"Flip to Bottom");
5085 uiItemO(layout, but_flip_str, ICON_NONE,
"SCREEN_OT_region_flip");
5095 "show_statusbar_scene_duration",
5097 IFACE_(
"Scene Duration"),
5105 "show_extensions_updates",
5107 IFACE_(
"Extensions Updates"),
5153 ot->
idname =
"SCREEN_OT_region_context_menu";
5170 bool from_anim_edit)
5175 switch (spacetype) {
5215 if ((redraws &
TIME_CLIPS) || from_anim_edit) {
5251 switch (spacetype) {
5275 if (scene->r.cfra < region->v2d.cur.xmin) {
5276 region->v2d.cur.xmax = scene->r.cfra;
5277 region->v2d.cur.xmin = region->v2d.cur.xmax -
w;
5281 if (scene->r.cfra > region->v2d.cur.xmax) {
5282 region->v2d.cur.xmin = scene->r.cfra;
5283 region->v2d.cur.xmax = region->v2d.cur.xmin +
w;
5317 const SpaceSeq *sseq =
static_cast<const SpaceSeq *
>(area->spacedata.first);
5331 wmTimer *wt = screen->animtimer;
5339#ifdef PROFILE_AUDIO_SYNCH
5340 static int old_frame = 0;
5365 if (scene_eval ==
nullptr) {
5375 double newfra = time *
FPS;
5378 if (newfra + 0.5 > scene->r.cfra && newfra - 0.5 < scene->r.cfra) {
5382 scene->r.cfra =
max_ii(scene->r.cfra, round(newfra));
5385#ifdef PROFILE_AUDIO_SYNCH
5386 newfra_int = scene->r.cfra;
5387 if (newfra_int < old_frame) {
5388 printf(
"back jump detected, frame %d!\n", newfra_int);
5390 else if (newfra_int > old_frame + 1) {
5391 printf(
"forward jump detected, frame %d!\n", newfra_int);
5394 old_frame = newfra_int;
5407 if (delta_frames < 1.0) {
5413 delta_frames = 1.0f;
5421 const int step = delta_frames;
5425 scene->r.cfra -= step;
5428 scene->r.cfra += step;
5443 sad->
flag &= ~ANIMPLAY_FLAG_JUMPED;
5448 if (scene->r.cfra < scene->r.psfra) {
5449 scene->r.cfra = scene->r.pefra;
5454 if (scene->r.cfra < scene->r.sfra) {
5455 scene->r.cfra = scene->r.efra;
5463 if (scene->r.cfra > scene->r.pefra) {
5464 scene->r.cfra = scene->r.psfra;
5469 if (scene->r.cfra > scene->r.efra) {
5470 scene->r.cfra = scene->r.sfra;
5479 sad->
flag &= ~ANIMPLAY_FLAG_USE_NEXT_FRAME;
5485#ifdef PROFILE_AUDIO_SYNCH
5486 old_frame = scene->r.cfra;
5500 bool redraw =
false;
5501 if (region == sad->
region) {
5540 ot->
name =
"Animation Step";
5542 ot->
idname =
"SCREEN_OT_animation_step";
5563 if (screen->animtimer || screen->scrubbing) {
5576 if (screen->animtimer) {
5619 if (screen->animtimer) {
5620 wmTimer *wt = screen->animtimer;
5647 ot->
name =
"Play Animation";
5649 ot->
idname =
"SCREEN_OT_animation_play";
5657 ot->
srna,
"reverse",
false,
"Play in Reverse",
"Animation is played backwards");
5681 scene->r.cfra = sad->
sfra;
5696 ot->
name =
"Cancel Animation";
5697 ot->
description =
"Cancel animation, returning to the original frame";
5698 ot->
idname =
"SCREEN_OT_animation_cancel";
5709 "Restore the frame when animation was initialized");
5742 printf(
"box select do select\n");
5745 printf(
"box select deselect\n");
5748 printf(
"box select do something\n");
5758 ot->
idname =
"SCREEN_OT_box_select";
5769 RNA_def_int(
ot->
srna,
"event_type", 0, INT_MIN, INT_MAX,
"Event Type",
"", INT_MIN, INT_MAX);
5789 if (area_iter->full) {
5807 ot->
name =
"Back to Previous Screen";
5808 ot->
description =
"Revert back to the original screen layout, before fullscreen area overlay";
5809 ot->
idname =
"SCREEN_OT_back_to_previous";
5841 const rcti window_rect = {
5843 event->xy[0] + sizex,
5845 event->xy[1] + sizey,
5858 nullptr) !=
nullptr)
5881 const char *section_name;
5883 return fmt::format(
TIP_(
"Show {} preferences"), section_name);
5895 ot->
name =
"Open Preferences...";
5896 ot->
description =
"Edit user preferences and system settings";
5897 ot->
idname =
"SCREEN_OT_userpref_show";
5909 "Section to activate in the Preferences");
5937 const rcti window_rect = {
5939 event->xy[0] + sizex,
5941 event->xy[1] + sizey,
5946 IFACE_(
"Blender Drivers Editor"),
5954 nullptr) !=
nullptr)
5960 bool driven, special;
5962 C, &
ptr, prop, index,
nullptr,
nullptr, &driven, &special);
5994 ot->
name =
"Show Drivers Editor";
5995 ot->
description =
"Show drivers editor in a separate window";
5996 ot->
idname =
"SCREEN_OT_drivers_editor_show";
6014 const int shift_y = 480;
6015 const int mx =
event->
xy[0];
6016 const int my =
event->xy[1] + shift_y;
6020 const rcti window_rect = {
6029 IFACE_(
"Blender Info Log"),
6037 nullptr) !=
nullptr)
6048 ot->
name =
"Show Info Log";
6050 ot->
idname =
"SCREEN_OT_info_log_show";
6109 ot->
name =
"Delete Screen";
6135#define TIMESTEP (1.0f / 60.0f)
6140 if (region->regiontimer ==
nullptr &&
6143 region = region->prev;
6146 if (region->regiontimer) {
6150 alpha =
float(region->regiontimer->time_duration) /
TIMEOUT;
6156 CLAMP(alpha, 0.0f, 1.0f);
6188 region->regiontimer =
nullptr;
6196 if (region->regiontimer) {
6206 region->
flag &= ~RGN_FLAG_HIDDEN;
6224 region->regiontimer->customdata = rgi;
6257 ot->
name =
"Region Alpha";
6258 ot->
idname =
"SCREEN_OT_region_blend";
6291 if (area->spacetype != space_type) {
6304 for (
int i = 1; i < item_len; i++) {
6306 if ((item_test->
value >> 16) == space_type) {
6323 ot->
name =
"Cycle Space Type Set";
6325 ot->
idname =
"SCREEN_OT_space_type_set_or_cycle";
6345 {0,
nullptr, 0,
nullptr,
nullptr},
6364 const char *propname;
6366 switch (area->spacetype) {
6368 *r_ptr =
RNA_pointer_create(&screen->id, &RNA_SpaceProperties, area->spacedata.first);
6369 propname =
"context";
6373 propname =
"active_section";
6402 ot->
name =
"Cycle Space Context";
6403 ot->
description =
"Cycle through the editor context by activating the next/previous one";
6404 ot->
idname =
"SCREEN_OT_space_context_cycle";
6417 "Direction to cycle through");
6438 if (ordered.
size() == 1) {
6445 switch (direction) {
6447 workspace_dst =
reinterpret_cast<WorkSpace *
>(index == 0 ? ordered.
last() :
6448 ordered[index - 1]);
6451 workspace_dst =
reinterpret_cast<WorkSpace *
>(
6466 ot->
name =
"Cycle Workspace";
6468 ot->
idname =
"SCREEN_OT_workspace_cycle";
6481 "Direction to cycle through");
6554 {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_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)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void BLI_INLINE bool BLI_listbase_is_single(const struct ListBase *lb)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
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])
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
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)
void DEG_id_tag_update(ID *id, unsigned int flags)
Scene * DEG_get_evaluated_scene(const Depsgraph *graph)
Main * DEG_get_bmain(const Depsgraph *graph)
#define ID_IS_EDITABLE(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
#define OB_MODE_ALL_WEIGHT_PAINT
Object is a sort of wrapper for general info.
#define RGN_ALIGN_ENUM_FROM_MASK(align)
@ RGN_ALIGN_HIDE_WITH_PREV
#define AREAMAP_FROM_SCREEN(screen)
@ RGN_TYPE_ASSET_SHELF_HEADER
@ RGN_FLAG_RESIZE_RESPECT_BUTTON_SECTIONS
@ RGN_FLAG_NO_USER_RESIZE
@ RGN_FLAG_HIDDEN_BY_USER
@ 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)
bool ED_workspace_layout_cycle(WorkSpace *workspace, short direction, bContext *C) ATTR_NONNULL()
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)
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)
void ED_region_visibility_change_update(bContext *C, ScrArea *area, ARegion *region)
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_area_init(wmWindowManager *wm, wmWindow *win, ScrArea *area)
void ED_screen_full_prevspace(bContext *C, ScrArea *area)
@ SPACE_CONTEXT_CYCLE_NEXT
@ SPACE_CONTEXT_CYCLE_PREV
@ ANIMPLAY_FLAG_USE_NEXT_FRAME
bool ED_space_sequencer_has_playback_animation(const SpaceSeq *sseq, const Scene *scene)
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
void uiLayoutSetActive(uiLayout *layout, bool active)
void uiItemIntO(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, int value)
void uiItemFullO(uiLayout *layout, const char *opname, const char *name, int icon, IDProperty *properties, wmOperatorCallContext context, eUI_Item_Flag flag, PointerRNA *r_opptr)
#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)
void uiItemS(uiLayout *layout)
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)
void uiItemO(uiLayout *layout, const char *name, int icon, const char *opname)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
bool UI_region_button_sections_is_inside_x(const ARegion *region, const int mval_x)
void uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
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 WM_EVENT_CURSOR_MOTION_THRESHOLD
#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)
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
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)
constexpr int64_t last(const int64_t n=0) const
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])
const Depsgraph * depsgraph
draw_view in_light_buf[] float
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
void mask_to_keylist(bDopeSheet *, MaskLayer *masklay, AnimKeylist *keylist)
const ActKeyColumn * ED_keylist_find_prev(const AnimKeylist *keylist, const float cfra)
void gpencil_to_keylist(bDopeSheet *ads, bGPdata *gpd, AnimKeylist *keylist, const bool active)
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)
AnimKeylist * ED_keylist_create()
void ED_keylist_free(AnimKeylist *keylist)
const ActKeyColumn * ED_keylist_find_next(const AnimKeylist *keylist, const float cfra)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
static int box_select_exec(bContext *C, wmOperator *op)
ccl_device_inline float2 fabs(const float2 a)
Object * context_active_object(const bContext *C)
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(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_dock_preview(ScrArea *source, ScrArea *target, AreaDockTarget dock_target, float factor, int x, int y)
void screen_draw_split_preview(ScrArea *area, const eScreenAxis dir_axis, const float factor)
void screen_draw_move_highlight(bScreen *screen, eScreenAxis dir_axis)
void screen_draw_join_highlight(const wmWindow *win, ScrArea *sa1, ScrArea *sa2, eScreenDir dir)
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)
int screen_area_join(bContext *C, bScreen *screen, ScrArea *sa1, ScrArea *sa2)
ScrArea * area_split(const wmWindow *win, bScreen *screen, ScrArea *area, const eScreenAxis dir_axis, const float fac, const bool merge)
bool screen_area_close(bContext *C, bScreen *screen, ScrArea *area)
ScrEdge * screen_geom_area_map_find_active_scredge(const ScrAreaMap *area_map, const rcti *bounds_rect, const int mx, const int my)
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)
int screen_geom_area_width(const ScrArea *area)
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 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 SCREEN_OT_area_options(wmOperatorType *ot)
bool ED_operator_editarmature(bContext *C)
static int frame_jump_exec(bContext *C, wmOperator *op)
static void area_dupli_fn(bScreen *, ScrArea *area, void *user_data)
static int screen_context_menu_invoke(bContext *C, wmOperator *, const wmEvent *)
static void screen_area_menu_items(ScrArea *area, uiLayout *layout)
static int area_split_exec(bContext *C, wmOperator *op)
static bool ed_operator_posemode_exclusive_ex(bContext *C, Object *obact)
static int redo_last_invoke(bContext *C, wmOperator *, const wmEvent *)
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 int area_move_modal(bContext *C, wmOperator *op, const wmEvent *event)
static bool area_split_allowed(const ScrArea *area, const eScreenAxis dir_axis)
static void keymap_modal_set(wmKeyConfig *keyconf)
static void SCREEN_OT_region_scale(wmOperatorType *ot)
static int screen_maximize_area_exec(bContext *C, wmOperator *op)
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 int area_swap_invoke(bContext *C, wmOperator *op, const wmEvent *event)
bool ED_operator_graphedit_active(bContext *C)
bool ED_operator_action_active(bContext *C)
bool ED_operator_sequencer_active_editable(bContext *C)
bool ED_operator_animview_active(bContext *C)
static int area_move_invoke(bContext *C, wmOperator *op, const wmEvent *event)
bool ED_operator_node_editable(bContext *C)
static void SCREEN_OT_info_log_show(wmOperatorType *ot)
bool ED_operator_screen_mainwinactive(bContext *C)
static int screen_animation_cancel_exec(bContext *C, wmOperator *op)
static int area_max_regionsize(ScrArea *area, ARegion *scale_region, AZEdge edge)
static bool area_split_menu_init(bContext *C, wmOperator *op)
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)
static int area_swap_modal(bContext *C, wmOperator *op, const wmEvent *event)
static bool keyframe_jump_poll(bContext *C)
static bool space_context_cycle_poll(bContext *C)
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 void SCREEN_OT_workspace_cycle(wmOperatorType *ot)
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)
void ED_keymap_screen(wmKeyConfig *keyconf)
static int screen_animation_play_exec(bContext *C, wmOperator *op)
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 void SCREEN_OT_userpref_show(wmOperatorType *ot)
bool ED_operator_editable_mesh(bContext *C)
static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event)
static int area_join_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void SCREEN_OT_actionzone(wmOperatorType *ot)
static int screen_delete_exec(bContext *C, wmOperator *)
static int area_join_modal(bContext *C, wmOperator *op, const wmEvent *event)
static void actionzone_apply(bContext *C, wmOperator *op, int type)
bool ED_operator_scene(bContext *C)
bool ED_operator_object_active_local_editable(bContext *C)
static int region_toggle_exec(bContext *C, wmOperator *op)
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 float area_docking_snap(const float pos, const wmEvent *event)
int ED_screen_animation_play(bContext *C, int sync, int mode)
static int marker_jump_exec(bContext *C, wmOperator *op)
static void region_scale_toggle_hidden(bContext *C, RegionMoveData *rmd)
static int header_toggle_menus_exec(bContext *C, wmOperator *)
static bool match_region_with_redraws(const ScrArea *area, eRegion_Type regiontype, eScreen_Redraws_Flag redraws, bool from_anim_edit)
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 int drivers_editor_show_exec(bContext *C, wmOperator *op)
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 void SCREEN_OT_area_close(wmOperatorType *ot)
static void SCREEN_OT_redo_last(wmOperatorType *ot)
static int space_type_set_or_cycle_exec(bContext *C, wmOperator *op)
@ 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 int screen_new_exec(bContext *C, wmOperator *)
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)
static int area_join_exec(bContext *C, wmOperator *op)
bool ED_operator_scene_editable(bContext *C)
bool ED_operator_asset_browsing_active(bContext *C)
static int repeat_last_exec(bContext *C, wmOperator *)
static int screen_animation_step_invoke(bContext *C, wmOperator *, const wmEvent *event)
static int actionzone_invoke(bContext *C, wmOperator *op, const wmEvent *event)
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)
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 int info_log_show_exec(bContext *C, wmOperator *op)
static int spacedata_cleanup_exec(bContext *C, wmOperator *op)
bool ED_operator_node_active(bContext *C)
static void SCREEN_OT_screen_full_area(wmOperatorType *ot)
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_OT_frame_offset(wmOperatorType *ot)
static void area_docking_apply(bContext *C, wmOperator *op)
static ScrArea * screen_actionzone_area(bScreen *screen, const AZone *az)
static int repeat_history_exec(bContext *C, wmOperator *op)
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 void area_join_update_data(bContext *C, sAreaJoinData *jd, const wmEvent *event)
bool ED_operator_posemode_exclusive(bContext *C)
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 int region_quadview_exec(bContext *C, wmOperator *op)
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 int frame_offset_exec(bContext *C, wmOperator *op)
static void area_swap_exit(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])
static int region_blend_invoke(bContext *C, wmOperator *, const wmEvent *event)
bool ED_operator_object_active_editable_mesh(bContext *C)
static void SCREEN_OT_spacedata_cleanup(wmOperatorType *ot)
static int area_dupli_invoke(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 int area_move_exec(bContext *C, wmOperator *op)
static void SCREEN_OT_new(wmOperatorType *ot)
static void SCREEN_OT_animation_cancel(wmOperatorType *ot)
static int userpref_show_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)
static void area_move_draw_cb(const wmWindow *, void *userdata)
bool ED_operator_editmesh_view3d(bContext *C)
static int space_workspace_cycle_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int repeat_history_invoke(bContext *C, wmOperator *op, const wmEvent *)
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 bool ED_operator_screenactive_norender(bContext *C)
static int area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event)
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 int region_scale_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 bool area_join_apply(bContext *C, wmOperator *op)
static int actionzone_modal(bContext *C, wmOperator *op, const wmEvent *event)
static void region_blend_end(bContext *C, ARegion *region, const bool is_running)
static void SCREEN_OT_drivers_editor_show(wmOperatorType *ot)
static void areas_do_frame_follow(bContext *C, bool middle)
bool ED_operator_object_active_editable_ex(bContext *C, const Object *ob)
static void SCREEN_OT_area_move(wmOperatorType *ot)
static void SCREEN_OT_marker_jump(wmOperatorType *ot)
bool ED_operator_editlattice(bContext *C)
static int screen_area_options_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int fullscreen_back_exec(bContext *C, wmOperator *op)
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 *)
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 const EnumPropertyItem space_context_cycle_direction[]
static int space_context_cycle_invoke(bContext *C, wmOperator *op, const wmEvent *)
bool ED_operator_uvedit(bContext *C)
static int region_flip_exec(bContext *C, wmOperator *)
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 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)
bool ED_operator_region_gizmo_active(bContext *C)
static void area_join_exit(bContext *C, wmOperator *op)
static void area_join_dock_cb(const wmWindow *, void *userdata)
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)
bool ED_operator_objectmode_poll_msg(bContext *C)
static int area_close_exec(bContext *C, wmOperator *op)
static bool screen_maximize_area_poll(bContext *C)
static void SCREEN_OT_region_blend(wmOperatorType *ot)
static int area_swap_exec(bContext *C, wmOperator *op)
bool ED_operator_buttons_active(bContext *C)
static int area_split_modal(bContext *C, wmOperator *op, const wmEvent *event)
static void area_join_draw_cb(const wmWindow *win, void *userdata)
static int keyframe_jump_exec(bContext *C, wmOperator *op)
static ScrEdge * screen_area_edge_from_cursor(const bContext *C, const int cursor[2], ScrArea **r_sa1, ScrArea **r_sa2)
static int screen_set_exec(bContext *C, wmOperator *op)
static void SCREEN_OT_region_toggle(wmOperatorType *ot)
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)
void(* on_user_resize)(const ARegion *region)
int(* snap_size)(const ARegion *region, int size, int axis)
struct wmTimer * regiontimer
struct ARegionType * type
AZScrollDirection direction
struct RegionView3D * localvd
double lagging_frame_count
struct bNodeTree * edittree
WorkSpace * temp_workspace_store
struct wmTimer * animtimer
AreaDockTarget dock_target
void * draw_dock_callback
AreaMoveSnapType snap_type
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
std::string(* get_description)(bContext *C, wmOperatorType *ot, PointerRNA *ptr)
int(* modal)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
void(* cancel)(bContext *C, wmOperator *op)
struct ReportList * reports
struct wmOperatorType * type
struct wmEvent * eventstate
struct WorkSpaceInstanceHook * workspace_hook
ccl_device_inline int abs(int x)
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_operator_repeat_last(bContext *C, wmOperator *op)
wmEvent * wm_event_add(wmWindow *win, const wmEvent *event_to_add)
bool WM_operator_repeat_check(const bContext *, wmOperator *op)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
int WM_operator_repeat(bContext *C, wmOperator *op)
void WM_event_modal_handler_region_replace(wmWindow *win, const ARegion *old_region, ARegion *new_region)
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)
int WM_gesture_box_invoke(bContext *C, wmOperator *op, const wmEvent *event)
int WM_gesture_box_modal(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 *))
int 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)
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)
wmTimer * WM_event_timer_add(wmWindowManager *wm, wmWindow *win, const int event_type, const double time_step)
bScreen * WM_window_get_active_screen(const wmWindow *win)