diff options
author | Noel Grandin <noel@peralex.com> | 2016-06-20 15:56:35 +0200 |
---|---|---|
committer | Noel Grandin <noelgrandin@gmail.com> | 2016-06-23 06:28:00 +0000 |
commit | aa0d0536a444fb26d9e570bd6bf6c1bdc3596cf3 (patch) | |
tree | 8b2a5207e77fa4054a37b33c25378c23a00af8ed /sw/source/uibase/utlui | |
parent | b722f3d6fc72877e8caaaae7291d5d736ddc494d (diff) |
tdf#97527 - vcl: reference-count Menu
some places are marked with "dodgy"- need to check those to see
what is going on, because they are leaving dangling pointers behind
in the Menu class
Change-Id: I41d5c7c0fec2f70ce9e3ffdc48cd03d26c0a869b
Reviewed-on: https://gerrit.libreoffice.org/26516
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Diffstat (limited to 'sw/source/uibase/utlui')
-rw-r--r-- | sw/source/uibase/utlui/bookctrl.cxx | 8 | ||||
-rw-r--r-- | sw/source/uibase/utlui/content.cxx | 12 | ||||
-rw-r--r-- | sw/source/uibase/utlui/glbltree.cxx | 18 | ||||
-rw-r--r-- | sw/source/uibase/utlui/navipi.cxx | 8 | ||||
-rw-r--r-- | sw/source/uibase/utlui/tmplctrl.cxx | 8 | ||||
-rw-r--r-- | sw/source/uibase/utlui/unotools.cxx | 23 |
6 files changed, 38 insertions, 39 deletions
diff --git a/sw/source/uibase/utlui/bookctrl.cxx b/sw/source/uibase/utlui/bookctrl.cxx index 408181cc86a9..41f064150232 100644 --- a/sw/source/uibase/utlui/bookctrl.cxx +++ b/sw/source/uibase/utlui/bookctrl.cxx @@ -101,7 +101,7 @@ void SwBookmarkControl::Command( const CommandEvent& rCEvt ) if ( rCEvt.GetCommand() == CommandEventId::ContextMenu && !GetStatusBar().GetItemText( GetId() ).isEmpty() ) { - BookmarkPopup_Impl aPop; + ScopedVclPtrInstance<BookmarkPopup_Impl> aPop; SwWrtShell* pWrtShell = ::GetActiveWrtShell(); if( pWrtShell && pWrtShell->getIDocumentMarkAccess()->getAllMarksCount() > 0 ) { @@ -115,13 +115,13 @@ void SwBookmarkControl::Command( const CommandEvent& rCEvt ) { if(IDocumentMarkAccess::MarkType::BOOKMARK == IDocumentMarkAccess::GetType(**ppBookmark)) { - aPop.InsertItem( nPopupId, ppBookmark->get()->GetName() ); + aPop->InsertItem( nPopupId, ppBookmark->get()->GetName() ); aBookmarkIdx[nPopupId] = static_cast<sal_uInt16>(ppBookmark - ppBookmarkStart); nPopupId++; } } - aPop.Execute( &GetStatusBar(), rCEvt.GetMousePosPixel()); - sal_uInt16 nCurrId = aPop.GetCurId(); + aPop->Execute( &GetStatusBar(), rCEvt.GetMousePosPixel()); + sal_uInt16 nCurrId = aPop->GetCurId(); if( nCurrId != USHRT_MAX) { SfxUInt16Item aBookmark( FN_STAT_BOOKMARK, aBookmarkIdx[nCurrId] ); diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index 85a65f4fcece..fa3c723f198b 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -1096,13 +1096,13 @@ sal_Int8 SwContentTree::ExecuteDrop( const ExecuteDropEvent& rEvt ) // Handler for Dragging and ContextMenu -std::unique_ptr<PopupMenu> SwContentTree::CreateContextMenu() +VclPtr<PopupMenu> SwContentTree::CreateContextMenu() { - std::unique_ptr<PopupMenu> pPop(new PopupMenu); - PopupMenu* pSubPop1 = new PopupMenu; - PopupMenu* pSubPop2 = new PopupMenu; - PopupMenu* pSubPop3 = new PopupMenu; - PopupMenu* pSubPop4 = new PopupMenu; // Edit + VclPtrInstance<PopupMenu> pPop; + VclPtrInstance<PopupMenu> pSubPop1; + VclPtrInstance<PopupMenu> pSubPop2; + VclPtrInstance<PopupMenu> pSubPop3; + VclPtrInstance<PopupMenu> pSubPop4; // Edit for(int i = 1; i <= MAXLEVEL; ++i) { diff --git a/sw/source/uibase/utlui/glbltree.cxx b/sw/source/uibase/utlui/glbltree.cxx index 9aaee86d7bbf..e8e47994680d 100644 --- a/sw/source/uibase/utlui/glbltree.cxx +++ b/sw/source/uibase/utlui/glbltree.cxx @@ -330,16 +330,16 @@ sal_Int8 SwGlobalTree::AcceptDrop( const AcceptDropEvent& rEvt ) return nRet; } -std::unique_ptr<PopupMenu> SwGlobalTree::CreateContextMenu() +VclPtr<PopupMenu> SwGlobalTree::CreateContextMenu() { - std::unique_ptr<PopupMenu> pPop; + VclPtr<PopupMenu> pPop; if(pActiveShell && !pActiveShell->GetView().GetDocShell()->IsReadOnly()) { const sal_uInt16 nEnableFlags = GetEnableFlags(); - pPop.reset(new PopupMenu); - PopupMenu* pSubPop1 = new PopupMenu; - PopupMenu* pSubPop2 = new PopupMenu; + pPop = VclPtr<PopupMenu>::Create(); + VclPtrInstance<PopupMenu> pSubPop1; + VclPtrInstance<PopupMenu> pSubPop2; for (sal_uInt16 i = CTX_UPDATE_SEL; i <= CTX_UPDATE_ALL; i++) { @@ -394,7 +394,7 @@ void SwGlobalTree::TbxMenuHdl(sal_uInt16 nTbxId, ToolBox* pBox) const sal_uInt16 nEnableFlags = GetEnableFlags(); if(FN_GLOBAL_OPEN == nTbxId) { - std::unique_ptr<PopupMenu> pMenu(new PopupMenu); + ScopedVclPtrInstance<PopupMenu> pMenu; for (sal_uInt16 i = CTX_INSERT_ANY_INDEX; i <= CTX_INSERT_TEXT; i++) { pMenu->InsertItem( i, aContextStrings[STR_INDEX - STR_GLOBAL_CONTEXT_FIRST - CTX_INSERT_ANY_INDEX + i] ); @@ -406,13 +406,13 @@ void SwGlobalTree::TbxMenuHdl(sal_uInt16 nTbxId, ToolBox* pBox) pMenu->EnableItem(CTX_INSERT_NEW_FILE, 0 != (nEnableFlags & ENABLE_INSERT_FILE)); pMenu->SetSelectHdl(LINK(this, SwGlobalTree, PopupHdl)); pMenu->Execute(pBox, pBox->GetItemRect(nTbxId)); - pMenu.reset(); + pMenu.disposeAndClear(); pBox->EndSelection(); pBox->Invalidate(); } else if(FN_GLOBAL_UPDATE == nTbxId) { - std::unique_ptr<PopupMenu> pMenu(new PopupMenu); + ScopedVclPtrInstance<PopupMenu> pMenu; for (sal_uInt16 i = CTX_UPDATE_SEL; i <= CTX_UPDATE_ALL; i++) { pMenu->InsertItem( i, aContextStrings[STR_UPDATE_SEL - STR_GLOBAL_CONTEXT_FIRST - CTX_UPDATE_SEL+ i] ); @@ -421,7 +421,7 @@ void SwGlobalTree::TbxMenuHdl(sal_uInt16 nTbxId, ToolBox* pBox) pMenu->EnableItem(CTX_UPDATE_SEL, 0 != (nEnableFlags & ENABLE_UPDATE_SEL)); pMenu->SetSelectHdl(LINK(this, SwGlobalTree, PopupHdl)); pMenu->Execute(pBox, pBox->GetItemRect(nTbxId)); - pMenu.reset(); + pMenu.disposeAndClear(); pBox->EndSelection(); pBox->Invalidate(); } diff --git a/sw/source/uibase/utlui/navipi.cxx b/sw/source/uibase/utlui/navipi.cxx index f87e656b6801..2d66ac1d083a 100644 --- a/sw/source/uibase/utlui/navipi.cxx +++ b/sw/source/uibase/utlui/navipi.cxx @@ -380,7 +380,7 @@ IMPL_LINK_TYPED( SwNavigationPI, ToolBoxDropdownClickHdl, ToolBox*, pBox, void ) HID_NAVI_DRAG_LINK, HID_NAVI_DRAG_COPY, }; - std::unique_ptr<PopupMenu> pMenu(new PopupMenu); + ScopedVclPtrInstance<PopupMenu> pMenu; for (sal_uInt16 i = 0; i <= static_cast<sal_uInt16>(RegionMode::EMBEDDED); i++) { pMenu->InsertItem( i + 1, m_aContextArr[i] ); @@ -394,13 +394,13 @@ IMPL_LINK_TYPED( SwNavigationPI, ToolBoxDropdownClickHdl, ToolBox*, pBox, void ) PopupMenuFlags::ExecuteDown ); pBox->SetItemDown( nCurrItemId, false ); pBox->EndSelection(); - pMenu.reset(); + pMenu.disposeAndClear(); pBox->Invalidate(); } break; case FN_OUTLINE_LEVEL: { - std::unique_ptr<PopupMenu> pMenu(new PopupMenu); + ScopedVclPtrInstance<PopupMenu> pMenu; for (sal_uInt16 i = 101; i <= 100 + MAXLEVEL; i++) { pMenu->InsertItem( i, OUString::number(i - 100) ); @@ -413,7 +413,7 @@ IMPL_LINK_TYPED( SwNavigationPI, ToolBoxDropdownClickHdl, ToolBox*, pBox, void ) pBox->GetItemRect(FN_OUTLINE_LEVEL), PopupMenuFlags::ExecuteDown ); pBox->SetItemDown( nCurrItemId, false ); - pMenu.reset(); + pMenu.disposeAndClear(); pBox->EndSelection(); pBox->Invalidate(); } diff --git a/sw/source/uibase/utlui/tmplctrl.cxx b/sw/source/uibase/utlui/tmplctrl.cxx index 6790276b5c57..f5f2e56968da 100644 --- a/sw/source/uibase/utlui/tmplctrl.cxx +++ b/sw/source/uibase/utlui/tmplctrl.cxx @@ -93,7 +93,7 @@ void SwTemplateControl::Command( const CommandEvent& rCEvt ) if ( rCEvt.GetCommand() == CommandEventId::ContextMenu && !GetStatusBar().GetItemText( GetId() ).isEmpty() ) { - SwTemplatePopup_Impl aPop; + ScopedVclPtrInstance<SwTemplatePopup_Impl> aPop; { SwView* pView = ::GetActiveView(); SwWrtShell* pWrtShell; @@ -111,12 +111,12 @@ void SwTemplateControl::Command( const CommandEvent& rCEvt ) SfxStyleSheetBase* pStyle = pPool->First(); while( pStyle ) { - aPop.InsertItem( ++nCount, pStyle->GetName() ); + aPop->InsertItem( ++nCount, pStyle->GetName() ); pStyle = pPool->Next(); } - aPop.Execute( &GetStatusBar(), rCEvt.GetMousePosPixel()); - const sal_uInt16 nCurrId = aPop.GetCurId(); + aPop->Execute( &GetStatusBar(), rCEvt.GetMousePosPixel()); + const sal_uInt16 nCurrId = aPop->GetCurId(); if( nCurrId != USHRT_MAX) { // looks a bit awkward, but another way is not possible diff --git a/sw/source/uibase/utlui/unotools.cxx b/sw/source/uibase/utlui/unotools.cxx index 5a43806c3c00..a4346b6785ed 100644 --- a/sw/source/uibase/utlui/unotools.cxx +++ b/sw/source/uibase/utlui/unotools.cxx @@ -448,18 +448,18 @@ static const sal_Int16 nZoomValues[] = void SwOneExampleFrame::CreatePopup(const Point& rPt) { - PopupMenu aPop; - PopupMenu aSubPop1; + ScopedVclPtrInstance<PopupMenu> aPop; + ScopedVclPtrInstance<PopupMenu> aSubPop1; ResStringArray& rArr = aMenuRes.GetMenuArray(); - aPop.InsertItem(ITEM_UP, rArr.GetString(rArr.FindIndex(ST_MENU_UP ))); - aPop.InsertItem(ITEM_DOWN, rArr.GetString(rArr.FindIndex(ST_MENU_DOWN ))); + aPop->InsertItem(ITEM_UP, rArr.GetString(rArr.FindIndex(ST_MENU_UP ))); + aPop->InsertItem(ITEM_DOWN, rArr.GetString(rArr.FindIndex(ST_MENU_DOWN ))); Link<Menu*,bool> aSelLk = LINK(this, SwOneExampleFrame, PopupHdl ); - aPop.SetSelectHdl(aSelLk); + aPop->SetSelectHdl(aSelLk); if(EX_SHOW_ONLINE_LAYOUT == nStyleFlags) { - aPop.InsertItem(ITEM_ZOOM, rArr.GetString(rArr.FindIndex(ST_MENU_ZOOM ))); + aPop->InsertItem(ITEM_ZOOM, rArr.GetString(rArr.FindIndex(ST_MENU_ZOOM ))); uno::Reference< view::XViewSettingsSupplier > xSettings(_xController, uno::UNO_QUERY); uno::Reference< beans::XPropertySet > xViewProps = xSettings->getViewSettings(); @@ -472,15 +472,14 @@ void SwOneExampleFrame::CreatePopup(const Point& rPt) { OUString sTemp = unicode::formatPercent(nZoomValues[i], Application::GetSettings().GetUILanguageTag()); - aSubPop1.InsertItem( ITEM_ZOOM + i + 1, sTemp); + aSubPop1->InsertItem( ITEM_ZOOM + i + 1, sTemp); if(nZoom == nZoomValues[i]) - aSubPop1.CheckItem(ITEM_ZOOM + i + 1); + aSubPop1->CheckItem(ITEM_ZOOM + i + 1); } - aPop.SetPopupMenu( ITEM_ZOOM, &aSubPop1 ); - aSubPop1.SetSelectHdl(aSelLk); + aPop->SetPopupMenu( ITEM_ZOOM, aSubPop1.get() ); + aSubPop1->SetSelectHdl(aSelLk); } - aPop.Execute( aTopWindow.get(), rPt ); - + aPop->Execute( aTopWindow.get(), rPt ); } IMPL_LINK_TYPED(SwOneExampleFrame, PopupHdl, Menu*, pMenu, bool ) |