From c3c3ef4bbcef6db826b602c5f313c827979b9d16 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Tue, 13 Nov 2018 14:14:03 +0100 Subject: [PATCH] OO-3731: prevent activation loop to disposed the survey controller --- .../stack/BreadcrumbedStackedPanel.java | 4 ++++ .../modules/quality/ui/QualityHomeController.java | 15 +++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java b/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java index 1f44ead7a7e..d7883a94c7c 100644 --- a/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java +++ b/src/main/java/org/olat/core/gui/components/stack/BreadcrumbedStackedPanel.java @@ -277,6 +277,10 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre } return controller; } + + public boolean hasController(Controller controller) { + return getIndex(controller) >= 0; + } @Override public void popContent() { diff --git a/src/main/java/org/olat/modules/quality/ui/QualityHomeController.java b/src/main/java/org/olat/modules/quality/ui/QualityHomeController.java index d32d3c4c848..99b53040933 100644 --- a/src/main/java/org/olat/modules/quality/ui/QualityHomeController.java +++ b/src/main/java/org/olat/modules/quality/ui/QualityHomeController.java @@ -221,12 +221,15 @@ public class QualityHomeController extends BasicController implements Activateab } private void doOpenUserParticipations(UserRequest ureq) { - stackPanel.popUpToRootController(ureq); - OLATResourceable ores = OresHelper.createOLATResourceableInstance(ORES_MY_TYPE, 0l); - WindowControl bwControl = addToHistory(ureq, ores, null); - executorParticipationListCtrl = new ExecutorParticipationsListController(ureq, bwControl, secCallback); - listenTo(executorParticipationListCtrl); - stackPanel.pushController(translate("breadcrumb.executor.participations"), executorParticipationListCtrl); + // reuse existing list controller allow full screen mode et prevent unwanted disposed controllers + if(!stackPanel.hasController(executorParticipationListCtrl)) { + stackPanel.popUpToRootController(ureq); + OLATResourceable ores = OresHelper.createOLATResourceableInstance(ORES_MY_TYPE, 0l); + WindowControl bwControl = addToHistory(ureq, ores, null); + executorParticipationListCtrl = new ExecutorParticipationsListController(ureq, bwControl, secCallback); + listenTo(executorParticipationListCtrl); + stackPanel.pushController(translate("breadcrumb.executor.participations"), executorParticipationListCtrl); + } } private void doOpenSuggestion(UserRequest ureq) { -- GitLab