summaryrefslogtreecommitdiff
path: root/sw/source/uibase/utlui
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2016-06-20 15:56:35 +0200
committerNoel Grandin <noelgrandin@gmail.com>2016-06-23 06:28:00 +0000
commitaa0d0536a444fb26d9e570bd6bf6c1bdc3596cf3 (patch)
tree8b2a5207e77fa4054a37b33c25378c23a00af8ed /sw/source/uibase/utlui
parentb722f3d6fc72877e8caaaae7291d5d736ddc494d (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.cxx8
-rw-r--r--sw/source/uibase/utlui/content.cxx12
-rw-r--r--sw/source/uibase/utlui/glbltree.cxx18
-rw-r--r--sw/source/uibase/utlui/navipi.cxx8
-rw-r--r--sw/source/uibase/utlui/tmplctrl.cxx8
-rw-r--r--sw/source/uibase/utlui/unotools.cxx23
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 )