Fix T64045: Crash activating fullscreen workspace

See d83a72ec10.
This commit is contained in:
Julian Eisel
2019-05-04 15:27:31 +02:00
parent aa8e3e6fbe
commit 94a064c0e9
2 changed files with 9 additions and 7 deletions

View File

@@ -884,9 +884,11 @@ static bScreen *screen_fullscreen_find_associated_normal_screen(const Main *bmai
{
for (bScreen *screen_iter = bmain->screens.first; screen_iter;
screen_iter = screen_iter->id.next) {
ScrArea *sa = screen_iter->areabase.first;
if (sa && sa->full == screen) {
return screen_iter;
if ((screen_iter != screen) && ELEM(screen_iter->state, SCREENMAXIMIZED, SCREENFULL)) {
ScrArea *sa = screen_iter->areabase.first;
if (sa && sa->full == screen) {
return screen_iter;
}
}
}
@@ -905,9 +907,7 @@ bScreen *screen_change_prepare(
return NULL;
}
if (ELEM(screen_new->state, SCREENMAXIMIZED, SCREENFULL)) {
screen_new = screen_fullscreen_find_associated_normal_screen(bmain, screen_new);
}
screen_new = screen_fullscreen_find_associated_normal_screen(bmain, screen_new);
/* check for valid winid */
if (!(screen_new->winid == 0 || screen_new->winid == win->winid)) {

View File

@@ -165,7 +165,9 @@ bool ED_workspace_change(WorkSpace *workspace_new, bContext *C, wmWindowManager
}
screen_new = screen_change_prepare(screen_old, screen_new, bmain, C, win);
BLI_assert(BKE_workspace_layout_screen_get(layout_new) == screen_new);
if (BKE_workspace_layout_screen_get(layout_new) != screen_new) {
layout_new = BKE_workspace_layout_find(workspace_new, screen_new);
}
if (screen_new == NULL) {
return false;