summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2016-12-20 14:13:13 +0100
committerStephan Bergmann <sbergman@redhat.com>2016-12-20 14:13:13 +0100
commit8a71eacef77c5b45df0078b92893e69b1140bac2 (patch)
tree197a8112b8dbbcf11cb5849cbf4e33a3c63e5644
parentd0c3dba866ba0900dcaf2c3a25200edb516bd608 (diff)
Don't use 'this' in ctor
Change-Id: I405160743609aae92a37b2359bea5aa42ee66519
-rw-r--r--include/sfx2/sidebar/SidebarController.hxx5
-rw-r--r--sfx2/source/sidebar/SidebarController.cxx24
-rw-r--r--sfx2/source/sidebar/SidebarDockingWindow.cxx2
3 files changed, 22 insertions, 9 deletions
diff --git a/include/sfx2/sidebar/SidebarController.hxx b/include/sfx2/sidebar/SidebarController.hxx
index 7aaefc188864..519daef5da82 100644
--- a/include/sfx2/sidebar/SidebarController.hxx
+++ b/include/sfx2/sidebar/SidebarController.hxx
@@ -65,7 +65,7 @@ class SFX2_DLLPUBLIC SidebarController
public SidebarControllerInterfaceBase
{
public:
- SidebarController(
+ static rtl::Reference<SidebarController> create(
SidebarDockingWindow* pParentWindow,
const css::uno::Reference<css::frame::XFrame>& rxFrame);
virtual ~SidebarController() override;
@@ -163,6 +163,9 @@ public:
void FadeOut();
private:
+ SidebarController(
+ SidebarDockingWindow* pParentWindow,
+ const css::uno::Reference<css::frame::XFrame>& rxFrame);
VclPtr<Deck> mpCurrentDeck;
VclPtr<SidebarDockingWindow> mpParentWindow;
diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx
index eb5cad765fe1..f048a7a5b0f8 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -116,24 +116,34 @@ SidebarController::SidebarController (
{
// Decks and panel collections for this sidebar
mpResourceManager = o3tl::make_unique<ResourceManager>();
+}
+
+rtl::Reference<SidebarController> SidebarController::create(
+ SidebarDockingWindow* pParentWindow,
+ const css::uno::Reference<css::frame::XFrame>& rxFrame)
+{
+ rtl::Reference<SidebarController> instance(
+ new SidebarController(pParentWindow, rxFrame));
- registerSidebarForFrame(this, mxFrame->getController());
+ registerSidebarForFrame(instance.get(), rxFrame->getController());
// Listen for window events.
- mpParentWindow->AddEventListener(LINK(this, SidebarController, WindowEventHandler));
+ instance->mpParentWindow->AddEventListener(LINK(instance.get(), SidebarController, WindowEventHandler));
// Listen for theme property changes.
Theme::GetPropertySet()->addPropertyChangeListener(
"",
- static_cast<css::beans::XPropertyChangeListener*>(this));
+ static_cast<css::beans::XPropertyChangeListener*>(instance.get()));
// Get the dispatch object as preparation to listen for changes of
// the read-only state.
const util::URL aURL (Tools::GetURL(gsReadOnlyCommandName));
- mxReadOnlyModeDispatch = Tools::GetDispatch(mxFrame, aURL);
- if (mxReadOnlyModeDispatch.is())
- mxReadOnlyModeDispatch->addStatusListener(this, aURL);
+ instance->mxReadOnlyModeDispatch = Tools::GetDispatch(rxFrame, aURL);
+ if (instance->mxReadOnlyModeDispatch.is())
+ instance->mxReadOnlyModeDispatch->addStatusListener(instance.get(), aURL);
- SwitchToDeck(gsDefaultDeckId);
+ instance->SwitchToDeck(gsDefaultDeckId);
+
+ return instance;
}
SidebarController::~SidebarController()
diff --git a/sfx2/source/sidebar/SidebarDockingWindow.cxx b/sfx2/source/sidebar/SidebarDockingWindow.cxx
index e76773198fd2..84a2834e5a34 100644
--- a/sfx2/source/sidebar/SidebarDockingWindow.cxx
+++ b/sfx2/source/sidebar/SidebarDockingWindow.cxx
@@ -44,7 +44,7 @@ SidebarDockingWindow::SidebarDockingWindow(SfxBindings* pSfxBindings, SidebarChi
{
const SfxViewFrame* pViewFrame = pSfxBindings->GetDispatcher()->GetFrame();
const SfxFrame& rFrame = pViewFrame->GetFrame();
- mpSidebarController.set(new sfx2::sidebar::SidebarController(this, rFrame.GetFrameInterface()));
+ mpSidebarController.set(sfx2::sidebar::SidebarController::create(this, rFrame.GetFrameInterface()).get());
}
}