related tdf#33603: fix notespanel missing outliner on mode change
When MainViewShell changed editing mode, two EventMultipexerEvents
arrive in succession - if while processing the first one links are
reset, second one was ignored.
Do not remove EventMultiplexer listener on FillOutliner()
Change-Id: I9c41c823ca74574238d1199ed38f92d9c75a113e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165807
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
diff --git a/sd/source/ui/view/NotesPanelView.cxx b/sd/source/ui/view/NotesPanelView.cxx
index 0cbc714..49fa38a 100644
--- a/sd/source/ui/view/NotesPanelView.cxx
+++ b/sd/source/ui/view/NotesPanelView.cxx
@@ -52,6 +52,9 @@ NotesPanelView::NotesPanelView(DrawDocShell& rDocSh, vcl::Window* pWindow,
// fill Outliner with contents
FillOutliner();
mrNotesPanelViewShell.GetViewShellBase().GetEventMultiplexer()->AddEventListener(
LINK(this, NotesPanelView, EventMultiplexerListener));
// TODO: UNDO
// sd::UndoManager* pDocUndoMgr = dynamic_cast<sd::UndoManager*>(mpDocSh->GetUndoManager());
// if (pDocUndoMgr != nullptr)
@@ -60,8 +63,10 @@ NotesPanelView::NotesPanelView(DrawDocShell& rDocSh, vcl::Window* pWindow,
NotesPanelView::~NotesPanelView()
{
ResetLinks();
mrNotesPanelViewShell.GetViewShellBase().GetEventMultiplexer()->RemoveEventListener(
LINK(this, NotesPanelView, EventMultiplexerListener));
ResetLinks();
// DisconnectFromApplication();
// mpProgress.reset();
}
@@ -93,16 +98,9 @@ void NotesPanelView::FillOutliner()
void NotesPanelView::SetLinks()
{
maOutliner.SetStatusEventHdl(LINK(this, NotesPanelView, StatusEventHdl));
mrNotesPanelViewShell.GetViewShellBase().GetEventMultiplexer()->AddEventListener(
LINK(this, NotesPanelView, EventMultiplexerListener));
}
void NotesPanelView::ResetLinks()
{
maOutliner.SetStatusEventHdl(Link<EditStatus&, void>());
mrNotesPanelViewShell.GetViewShellBase().GetEventMultiplexer()->RemoveEventListener(
LINK(this, NotesPanelView, EventMultiplexerListener));
}
void NotesPanelView::ResetLinks() { maOutliner.SetStatusEventHdl(Link<EditStatus&, void>()); }
void NotesPanelView::removeListener()
{