From c3bc5c09e093967ad77cb1ee3330b80d16bfae95 Mon Sep 17 00:00:00 2001 From: Sarper Akdemir Date: Thu, 4 Apr 2024 18:41:33 +0300 Subject: [PATCH] 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 --- sd/source/ui/view/NotesPanelView.cxx | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/sd/source/ui/view/NotesPanelView.cxx b/sd/source/ui/view/NotesPanelView.cxx index 0cbc7149e8ae..49fa38a05d88 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(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()); - mrNotesPanelViewShell.GetViewShellBase().GetEventMultiplexer()->RemoveEventListener( - LINK(this, NotesPanelView, EventMultiplexerListener)); -} +void NotesPanelView::ResetLinks() { maOutliner.SetStatusEventHdl(Link()); } void NotesPanelView::removeListener() {