Cleanup: Reduce variable scope in screen directory

Also return early and use LISTBASE_FOREACH in a few places
This commit is contained in:
Hans Goudey 2020-10-16 21:56:58 -05:00
parent 20276e4b00
commit e2c5439cb4
8 changed files with 197 additions and 273 deletions

View File

@ -486,10 +486,9 @@ static eContextResult screen_ctx_active_pose_bone(const bContext *C, bContextDat
wmWindow *win = CTX_wm_window(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
Object *obact = view_layer->basact ? view_layer->basact->object : NULL;
bPoseChannel *pchan;
Object *obpose = BKE_object_pose_armature_get(obact);
pchan = BKE_pose_channel_active(obpose);
bPoseChannel *pchan = BKE_pose_channel_active(obpose);
if (pchan) {
CTX_data_pointer_set(result, &obpose->id, &RNA_PoseBone, pchan);
return CTX_RESULT_OK;
@ -699,13 +698,11 @@ static eContextResult screen_ctx_gpencil_data_owner(const bContext *C, bContextD
ScrArea *area = CTX_wm_area(C);
ViewLayer *view_layer = WM_window_get_active_view_layer(win);
Object *obact = view_layer->basact ? view_layer->basact->object : NULL;
/* Pointer to which data/datablock owns the reference to the Grease Pencil data being used
* (as gpencil_data). */
bGPdata **gpd_ptr = NULL;
PointerRNA ptr;
/* get pointer to Grease Pencil Data */
gpd_ptr = ED_gpencil_data_get_pointers_direct(area, obact, &ptr);
bGPdata **gpd_ptr = ED_gpencil_data_get_pointers_direct(area, obact, &ptr);
if (gpd_ptr) {
CTX_data_pointer_set(result, ptr.owner_id, ptr.type, ptr.data);
@ -734,12 +731,10 @@ static eContextResult screen_ctx_annotation_data_owner(const bContext *C,
bScreen *screen = CTX_wm_screen(C);
ScrArea *area = CTX_wm_area(C);
Scene *scene = WM_window_get_active_scene(win);
/* Pointer to which data/datablock owns the reference to the Grease Pencil data being used. */
bGPdata **gpd_ptr = NULL;
PointerRNA ptr;
/* Get pointer to Grease Pencil Data. */
gpd_ptr = ED_annotation_data_get_pointers_direct((ID *)screen, area, scene, &ptr);
/* Pointer to which data/datablock owns the reference to the Grease Pencil data being used. */
PointerRNA ptr;
bGPdata **gpd_ptr = ED_annotation_data_get_pointers_direct((ID *)screen, area, scene, &ptr);
if (gpd_ptr) {
CTX_data_pointer_set(result, ptr.owner_id, ptr.type, ptr.data);
@ -855,39 +850,40 @@ static eContextResult screen_ctx_editable_gpencil_strokes(const bContext *C,
bGPdata *gpd = ED_gpencil_data_get_active_direct(area, obact);
const bool is_multiedit = (bool)GPENCIL_MULTIEDIT_SESSIONS_ON(gpd);
if (gpd) {
LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
if (BKE_gpencil_layer_is_editable(gpl) && (gpl->actframe)) {
bGPDframe *gpf;
bGPDframe *init_gpf = gpl->actframe;
if (is_multiedit) {
init_gpf = gpl->frames.first;
}
if (gpd == NULL) {
return CTX_RESULT_NO_DATA;
}
for (gpf = init_gpf; gpf; gpf = gpf->next) {
if ((gpf == gpl->actframe) || ((gpf->flag & GP_FRAME_SELECT) && (is_multiedit))) {
LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
if (ED_gpencil_stroke_can_use_direct(area, gps)) {
/* check if the color is editable */
if (ED_gpencil_stroke_color_use(obact, gpl, gps) == false) {
continue;
}
LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
if (BKE_gpencil_layer_is_editable(gpl) && (gpl->actframe)) {
bGPDframe *gpf;
bGPDframe *init_gpf = gpl->actframe;
if (is_multiedit) {
init_gpf = gpl->frames.first;
}
CTX_data_list_add(result, &gpd->id, &RNA_GPencilStroke, gps);
for (gpf = init_gpf; gpf; gpf = gpf->next) {
if ((gpf == gpl->actframe) || ((gpf->flag & GP_FRAME_SELECT) && (is_multiedit))) {
LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
if (ED_gpencil_stroke_can_use_direct(area, gps)) {
/* check if the color is editable */
if (ED_gpencil_stroke_color_use(obact, gpl, gps) == false) {
continue;
}
CTX_data_list_add(result, &gpd->id, &RNA_GPencilStroke, gps);
}
}
/* if not multiedit out of loop */
if (!is_multiedit) {
break;
}
}
/* if not multiedit out of loop */
if (!is_multiedit) {
break;
}
}
}
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return CTX_RESULT_OK;
}
return CTX_RESULT_NO_DATA;
CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION);
return CTX_RESULT_OK;
}
static eContextResult screen_ctx_active_operator(const bContext *C, bContextDataResult *result)
{
@ -918,7 +914,6 @@ static eContextResult screen_ctx_sel_edit_fcurves_(const bContext *C,
const int extra_filter)
{
bAnimContext ac;
if (ANIM_animdata_get_context(C, &ac) && ELEM(ac.spacetype, SPACE_ACTION, SPACE_GRAPH)) {
ListBase anim_data = {NULL, NULL};
@ -964,7 +959,6 @@ static eContextResult screen_ctx_active_editable_fcurve(const bContext *C,
bContextDataResult *result)
{
bAnimContext ac;
if (ANIM_animdata_get_context(C, &ac) && ELEM(ac.spacetype, SPACE_GRAPH)) {
ListBase anim_data = {NULL, NULL};

View File

@ -45,10 +45,8 @@ static void draw_horizontal_join_shape(ScrArea *area, char dir, uint pos)
{
const float width = screen_geom_area_width(area) - 1;
const float height = screen_geom_area_height(area) - 1;
vec2f points[10];
short i;
float w, h;
float w, h;
if (height < width) {
h = height / 8;
w = height / 4;
@ -58,6 +56,7 @@ static void draw_horizontal_join_shape(ScrArea *area, char dir, uint pos)
w = width / 4;
}
vec2f points[10];
points[0].x = area->v1->vec.x;
points[0].y = area->v1->vec.y + height / 2;
@ -91,7 +90,7 @@ static void draw_horizontal_join_shape(ScrArea *area, char dir, uint pos)
if (dir == 'l') {
/* when direction is left, then we flip direction of arrow */
float cx = area->v1->vec.x + width;
for (i = 0; i < 10; i++) {
for (int i = 0; i < 10; i++) {
points[i].x -= cx;
points[i].x = -points[i].x;
points[i].x += area->v1->vec.x;
@ -100,7 +99,7 @@ static void draw_horizontal_join_shape(ScrArea *area, char dir, uint pos)
immBegin(GPU_PRIM_TRI_FAN, 5);
for (i = 0; i < 5; i++) {
for (int i = 0; i < 5; i++) {
immVertex2f(pos, points[i].x, points[i].y);
}
@ -108,7 +107,7 @@ static void draw_horizontal_join_shape(ScrArea *area, char dir, uint pos)
immBegin(GPU_PRIM_TRI_FAN, 5);
for (i = 4; i < 8; i++) {
for (int i = 4; i < 8; i++) {
immVertex2f(pos, points[i].x, points[i].y);
}
@ -126,10 +125,8 @@ static void draw_vertical_join_shape(ScrArea *area, char dir, uint pos)
{
const float width = screen_geom_area_width(area) - 1;
const float height = screen_geom_area_height(area) - 1;
vec2f points[10];
short i;
float w, h;
float w, h;
if (height < width) {
h = height / 4;
w = height / 8;
@ -139,6 +136,7 @@ static void draw_vertical_join_shape(ScrArea *area, char dir, uint pos)
w = width / 8;
}
vec2f points[10];
points[0].x = area->v1->vec.x + width / 2;
points[0].y = area->v3->vec.y;
@ -172,7 +170,7 @@ static void draw_vertical_join_shape(ScrArea *area, char dir, uint pos)
if (dir == 'u') {
/* when direction is up, then we flip direction of arrow */
float cy = area->v1->vec.y + height;
for (i = 0; i < 10; i++) {
for (int i = 0; i < 10; i++) {
points[i].y -= cy;
points[i].y = -points[i].y;
points[i].y += area->v1->vec.y;
@ -181,7 +179,7 @@ static void draw_vertical_join_shape(ScrArea *area, char dir, uint pos)
immBegin(GPU_PRIM_TRI_FAN, 5);
for (i = 0; i < 5; i++) {
for (int i = 0; i < 5; i++) {
immVertex2f(pos, points[i].x, points[i].y);
}
@ -189,7 +187,7 @@ static void draw_vertical_join_shape(ScrArea *area, char dir, uint pos)
immBegin(GPU_PRIM_TRI_FAN, 5);
for (i = 4; i < 8; i++) {
for (int i = 4; i < 8; i++) {
immVertex2f(pos, points[i].x, points[i].y);
}
@ -217,12 +215,13 @@ static void draw_join_shape(ScrArea *area, char dir, uint pos)
static void do_vert_pair(GPUVertBuf *vbo, uint pos, uint *vidx, int corner, int i)
{
float inter[2], exter[2];
float inter[2];
inter[0] = cosf(corner * M_PI_2 + (i * M_PI_2 / (CORNER_RESOLUTION - 1.0f)));
inter[1] = sinf(corner * M_PI_2 + (i * M_PI_2 / (CORNER_RESOLUTION - 1.0f)));
/* Snap point to edge */
float div = 1.0f / max_ff(fabsf(inter[0]), fabsf(inter[1]));
float exter[2];
mul_v2_v2fl(exter, inter, div);
exter[0] = roundf(exter[0]);
exter[1] = roundf(exter[1]);

View File

@ -108,17 +108,15 @@ ScrArea *area_split(
const wmWindow *win, bScreen *screen, ScrArea *area, char dir, float fac, int merge)
{
ScrArea *newa = NULL;
ScrVert *sv1, *sv2;
short split;
rcti window_rect;
if (area == NULL) {
return NULL;
}
rcti window_rect;
WM_window_rect_calc(win, &window_rect);
split = screen_geom_find_area_split_point(area, &window_rect, dir, fac);
short split = screen_geom_find_area_split_point(area, &window_rect, dir, fac);
if (split == 0) {
return NULL;
}
@ -129,8 +127,8 @@ ScrArea *area_split(
if (dir == 'h') {
/* new vertices */
sv1 = screen_geom_vertex_add(screen, area->v1->vec.x, split);
sv2 = screen_geom_vertex_add(screen, area->v4->vec.x, split);
ScrVert *sv1 = screen_geom_vertex_add(screen, area->v1->vec.x, split);
ScrVert *sv2 = screen_geom_vertex_add(screen, area->v4->vec.x, split);
/* new edges */
screen_geom_edge_add(screen, area->v1, sv1);
@ -160,8 +158,8 @@ ScrArea *area_split(
}
else {
/* new vertices */
sv1 = screen_geom_vertex_add(screen, split, area->v1->vec.y);
sv2 = screen_geom_vertex_add(screen, split, area->v2->vec.y);
ScrVert *sv1 = screen_geom_vertex_add(screen, split, area->v1->vec.y);
ScrVert *sv2 = screen_geom_vertex_add(screen, split, area->v2->vec.y);
/* new edges */
screen_geom_edge_add(screen, area->v1, sv1);
@ -205,17 +203,14 @@ ScrArea *area_split(
*/
bScreen *screen_add(Main *bmain, const char *name, const rcti *rect)
{
bScreen *screen;
ScrVert *sv1, *sv2, *sv3, *sv4;
screen = BKE_libblock_alloc(bmain, ID_SCR, name, 0);
bScreen *screen = BKE_libblock_alloc(bmain, ID_SCR, name, 0);
screen->do_refresh = true;
screen->redraws_flag = TIME_ALL_3D_WIN | TIME_ALL_ANIM_WIN;
sv1 = screen_geom_vertex_add(screen, rect->xmin, rect->ymin);
sv2 = screen_geom_vertex_add(screen, rect->xmin, rect->ymax - 1);
sv3 = screen_geom_vertex_add(screen, rect->xmax - 1, rect->ymax - 1);
sv4 = screen_geom_vertex_add(screen, rect->xmax - 1, rect->ymin);
ScrVert *sv1 = screen_geom_vertex_add(screen, rect->xmin, rect->ymin);
ScrVert *sv2 = screen_geom_vertex_add(screen, rect->xmin, rect->ymax - 1);
ScrVert *sv3 = screen_geom_vertex_add(screen, rect->xmax - 1, rect->ymax - 1);
ScrVert *sv4 = screen_geom_vertex_add(screen, rect->xmax - 1, rect->ymin);
screen_geom_edge_add(screen, sv1, sv2);
screen_geom_edge_add(screen, sv2, sv3);
@ -230,9 +225,6 @@ bScreen *screen_add(Main *bmain, const char *name, const rcti *rect)
void screen_data_copy(bScreen *to, bScreen *from)
{
ScrVert *s2;
ScrArea *area, *saf;
/* free contents of 'to', is from blenkernel screen.c */
BKE_screen_free(to);
@ -243,7 +235,7 @@ void screen_data_copy(bScreen *to, bScreen *from)
BLI_duplicatelist(&to->areabase, &from->areabase);
BLI_listbase_clear(&to->regionbase);
s2 = to->vertbase.first;
ScrVert *s2 = to->vertbase.first;
for (ScrVert *s1 = from->vertbase.first; s1; s1 = s1->next, s2 = s2->next) {
s1->newv = s2;
}
@ -254,8 +246,8 @@ void screen_data_copy(bScreen *to, bScreen *from)
BKE_screen_sort_scrvert(&(se->v1), &(se->v2));
}
saf = from->areabase.first;
for (area = to->areabase.first; area; area = area->next, saf = saf->next) {
ScrArea *from_area = from->areabase.first;
LISTBASE_FOREACH (ScrArea *, area, &to->areabase) {
area->v1 = area->v1->newv;
area->v2 = area->v2->newv;
area->v3 = area->v3->newv;
@ -266,7 +258,9 @@ void screen_data_copy(bScreen *to, bScreen *from)
BLI_listbase_clear(&area->actionzones);
BLI_listbase_clear(&area->handlers);
ED_area_data_copy(area, saf, true);
ED_area_data_copy(area, from_area, true);
from_area = from_area->next;
}
/* put at zero (needed?) */
@ -1232,7 +1226,6 @@ ScrArea *ED_screen_state_toggle(bContext *C, wmWindow *win, ScrArea *area, const
Main *bmain = CTX_data_main(C);
wmWindowManager *wm = CTX_wm_manager(C);
WorkSpace *workspace = WM_window_get_active_workspace(win);
bScreen *screen, *oldscreen;
if (area) {
/* ensure we don't have a button active anymore, can crash when
@ -1251,12 +1244,12 @@ ScrArea *ED_screen_state_toggle(bContext *C, wmWindow *win, ScrArea *area, const
ED_area_status_text(area, NULL);
ED_workspace_status_text(C, NULL);
}
bScreen *screen;
if (area && area->full) {
WorkSpaceLayout *layout_old = WM_window_get_active_layout(win);
/* restoring back to SCREENNORMAL */
screen = area->full; /* the old screen to restore */
oldscreen = WM_window_get_active_screen(win); /* the one disappearing */
screen = area->full; /* the old screen to restore */
bScreen *oldscreen = WM_window_get_active_screen(win); /* the one disappearing */
BLI_assert(BKE_workspace_layout_screen_get(layout_old) != screen);
BLI_assert(BKE_workspace_layout_screen_get(layout_old)->state != SCREENNORMAL);
@ -1321,7 +1314,7 @@ ScrArea *ED_screen_state_toggle(bContext *C, wmWindow *win, ScrArea *area, const
BLI_assert(ELEM(state, SCREENMAXIMIZED, SCREENFULL));
oldscreen = WM_window_get_active_screen(win);
bScreen *oldscreen = WM_window_get_active_screen(win);
oldscreen->state = state;
BLI_snprintf(newname, sizeof(newname), "%s-%s", oldscreen->id.name + 2, "nonnormal");

View File

@ -132,10 +132,9 @@ ScrEdge *screen_geom_find_active_scredge(const wmWindow *win,
{
/* Use layout size (screen excluding global areas) for screen-layout area edges */
rcti screen_rect;
ScrEdge *se;
WM_window_screen_rect_calc(win, &screen_rect);
se = screen_geom_area_map_find_active_scredge(AREAMAP_FROM_SCREEN(screen), &screen_rect, mx, my);
ScrEdge *se = screen_geom_area_map_find_active_scredge(
AREAMAP_FROM_SCREEN(screen), &screen_rect, mx, my);
if (!se) {
/* Use entire window size (screen including global areas) for global area edges */
@ -157,21 +156,19 @@ static bool screen_geom_vertices_scale_pass(const wmWindow *win,
const int screen_size_x = BLI_rcti_size_x(screen_rect);
const int screen_size_y = BLI_rcti_size_y(screen_rect);
int screen_size_x_prev, screen_size_y_prev;
float min[2], max[2];
bool needs_another_pass = false;
/* calculate size */
min[0] = min[1] = 20000.0f;
max[0] = max[1] = 0.0f;
float min[2] = {20000.0f, 20000.0f};
float max[2] = {0.0f, 0.0f};
LISTBASE_FOREACH (ScrVert *, sv, &screen->vertbase) {
const float fv[2] = {(float)sv->vec.x, (float)sv->vec.y};
minmax_v2v2_v2(min, max, fv);
}
screen_size_x_prev = (max[0] - min[0]) + 1;
screen_size_y_prev = (max[1] - min[1]) + 1;
int screen_size_x_prev = (max[0] - min[0]) + 1;
int screen_size_y_prev = (max[1] - min[1]) + 1;
if (screen_size_x_prev != screen_size_x || screen_size_y_prev != screen_size_y) {
const float facx = ((float)screen_size_x - 1) / ((float)screen_size_x_prev - 1);
@ -258,7 +255,6 @@ static bool screen_geom_vertices_scale_pass(const wmWindow *win,
void screen_geom_vertices_scale(const wmWindow *win, bScreen *screen)
{
rcti window_rect, screen_rect;
WM_window_rect_calc(win, &window_rect);
WM_window_screen_rect_calc(win, &screen_rect);
@ -311,12 +307,10 @@ short screen_geom_find_area_split_point(const ScrArea *area,
char dir,
float fac)
{
short x, y;
const int cur_area_width = screen_geom_area_width(area);
const int cur_area_height = screen_geom_area_height(area);
const short area_min_x = AREAMINX;
const short area_min_y = ED_area_headersize();
int area_min;
/* area big enough? */
if ((dir == 'v') && (cur_area_width <= 2 * area_min_x)) {
@ -330,9 +324,9 @@ short screen_geom_find_area_split_point(const ScrArea *area,
CLAMP(fac, 0.0f, 1.0f);
if (dir == 'h') {
y = area->v1->vec.y + round_fl_to_short(fac * cur_area_height);
short y = area->v1->vec.y + round_fl_to_short(fac * cur_area_height);
area_min = area_min_y;
int area_min = area_min_y;
if (area->v1->vec.y > window_rect->ymin) {
area_min += U.pixelsize;
@ -351,9 +345,9 @@ short screen_geom_find_area_split_point(const ScrArea *area,
return y;
}
x = area->v1->vec.x + round_fl_to_short(fac * cur_area_width);
short x = area->v1->vec.x + round_fl_to_short(fac * cur_area_width);
area_min = area_min_x;
int area_min = area_min_x;
if (area->v1->vec.x > window_rect->xmin) {
area_min += U.pixelsize;
@ -378,12 +372,9 @@ short screen_geom_find_area_split_point(const ScrArea *area,
void screen_geom_select_connected_edge(const wmWindow *win, ScrEdge *edge)
{
bScreen *screen = WM_window_get_active_screen(win);
bool oneselected = true;
char dir;
/* select connected, only in the right direction */
/* 'dir' is the direction of EDGE */
char dir;
if (edge->v1->vec.x == edge->v2->vec.x) {
dir = 'v';
}
@ -399,6 +390,8 @@ void screen_geom_select_connected_edge(const wmWindow *win, ScrEdge *edge)
edge->v1->flag = 1;
edge->v2->flag = 1;
/* select connected, only in the right direction */
bool oneselected = true;
while (oneselected) {
oneselected = false;
LISTBASE_FOREACH (ScrEdge *, se, &screen->edgebase) {

View File

@ -159,11 +159,10 @@ static bool ED_operator_screenactive_norender(bContext *C)
/* when mouse is over area-edge */
bool ED_operator_screen_mainwinactive(bContext *C)
{
bScreen *screen;
if (CTX_wm_window(C) == NULL) {
return false;
}
screen = CTX_wm_screen(C);
bScreen *screen = CTX_wm_screen(C);
if (screen == NULL) {
return false;
}
@ -448,8 +447,8 @@ bool ED_operator_posemode_exclusive(bContext *C)
Object *obact = CTX_data_active_object(C);
if (obact && !(obact->mode & OB_MODE_EDIT)) {
Object *obpose;
if ((obpose = BKE_object_pose_armature_get(obact))) {
Object *obpose = BKE_object_pose_armature_get(obact);
if (obpose != NULL) {
if (obact == obpose) {
return true;
}
@ -479,8 +478,8 @@ bool ED_operator_posemode(bContext *C)
Object *obact = CTX_data_active_object(C);
if (obact && !(obact->mode & OB_MODE_EDIT)) {
Object *obpose;
if ((obpose = BKE_object_pose_armature_get(obact))) {
Object *obpose = BKE_object_pose_armature_get(obact);
if (obpose != NULL) {
if ((obact == obpose) || (obact->mode & OB_MODE_ALL_WEIGHT_PAINT)) {
return true;
}
@ -958,12 +957,12 @@ static void actionzone_exit(wmOperator *op)
/* send EVT_ACTIONZONE event */
static void actionzone_apply(bContext *C, wmOperator *op, int type)
{
wmEvent event;
wmWindow *win = CTX_wm_window(C);
sActionzoneData *sad = op->customdata;
sad->modifier = RNA_int_get(op->ptr, "modifier");
wmEvent event;
wm_event_init_from_window(win, &event);
if (type == AZONE_AREA) {
@ -988,7 +987,6 @@ static int actionzone_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
bScreen *screen = CTX_wm_screen(C);
AZone *az = screen_actionzone_find_xy(screen, &event->x);
sActionzoneData *sad;
/* Quick escape - Scroll azones only hide/unhide the scroll-bars,
* they have their own handling. */
@ -997,7 +995,7 @@ static int actionzone_invoke(bContext *C, wmOperator *op, const wmEvent *event)
}
/* ok we do the action-zone */
sad = op->customdata = MEM_callocN(sizeof(sActionzoneData), "sActionzoneData");
sActionzoneData *sad = op->customdata = MEM_callocN(sizeof(sActionzoneData), "sActionzoneData");
sad->sa1 = screen_actionzone_area(screen, az);
sad->az = az;
sad->x = event->x;
@ -1025,8 +1023,6 @@ static int actionzone_modal(bContext *C, wmOperator *op, const wmEvent *event)
switch (event->type) {
case MOUSEMOVE: {
bool is_gesture;
const int delta_x = (event->x - sad->x);
const int delta_y = (event->y - sad->y);
@ -1052,10 +1048,11 @@ static int actionzone_modal(bContext *C, wmOperator *op, const wmEvent *event)
sad->gesture_dir = 'w';
}
bool is_gesture;
if (sad->az->type == AZONE_AREA) {
wmWindow *win = CTX_wm_window(C);
rcti screen_rect;
rcti screen_rect;
WM_window_screen_rect_calc(win, &screen_rect);
/* Have we dragged off the zone and are not on an edge? */
@ -1154,10 +1151,9 @@ static ScrEdge *screen_area_edge_from_cursor(const bContext *C,
{
wmWindow *win = CTX_wm_window(C);
bScreen *screen = CTX_wm_screen(C);
ScrEdge *actedge;
rcti window_rect;
WM_window_rect_calc(win, &window_rect);
actedge = screen_geom_area_map_find_active_scredge(
ScrEdge *actedge = screen_geom_area_map_find_active_scredge(
AREAMAP_FROM_SCREEN(screen), &window_rect, cursor[0], cursor[1]);
*r_sa1 = NULL;
*r_sa2 = NULL;
@ -1215,14 +1211,13 @@ typedef struct sAreaSwapData {
static bool area_swap_init(wmOperator *op, const wmEvent *event)
{
sAreaSwapData *sd = NULL;
sActionzoneData *sad = event->customdata;
if (sad == NULL || sad->sa1 == NULL) {
return false;
}
sd = MEM_callocN(sizeof(sAreaSwapData), "sAreaSwapData");
sAreaSwapData *sd = MEM_callocN(sizeof(sAreaSwapData), "sAreaSwapData");
sd->sa1 = sad->sa1;
sd->sa2 = sad->sa2;
op->customdata = sd;
@ -1337,18 +1332,12 @@ static void SCREEN_OT_area_swap(wmOperatorType *ot)
static int area_dupli_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
Main *bmain = CTX_data_main(C);
wmWindow *newwin, *win = CTX_wm_window(C);
Scene *scene;
wmWindow *win = CTX_wm_window(C);
WorkSpace *workspace = WM_window_get_active_workspace(win);
WorkSpaceLayout *layout_old = WM_window_get_active_layout(win);
WorkSpaceLayout *layout_new;
bScreen *newsc;
ScrArea *area;
rcti rect;
win = CTX_wm_window(C);
scene = CTX_data_scene(C);
area = CTX_wm_area(C);
Scene *scene = CTX_data_scene(C);
ScrArea *area = CTX_wm_area(C);
/* XXX hrmf! */
if (event->type == EVT_ACTIONZONE_AREA) {
@ -1362,12 +1351,12 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, const wmEvent *event)
}
/* adds window to WM */
rect = area->totrct;
rcti rect = area->totrct;
BLI_rcti_translate(&rect, win->posx, win->posy);
rect.xmax = rect.xmin + BLI_rcti_size_x(&rect) / U.pixelsize;
rect.ymax = rect.ymin + BLI_rcti_size_y(&rect) / U.pixelsize;
newwin = WM_window_open(C, &rect);
wmWindow *newwin = WM_window_open(C, &rect);
if (newwin == NULL) {
BKE_report(op->reports, RPT_ERROR, "Failed to open window!");
goto finally;
@ -1381,9 +1370,9 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, const wmEvent *event)
BKE_workspace_active_set(newwin->workspace_hook, workspace);
/* allocs new screen and adds to newly created window, using window size */
layout_new = ED_workspace_layout_add(
WorkSpaceLayout *layout_new = ED_workspace_layout_add(
bmain, workspace, newwin, BKE_workspace_layout_name_get(layout_old));
newsc = BKE_workspace_layout_screen_get(layout_new);
bScreen *newsc = BKE_workspace_layout_screen_get(layout_new);
WM_window_set_active_layout(newwin, workspace, layout_new);
/* copy area to new screen */
@ -1475,10 +1464,6 @@ static void area_move_set_limits(wmWindow *win,
int *smaller,
bool *use_bigger_smaller_snap)
{
rcti window_rect;
int areaminy = ED_area_headersize();
int areamin;
/* we check all areas and test for free space with MINSIZE */
*bigger = *smaller = 100000;
@ -1523,12 +1508,12 @@ static void area_move_set_limits(wmWindow *win,
}
}
rcti window_rect;
WM_window_rect_calc(win, &window_rect);
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
if (dir == 'h') {
int y1;
areamin = areaminy;
int areamin = ED_area_headersize();
if (area->v1->vec.y > window_rect.ymin) {
areamin += U.pixelsize;
@ -1537,7 +1522,7 @@ static void area_move_set_limits(wmWindow *win,
areamin += U.pixelsize;
}
y1 = screen_geom_area_height(area) - areamin;
int y1 = screen_geom_area_height(area) - areamin;
/* if top or down edge selected, test height */
if (area->v1->editflag && area->v4->editflag) {
@ -1548,8 +1533,7 @@ static void area_move_set_limits(wmWindow *win,
}
}
else {
int x1;
areamin = AREAMINX;
int areamin = AREAMINX;
if (area->v1->vec.x > window_rect.xmin) {
areamin += U.pixelsize;
@ -1558,7 +1542,7 @@ static void area_move_set_limits(wmWindow *win,
areamin += U.pixelsize;
}
x1 = screen_geom_area_width(area) - areamin;
int x1 = screen_geom_area_width(area) - areamin;
/* if left or right edge selected, test width */
if (area->v1->editflag && area->v2->editflag) {
@ -1577,21 +1561,18 @@ static bool area_move_init(bContext *C, wmOperator *op)
{
bScreen *screen = CTX_wm_screen(C);
wmWindow *win = CTX_wm_window(C);
ScrEdge *actedge;
sAreaMoveData *md;
int x, y;
/* required properties */
x = RNA_int_get(op->ptr, "x");
y = RNA_int_get(op->ptr, "y");
int x = RNA_int_get(op->ptr, "x");
int y = RNA_int_get(op->ptr, "y");
/* setup */
actedge = screen_geom_find_active_scredge(win, screen, x, y);
ScrEdge *actedge = screen_geom_find_active_scredge(win, screen, x, y);
if (actedge == NULL) {
return false;
}
md = MEM_callocN(sizeof(sAreaMoveData), "sAreaMoveData");
sAreaMoveData *md = MEM_callocN(sizeof(sAreaMoveData), "sAreaMoveData");
op->customdata = md;
md->dir = screen_geom_edge_is_horizontal(actedge) ? 'h' : 'v';
@ -1850,15 +1831,14 @@ static void area_move_cancel(bContext *C, wmOperator *op)
static int area_move_modal(bContext *C, wmOperator *op, const wmEvent *event)
{
sAreaMoveData *md = op->customdata;
int delta, x, y;
/* execute the events */
switch (event->type) {
case MOUSEMOVE: {
x = RNA_int_get(op->ptr, "x");
y = RNA_int_get(op->ptr, "y");
int x = RNA_int_get(op->ptr, "x");
int y = RNA_int_get(op->ptr, "y");
delta = (md->dir == 'v') ? event->x - x : event->y - y;
int delta = (md->dir == 'v') ? event->x - x : event->y - y;
RNA_int_set(op->ptr, "delta", delta);
area_move_apply(C, op);
@ -1986,10 +1966,8 @@ static void area_split_draw_cb(const struct wmWindow *UNUSED(win), void *userdat
/* generic init, menu case, doesn't need active area */
static bool area_split_menu_init(bContext *C, wmOperator *op)
{
sAreaSplitData *sd;
/* custom data */
sd = (sAreaSplitData *)MEM_callocN(sizeof(sAreaSplitData), "op_area_split");
sAreaSplitData *sd = (sAreaSplitData *)MEM_callocN(sizeof(sAreaSplitData), "op_area_split");
op->customdata = sd;
sd->sarea = CTX_wm_area(C);
@ -2001,9 +1979,6 @@ static bool area_split_menu_init(bContext *C, wmOperator *op)
static bool area_split_init(bContext *C, wmOperator *op)
{
ScrArea *area = CTX_wm_area(C);
sAreaSplitData *sd;
int areaminy = ED_area_headersize();
int dir;
/* required context */
if (area == NULL) {
@ -2011,18 +1986,18 @@ static bool area_split_init(bContext *C, wmOperator *op)
}
/* required properties */
dir = RNA_enum_get(op->ptr, "direction");
int dir = RNA_enum_get(op->ptr, "direction");
/* minimal size */
if (dir == 'v' && area->winx < 2 * AREAMINX) {
return false;
}
if (dir == 'h' && area->winy < 2 * areaminy) {
if (dir == 'h' && area->winy < 2 * ED_area_headersize()) {
return false;
}
/* custom data */
sd = (sAreaSplitData *)MEM_callocN(sizeof(sAreaSplitData), "op_area_split");
sAreaSplitData *sd = (sAreaSplitData *)MEM_callocN(sizeof(sAreaSplitData), "op_area_split");
op->customdata = sd;
sd->sarea = area;
@ -2073,44 +2048,42 @@ static bool area_split_apply(bContext *C, wmOperator *op)
const wmWindow *win = CTX_wm_window(C);
bScreen *screen = CTX_wm_screen(C);
sAreaSplitData *sd = (sAreaSplitData *)op->customdata;
float fac;
int dir;
fac = RNA_float_get(op->ptr, "factor");
dir = RNA_enum_get(op->ptr, "direction");
float fac = RNA_float_get(op->ptr, "factor");
int dir = RNA_enum_get(op->ptr, "direction");
sd->narea = area_split(win, screen, sd->sarea, dir, fac, 0); /* 0 = no merge */
if (sd->narea) {
sd->nedge = area_findsharededge(screen, sd->sarea, sd->narea);
/* select newly created edge, prepare for moving edge */
ED_screen_verts_iter(win, screen, sv)
{
sv->editflag = 0;
}
sd->nedge->v1->editflag = 1;
sd->nedge->v2->editflag = 1;
if (dir == 'h') {
sd->origval = sd->nedge->v1->vec.y;
}
else {
sd->origval = sd->nedge->v1->vec.x;
}
ED_area_tag_redraw(sd->sarea);
ED_area_tag_redraw(sd->narea);
WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL);
/* Update preview thumbnail */
BKE_icon_changed(screen->id.icon_id);
return true;
if (sd->narea == NULL) {
return false;
}
return false;
sd->nedge = area_findsharededge(screen, sd->sarea, sd->narea);
/* select newly created edge, prepare for moving edge */
ED_screen_verts_iter(win, screen, sv)
{
sv->editflag = 0;
}
sd->nedge->v1->editflag = 1;
sd->nedge->v2->editflag = 1;
if (dir == 'h') {
sd->origval = sd->nedge->v1->vec.y;
}
else {
sd->origval = sd->nedge->v1->vec.x;
}
ED_area_tag_redraw(sd->sarea);
ED_area_tag_redraw(sd->narea);
WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL);
/* Update preview thumbnail */
BKE_icon_changed(screen->id.icon_id);
return true;
}
static void area_split_exit(bContext *C, wmOperator *op)
@ -2154,8 +2127,6 @@ static int area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
wmWindow *win = CTX_wm_window(C);
bScreen *screen = CTX_wm_screen(C);
sAreaSplitData *sd;
int dir;
/* no full window splitting allowed */
BLI_assert(screen->state == SCREENNORMAL);
@ -2164,6 +2135,7 @@ static int area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event)
PropertyRNA *prop_factor = RNA_struct_find_property(op->ptr, "factor");
PropertyRNA *prop_cursor = RNA_struct_find_property(op->ptr, "cursor");
int dir;
if (event->type == EVT_ACTIONZONE_AREA) {
sActionzoneData *sad = event->customdata;
@ -2233,8 +2205,6 @@ static int area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event)
}
}
else {
ScrEdge *actedge;
rcti window_rect;
int event_co[2];
/* retrieve initial mouse coord, so we can find the active edge */
@ -2245,9 +2215,10 @@ static int area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event)
copy_v2_v2_int(event_co, &event->x);
}
rcti window_rect;
WM_window_rect_calc(win, &window_rect);
actedge = screen_geom_area_map_find_active_scredge(
ScrEdge *actedge = screen_geom_area_map_find_active_scredge(
AREAMAP_FROM_SCREEN(screen), &window_rect, event_co[0], event_co[1]);
if (actedge == NULL) {
return OPERATOR_CANCELLED;
@ -2263,10 +2234,9 @@ static int area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event)
}
}
sd = (sAreaSplitData *)op->customdata;
sAreaSplitData *sd = (sAreaSplitData *)op->customdata;
if (event->type == EVT_ACTIONZONE_AREA) {
/* do the split */
if (area_split_apply(C, op)) {
area_move_set_limits(win, screen, dir, &sd->bigger, &sd->smaller, NULL);
@ -2294,7 +2264,6 @@ static int area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event)
/* function to be called outside UI context, or for redo */
static int area_split_exec(bContext *C, wmOperator *op)
{
if (!area_split_init(C, op)) {
return OPERATOR_CANCELLED;
}
@ -2565,14 +2534,13 @@ static void region_scale_exit(wmOperator *op)
static int region_scale_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
sActionzoneData *sad = event->customdata;
AZone *az;
if (event->type != EVT_ACTIONZONE_REGION) {
BKE_report(op->reports, RPT_ERROR, "Can only scale region size from an action zone");
return OPERATOR_CANCELLED;
}
az = sad->az;
AZone *az = sad->az;
if (az->region) {
RegionMoveData *rmd = MEM_callocN(sizeof(RegionMoveData), "RegionMoveData");
@ -2853,9 +2821,8 @@ static void areas_do_frame_follow(bContext *C, bool middle)
static int frame_offset_exec(bContext *C, wmOperator *op)
{
Scene *scene = CTX_data_scene(C);
int delta;
delta = RNA_int_get(op->ptr, "delta");
int delta = RNA_int_get(op->ptr, "delta");
CFRA += delta;
FRAMENUMBER_MIN_CLAMP(CFRA);
@ -2960,9 +2927,6 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op)
Scene *scene = CTX_data_scene(C);
Object *ob = CTX_data_active_object(C);
bDopeSheet ads = {NULL};
DLRBT_Tree keys;
ActKeyColumn *ak;
float cfra;
const bool next = RNA_boolean_get(op->ptr, "next");
bool done = false;
@ -2971,9 +2935,10 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
cfra = (float)(CFRA);
float cfra = (float)(CFRA);
/* init binarytree-list for getting keyframes */
DLRBT_Tree keys;
BLI_dlrbTree_init(&keys);
/* seed up dummy dopesheet context with flags to perform necessary filtering */
@ -3003,6 +2968,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op)
}
/* find matching keyframe in the right direction */
ActKeyColumn *ak;
if (next) {
ak = (ActKeyColumn *)BLI_dlrbTree_search_next(&keys, compare_ak_cfraPtr, &cfra);
}
@ -3355,7 +3321,6 @@ static int area_join_exec(bContext *C, wmOperator *op)
/* interaction callback */
static int area_join_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
if (event->type == EVT_ACTIONZONE_AREA) {
sActionzoneData *sad = event->customdata;
@ -3395,14 +3360,13 @@ static int area_join_modal(bContext *C, wmOperator *op, const wmEvent *event)
{
bScreen *screen = CTX_wm_screen(C);
wmWindow *win = CTX_wm_window(C);
sAreaJoinData *jd;
if (op->customdata == NULL) {
if (!area_join_init(C, op, NULL, NULL)) {
return OPERATOR_CANCELLED;
}
}
jd = (sAreaJoinData *)op->customdata;
sAreaJoinData *jd = (sAreaJoinData *)op->customdata;
/* execute the events */
switch (event->type) {
@ -3524,20 +3488,16 @@ static void SCREEN_OT_area_join(wmOperatorType *ot)
static int screen_area_options_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
uiPopupMenu *pup;
uiLayout *layout;
PointerRNA ptr;
ScrArea *sa1, *sa2;
if (screen_area_edge_from_cursor(C, &event->x, &sa1, &sa2) == NULL) {
return OPERATOR_CANCELLED;
}
pup = UI_popup_menu_begin(C, WM_operatortype_name(op->type, op->ptr), ICON_NONE);
layout = UI_popup_menu_layout(pup);
uiPopupMenu *pup = UI_popup_menu_begin(C, WM_operatortype_name(op->type, op->ptr), ICON_NONE);
uiLayout *layout = UI_popup_menu_layout(pup);
/* Vertical Split */
PointerRNA ptr;
uiItemFullO(layout,
"SCREEN_OT_area_split",
IFACE_("Vertical Split"),
@ -3712,19 +3672,17 @@ static void SCREEN_OT_repeat_last(wmOperatorType *ot)
static int repeat_history_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
{
wmWindowManager *wm = CTX_wm_manager(C);
wmOperator *lastop;
uiPopupMenu *pup;
uiLayout *layout;
int items, i;
items = BLI_listbase_count(&wm->operators);
int items = BLI_listbase_count(&wm->operators);
if (items == 0) {
return OPERATOR_CANCELLED;
}
pup = UI_popup_menu_begin(C, WM_operatortype_name(op->type, op->ptr), ICON_NONE);
layout = UI_popup_menu_layout(pup);
uiPopupMenu *pup = UI_popup_menu_begin(C, WM_operatortype_name(op->type, op->ptr), ICON_NONE);
uiLayout *layout = UI_popup_menu_layout(pup);
wmOperator *lastop;
int i;
for (i = items - 1, lastop = wm->operators.last; lastop; lastop = lastop->prev, i--) {
if ((lastop->type->flag & OPTYPE_REGISTER) && WM_operator_repeat_check(C, lastop)) {
uiItemIntO(layout,
@ -3850,7 +3808,6 @@ static int region_quadview_exec(bContext *C, wmOperator *op)
else if (region->alignment == RGN_ALIGN_QSPLIT) {
/* Exit quad-view */
ScrArea *area = CTX_wm_area(C);
ARegion *arn;
/* keep current region */
region->alignment = 0;
@ -3887,10 +3844,9 @@ static int region_quadview_exec(bContext *C, wmOperator *op)
}
}
for (region = area->regionbase.first; region; region = arn) {
arn = region->next;
if (region->alignment == RGN_ALIGN_QSPLIT) {
ED_region_remove(C, area, region);
LISTBASE_FOREACH_MUTABLE (ARegion *, region_iter, &area->regionbase) {
if (region_iter->alignment == RGN_ALIGN_QSPLIT) {
ED_region_remove(C, area, region_iter);
}
}
ED_area_tag_redraw(area);
@ -3902,14 +3858,12 @@ static int region_quadview_exec(bContext *C, wmOperator *op)
else {
/* Enter quad-view */
ScrArea *area = CTX_wm_area(C);
ARegion *newar;
int count;
region->alignment = RGN_ALIGN_QSPLIT;
for (count = 0; count < 3; count++) {
newar = BKE_area_region_copy(area->type, region);
BLI_addtail(&area->regionbase, newar);
for (int count = 0; count < 3; count++) {
ARegion *new_region = BKE_area_region_copy(area->type, region);
BLI_addtail(&area->regionbase, new_region);
}
/* lock views and set them */
@ -3981,8 +3935,8 @@ static void SCREEN_OT_region_quadview(wmOperatorType *ot)
static int region_toggle_exec(bContext *C, wmOperator *op)
{
PropertyRNA *prop = RNA_struct_find_property(op->ptr, "region_type");
ARegion *region;
ARegion *region;
if (RNA_property_is_set(op->ptr, prop)) {
region = BKE_area_find_region_type(CTX_wm_area(C), RNA_property_enum_get(op->ptr, prop));
}
@ -4235,32 +4189,30 @@ static int screen_context_menu_invoke(bContext *C,
wmOperator *UNUSED(op),
const wmEvent *UNUSED(event))
{
uiPopupMenu *pup;
uiLayout *layout;
const ScrArea *area = CTX_wm_area(C);
const ARegion *region = CTX_wm_region(C);
if (area && area->spacetype == SPACE_STATUSBAR) {
pup = UI_popup_menu_begin(C, IFACE_("Status Bar"), ICON_NONE);
layout = UI_popup_menu_layout(pup);
uiPopupMenu *pup = UI_popup_menu_begin(C, IFACE_("Status Bar"), ICON_NONE);
uiLayout *layout = UI_popup_menu_layout(pup);
ed_screens_statusbar_menu_create(layout, NULL);
UI_popup_menu_end(C, pup);
}
else if (ELEM(region->regiontype, RGN_TYPE_HEADER, RGN_TYPE_TOOL_HEADER)) {
pup = UI_popup_menu_begin(C, IFACE_("Header"), ICON_NONE);
layout = UI_popup_menu_layout(pup);
uiPopupMenu *pup = UI_popup_menu_begin(C, IFACE_("Header"), ICON_NONE);
uiLayout *layout = UI_popup_menu_layout(pup);
ED_screens_header_tools_menu_create(C, layout, NULL);
UI_popup_menu_end(C, pup);
}
else if (region->regiontype == RGN_TYPE_FOOTER) {
pup = UI_popup_menu_begin(C, IFACE_("Footer"), ICON_NONE);
layout = UI_popup_menu_layout(pup);
uiPopupMenu *pup = UI_popup_menu_begin(C, IFACE_("Footer"), ICON_NONE);
uiLayout *layout = UI_popup_menu_layout(pup);
ED_screens_footer_tools_menu_create(C, layout, NULL);
UI_popup_menu_end(C, pup);
}
else if (region->regiontype == RGN_TYPE_NAV_BAR) {
pup = UI_popup_menu_begin(C, IFACE_("Navigation Bar"), ICON_NONE);
layout = UI_popup_menu_layout(pup);
uiPopupMenu *pup = UI_popup_menu_begin(C, IFACE_("Navigation Bar"), ICON_NONE);
uiLayout *layout = UI_popup_menu_layout(pup);
ED_screens_navigation_bar_tools_menu_create(C, layout, NULL);
UI_popup_menu_end(C, pup);
}
@ -4953,10 +4905,6 @@ static int drivers_editor_show_exec(bContext *C, wmOperator *op)
wmWindow *win_cur = CTX_wm_window(C);
/* Use eventstate, not event from _invoke, so this can be called through exec(). */
const wmEvent *event = win_cur->eventstate;
PointerRNA ptr = {NULL};
PropertyRNA *prop = NULL;
int index = -1;
uiBut *but = NULL;
int sizex = 900 * UI_DPI_FAC;
int sizey = 580 * UI_DPI_FAC;
@ -4965,7 +4913,10 @@ static int drivers_editor_show_exec(bContext *C, wmOperator *op)
* - Need to grab it first, or else this info disappears
* after we've created the window
*/
but = UI_context_active_but_prop_get(C, &ptr, &prop, &index);
int index;
PointerRNA ptr;
PropertyRNA *prop;
uiBut *but = UI_context_active_but_prop_get(C, &ptr, &prop, &index);
/* changes context! */
if (WM_window_open_temp(C,
@ -4980,10 +4931,10 @@ static int drivers_editor_show_exec(bContext *C, wmOperator *op)
/* activate driver F-Curve for the property under the cursor */
if (but) {
FCurve *fcu;
bool driven, special;
FCurve *fcu = BKE_fcurve_find_by_rna_context_ui(
C, &ptr, prop, index, NULL, NULL, &driven, &special);
fcu = BKE_fcurve_find_by_rna_context_ui(C, &ptr, prop, index, NULL, NULL, &driven, &special);
if (fcu) {
/* Isolate this F-Curve... */
bAnimContext ac;
@ -5072,9 +5023,9 @@ static int screen_new_exec(bContext *C, wmOperator *UNUSED(op))
wmWindow *win = CTX_wm_window(C);
WorkSpace *workspace = BKE_workspace_active_get(win->workspace_hook);
WorkSpaceLayout *layout_old = BKE_workspace_active_layout_get(win->workspace_hook);
WorkSpaceLayout *layout_new;
layout_new = ED_workspace_layout_duplicate(bmain, workspace, layout_old, win);
WorkSpaceLayout *layout_new = ED_workspace_layout_duplicate(bmain, workspace, layout_old, win);
WM_event_add_notifier(C, NC_SCREEN | ND_LAYOUTBROWSE, layout_new);
return OPERATOR_FINISHED;
@ -5198,14 +5149,13 @@ void ED_region_visibility_change_update_animated(bContext *C, ScrArea *area, ARe
{
wmWindowManager *wm = CTX_wm_manager(C);
wmWindow *win = CTX_wm_window(C);
RegionAlphaInfo *rgi;
/* end running timer */
if (region->regiontimer) {
region_blend_end(C, region, true);
}
rgi = MEM_callocN(sizeof(RegionAlphaInfo), "RegionAlphaInfo");
RegionAlphaInfo *rgi = MEM_callocN(sizeof(RegionAlphaInfo), "RegionAlphaInfo");
rgi->hidden = region->flag & RGN_FLAG_HIDDEN;
rgi->area = area;
@ -5234,7 +5184,6 @@ void ED_region_visibility_change_update_animated(bContext *C, ScrArea *area, ARe
/* timer runs in win->handlers, so it cannot use context to find area/region */
static int region_blend_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *event)
{
RegionAlphaInfo *rgi;
wmTimer *timer = event->customdata;
/* event type is TIMERREGION, but we better check */
@ -5242,7 +5191,7 @@ static int region_blend_invoke(bContext *C, wmOperator *UNUSED(op), const wmEven
return OPERATOR_PASS_THROUGH;
}
rgi = timer->customdata;
RegionAlphaInfo *rgi = timer->customdata;
/* always send redraws */
ED_region_tag_redraw(rgi->region);
@ -5577,10 +5526,9 @@ static void keymap_modal_set(wmKeyConfig *keyconf)
{KM_MODAL_SNAP_OFF, "SNAP_OFF", 0, "Snap off", ""},
{0, NULL, 0, NULL, NULL},
};
wmKeyMap *keymap;
/* Standard Modal keymap ------------------------------------------------ */
keymap = WM_modalkeymap_ensure(keyconf, "Standard Modal Map", modal_items);
wmKeyMap *keymap = WM_modalkeymap_ensure(keyconf, "Standard Modal Map", modal_items);
WM_modalkeymap_assign(keymap, "SCREEN_OT_area_move");
}
@ -5607,8 +5555,6 @@ static void blend_file_drop_copy(wmDrag *drag, wmDropBox *drop)
/* called in spacetypes.c */
void ED_keymap_screen(wmKeyConfig *keyconf)
{
ListBase *lb;
/* Screen Editing ------------------------------------------------ */
WM_keymap_ensure(keyconf, "Screen Editing", 0, 0);
@ -5623,7 +5569,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
WM_keymap_ensure(keyconf, "Frames", 0, 0);
/* dropbox for entire window */
lb = WM_dropboxmap_find("Window", 0, 0);
ListBase *lb = WM_dropboxmap_find("Window", 0, 0);
WM_dropbox_add(lb, "WM_OT_drop_blend_file", blend_file_drop_poll, blend_file_drop_copy);
WM_dropbox_add(lb, "UI_OT_drop_color", UI_drop_color_poll, UI_drop_color_copy);

View File

@ -203,12 +203,12 @@ static void screenshot_draw(bContext *UNUSED(C), wmOperator *op)
{
uiLayout *layout = op->layout;
ScreenshotData *scd = op->customdata;
PointerRNA ptr;
uiLayoutSetPropSep(layout, true);
uiLayoutSetPropDecorate(layout, false);
/* image template */
PointerRNA ptr;
RNA_pointer_create(NULL, &RNA_ImageFormatSettings, &scd->im_format, &ptr);
uiTemplateImageSettings(layout, &ptr, false);

View File

@ -385,7 +385,6 @@ static void workspace_append_button(uiLayout *layout,
const Main *from_main)
{
const ID *id = (ID *)workspace;
PointerRNA opptr;
const char *filepath = from_main->name;
if (strlen(filepath) == 0) {
@ -393,6 +392,8 @@ static void workspace_append_button(uiLayout *layout,
}
BLI_assert(STREQ(ot_append->idname, "WORKSPACE_OT_append_activate"));
PointerRNA opptr;
uiItemFullO_ptr(
layout, ot_append, workspace->id.name + 2, ICON_NONE, NULL, WM_OP_EXEC_DEFAULT, 0, &opptr);
RNA_string_set(&opptr, "idname", id->name + 2);

View File

@ -61,11 +61,9 @@ WorkSpaceLayout *ED_workspace_layout_duplicate(Main *bmain,
{
bScreen *screen_old = BKE_workspace_layout_screen_get(layout_old);
const char *name = BKE_workspace_layout_name_get(layout_old);
bScreen *screen_new;
WorkSpaceLayout *layout_new;
layout_new = ED_workspace_layout_add(bmain, workspace, win, name);
screen_new = BKE_workspace_layout_screen_get(layout_new);
WorkSpaceLayout *layout_new = ED_workspace_layout_add(bmain, workspace, win, name);
bScreen *screen_new = BKE_workspace_layout_screen_get(layout_new);
if (BKE_screen_is_fullscreen_area(screen_old)) {
LISTBASE_FOREACH (ScrArea *, area_old, &screen_old->areabase) {
@ -229,7 +227,6 @@ bool ED_workspace_layout_cycle(WorkSpace *workspace, const short direction, bCon
{
wmWindow *win = CTX_wm_window(C);
WorkSpaceLayout *old_layout = BKE_workspace_active_layout_get(win->workspace_hook);
WorkSpaceLayout *new_layout;
const bScreen *old_screen = BKE_workspace_layout_screen_get(old_layout);
ScrArea *area = CTX_wm_area(C);
@ -238,11 +235,12 @@ bool ED_workspace_layout_cycle(WorkSpace *workspace, const short direction, bCon
}
BLI_assert(ELEM(direction, 1, -1));
new_layout = BKE_workspace_layout_iter_circular(workspace,
old_layout,
workspace_layout_cycle_iter_cb,
NULL,
(direction == -1) ? true : false);
WorkSpaceLayout *new_layout = BKE_workspace_layout_iter_circular(workspace,
old_layout,
workspace_layout_cycle_iter_cb,
NULL,
(direction == -1) ? true :
false);
if (new_layout && (old_layout != new_layout)) {
bScreen *new_screen = BKE_workspace_layout_screen_get(new_layout);