[Libreoffice-commits] core.git: 11 commits - basegfx/inc basegfx/source bin/includebloat.awk canvas/source cppcanvas/inc cppcanvas/source cui/source desktop/inc desktop/source extensions/source filter/source framework/inc framework/source include/canvas include/comphelper include/drawinglayer include/o3tl include/sfx2 include/svtools include/vcl oox/inc oox/source reportdesign/inc reportdesign/source sd/source sfx2/source slideshow/source svgio/inc svtools/source svx/source sw/inc sw/source unoxml/source vcl/inc vcl/opengl vcl/osx vcl/source vcl/unx xmloff/inc
Michael Stahl
mstahl at redhat.com
Fri Jul 10 14:36:53 PDT 2015
basegfx/inc/pch/precompiled_basegfx.hxx | 2
basegfx/source/range/b2drangeclipper.cxx | 2
bin/includebloat.awk | 34
canvas/source/cairo/cairo_canvasfont.hxx | 2
canvas/source/cairo/cairo_canvashelper.hxx | 2
canvas/source/cairo/cairo_devicehelper.hxx | 2
canvas/source/cairo/cairo_spritedevicehelper.hxx | 2
canvas/source/cairo/cairo_textlayout.hxx | 2
canvas/source/directx/dx_bitmapcanvashelper.hxx | 2
canvas/source/directx/dx_canvasfont.hxx | 2
canvas/source/directx/dx_canvashelper.hxx | 2
canvas/source/directx/dx_devicehelper.hxx | 2
canvas/source/directx/dx_graphicsprovider.hxx | 2
canvas/source/directx/dx_spritedevicehelper.hxx | 2
canvas/source/directx/dx_textlayout.hxx | 2
canvas/source/opengl/ogl_bitmapcanvashelper.hxx | 2
canvas/source/opengl/ogl_canvasfont.hxx | 2
canvas/source/opengl/ogl_spritedevicehelper.hxx | 2
canvas/source/opengl/ogl_textlayout.hxx | 2
canvas/source/vcl/canvasfont.hxx | 2
canvas/source/vcl/canvashelper.hxx | 2
canvas/source/vcl/devicehelper.hxx | 2
canvas/source/vcl/spritedevicehelper.hxx | 2
canvas/source/vcl/textlayout.hxx | 2
canvas/source/vcl/windowoutdevholder.hxx | 2
cppcanvas/inc/pch/precompiled_cppcanvas.hxx | 2
cppcanvas/source/mtfrenderer/bitmapaction.cxx | 2
cppcanvas/source/mtfrenderer/cachedprimitivebase.hxx | 2
cppcanvas/source/mtfrenderer/lineaction.cxx | 2
cppcanvas/source/mtfrenderer/pointaction.cxx | 2
cppcanvas/source/mtfrenderer/polypolyaction.cxx | 2
cppcanvas/source/mtfrenderer/textaction.cxx | 2
cppcanvas/source/mtfrenderer/transparencygroupaction.cxx | 2
cui/source/options/optpath.cxx | 2
cui/source/options/tsaurls.cxx | 2
desktop/inc/pch/precompiled_deploymentgui.hxx | 2
desktop/source/deployment/gui/dp_gui_service.cxx | 2
extensions/source/logging/logger.cxx | 5
extensions/source/update/check/updatehdl.hxx | 2
filter/source/svg/svgfilter.cxx | 2
filter/source/svg/svgimport.cxx | 2
framework/inc/pch/precompiled_fwk.hxx | 2
framework/source/layoutmanager/layoutmanager.cxx | 2
include/canvas/base/canvascustomspritebase.hxx | 2
include/canvas/parametricpolypolygon.hxx | 2
include/canvas/rendering/irendermodule.hxx | 2
include/canvas/spriteredrawmanager.hxx | 2
include/comphelper/servicedecl.hxx | 2
include/drawinglayer/primitive2d/baseprimitive2d.hxx | 2
include/drawinglayer/primitive3d/baseprimitive3d.hxx | 2
include/o3tl/cow_wrapper.hxx | 2
include/sfx2/DocumentMetadataAccess.hxx | 2
include/sfx2/fcontnr.hxx | 2
include/sfx2/infobar.hxx | 2
include/svtools/DocumentInfoPreview.hxx | 2
include/svtools/treelist.hxx | 26
include/vcl/bitmap.hxx | 107 -
include/vcl/builder.hxx | 5
include/vcl/combobox.hxx | 61
include/vcl/edit.hxx | 16
include/vcl/opengl/OpenGLContext.hxx | 2
include/vcl/settings.hxx | 6
oox/inc/pch/precompiled_oox.hxx | 2
oox/source/drawingml/fillproperties.cxx | 5
reportdesign/inc/pch/precompiled_rpt.hxx | 2
reportdesign/inc/pch/precompiled_rptui.hxx | 2
reportdesign/source/core/api/ReportDefinition.cxx | 2
reportdesign/source/ui/report/ReportController.cxx | 2
sd/source/filter/ppt/pptinanimations.cxx | 3
sd/source/ui/func/fuoltext.cxx | 2
sd/source/ui/slidesorter/cache/SlsRequestQueue.hxx | 3
sd/source/ui/slidesorter/controller/SlideSorterController.cxx | 2
sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx | 2
sd/source/ui/tools/PreviewRenderer.cxx | 2
sfx2/source/dialog/templdlg.cxx | 1
sfx2/source/doc/graphhelp.cxx | 2
slideshow/source/engine/pointersymbol.hxx | 2
slideshow/source/engine/shapes/viewappletshape.hxx | 2
slideshow/source/engine/shapes/viewbackgroundshape.hxx | 2
slideshow/source/engine/shapes/viewmediashape.hxx | 2
slideshow/source/engine/shapes/viewshape.hxx | 2
slideshow/source/engine/slide/userpaintoverlay.hxx | 2
slideshow/source/engine/waitsymbol.hxx | 2
slideshow/source/inc/activitiesfactory.hxx | 2
slideshow/source/inc/activitiesqueue.hxx | 2
slideshow/source/inc/listenercontainer.hxx | 2
slideshow/source/inc/unoviewcontainer.hxx | 2
svgio/inc/svgio/svgreader/svgdocument.hxx | 2
svtools/source/contnr/treelist.cxx | 248 +--
svtools/source/control/inettbc.cxx | 3
svtools/source/control/ruler.cxx | 2
svx/source/fmcomp/gridctrl.cxx | 2
svx/source/form/fmtextcontrolshell.cxx | 2
svx/source/svdraw/svdedxv.cxx | 3
sw/inc/doc.hxx | 13
sw/inc/ndarr.hxx | 2
sw/inc/shellio.hxx | 2
sw/inc/txatbase.hxx | 2
sw/source/core/doc/poolfmt.cxx | 37
sw/source/core/inc/DocumentChartDataProviderManager.hxx | 2
sw/source/core/inc/DocumentContentOperationsManager.hxx | 2
sw/source/core/inc/DocumentDeviceManager.hxx | 2
sw/source/core/inc/DocumentDrawModelManager.hxx | 2
sw/source/core/inc/DocumentExternalDataManager.hxx | 2
sw/source/core/inc/DocumentFieldsManager.hxx | 2
sw/source/core/inc/DocumentLayoutManager.hxx | 2
sw/source/core/inc/DocumentLinksAdministrationManager.hxx | 2
sw/source/core/inc/DocumentListItemsManager.hxx | 2
sw/source/core/inc/DocumentListsManager.hxx | 2
sw/source/core/inc/DocumentOutlineNodesManager.hxx | 2
sw/source/core/inc/DocumentRedlineManager.hxx | 2
sw/source/core/inc/DocumentStateManager.hxx | 2
sw/source/core/inc/DocumentStatisticsManager.hxx | 2
sw/source/core/inc/DocumentStylePoolManager.hxx | 2
sw/source/core/inc/DocumentTimerManager.hxx | 2
sw/source/core/inc/swthreadmanager.hxx | 2
sw/source/core/text/pormulti.cxx | 2
sw/source/filter/ww8/docxtablestyleexport.cxx | 2
unoxml/source/rdf/librdf_repository.cxx | 2
vcl/inc/ResampleKernel.hxx | 131 +
vcl/inc/opengl/salbmp.hxx | 4
vcl/opengl/scale.cxx | 8
vcl/osx/DragSource.hxx | 2
vcl/osx/DragSourceContext.hxx | 2
vcl/osx/DropTarget.hxx | 2
vcl/osx/OSXTransferable.hxx | 2
vcl/osx/clipboard.hxx | 2
vcl/source/control/combobox.cxx | 766 +++++-----
vcl/source/control/edit.cxx | 47
vcl/source/filter/wmf/wmf.cxx | 2
vcl/source/gdi/bitmap3.cxx | 7
vcl/source/window/builder.cxx | 2
vcl/unx/generic/window/salframe.cxx | 2
vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx | 2
vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx | 2
vcl/unx/kde4/KDESalFrame.cxx | 3
xmloff/inc/txtlists.hxx | 2
137 files changed, 1004 insertions(+), 764 deletions(-)
New commits:
commit 6ee9ca5ae9d33aa10e0b86dc9a44c8d69564d556
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jul 10 23:05:36 2015 +0200
svtools: pimplify SvListView
Sadly this saves only 56MB of preprocessor input.
Change-Id: I9ea78306884c5dcb54b61da87b43f700083daf2c
diff --git a/include/svtools/treelist.hxx b/include/svtools/treelist.hxx
index 0d78444..6092bcc 100644
--- a/include/svtools/treelist.hxx
+++ b/include/svtools/treelist.hxx
@@ -30,7 +30,6 @@
#include <limits.h>
#include <vector>
-#include <boost/ptr_container/ptr_map.hpp>
enum class SvListAction
{
@@ -243,23 +242,8 @@ class SVT_DLLPUBLIC SvListView
{
friend class SvTreeList;
- typedef boost::ptr_map<SvTreeListEntry*, SvViewDataEntry> SvDataTable;
-
- sal_uLong nVisibleCount;
- sal_uLong nSelectionCount;
- bool bVisPositionsValid;
-
- SVT_DLLPRIVATE void InitTable();
- SVT_DLLPRIVATE void RemoveViewData( SvTreeListEntry* pParent );
-
- SvDataTable maDataTable; // Mapping SvTreeListEntry -> ViewData
-
- void ActionMoving( SvTreeListEntry* pEntry,SvTreeListEntry* pTargetPrnt,sal_uLong nChildPos);
- void ActionMoved( SvTreeListEntry* pEntry,SvTreeListEntry* pTargetPrnt,sal_uLong nChildPos);
- void ActionInserted( SvTreeListEntry* pEntry );
- void ActionInsertedTree( SvTreeListEntry* pEntry );
- void ActionRemoving( SvTreeListEntry* pEntry );
- void ActionClear();
+ struct Impl;
+ std::unique_ptr<Impl> m_pImpl;
protected:
SvTreeList* pModel;
@@ -306,8 +290,7 @@ public:
SvTreeListEntry* PrevVisible( SvTreeListEntry* pEntry, sal_uInt16& rDelta ) const
{ return pModel->PrevVisible(this,pEntry,rDelta); }
- sal_uLong GetSelectionCount() const
- { return nSelectionCount; }
+ sal_uLong GetSelectionCount() const;
SvTreeListEntry* FirstSelected() const
{ return pModel->FirstSelected(this); }
@@ -350,8 +333,7 @@ public:
void SetEntryFocus( SvTreeListEntry* pEntry, bool bFocus );
const SvViewDataEntry* GetViewData( const SvTreeListEntry* pEntry ) const;
SvViewDataEntry* GetViewData( SvTreeListEntry* pEntry );
- bool HasViewData() const
- { return maDataTable.size() > 1; } // There's always a ROOT
+ bool HasViewData() const;
virtual SvViewDataEntry* CreateViewData( SvTreeListEntry* pEntry );
virtual void InitViewData( SvViewDataEntry*, SvTreeListEntry* pEntry );
diff --git a/svtools/source/contnr/treelist.cxx b/svtools/source/contnr/treelist.cxx
index d6ee88f..3d2c798 100644
--- a/svtools/source/contnr/treelist.cxx
+++ b/svtools/source/contnr/treelist.cxx
@@ -22,6 +22,40 @@
#include <svtools/viewdataentry.hxx>
#include <osl/diagnose.h>
+#include <boost/ptr_container/ptr_map.hpp>
+
+
+typedef boost::ptr_map<SvTreeListEntry*, SvViewDataEntry> SvDataTable;
+
+struct SvListView::Impl
+{
+ SvListView & m_rThis;
+
+ SvDataTable m_DataTable; // Mapping SvTreeListEntry -> ViewData
+
+ sal_uLong m_nVisibleCount;
+ sal_uLong m_nSelectionCount;
+ bool m_bVisPositionsValid;
+
+ Impl(SvListView & rThis)
+ : m_rThis(rThis)
+ , m_nVisibleCount(0)
+ , m_nSelectionCount(0)
+ , m_bVisPositionsValid(false)
+ {}
+
+ void InitTable();
+ void RemoveViewData( SvTreeListEntry* pParent );
+
+ void ActionMoving(SvTreeListEntry* pEntry, SvTreeListEntry* pTargetPrnt, sal_uLong nChildPos);
+ void ActionMoved(SvTreeListEntry* pEntry, SvTreeListEntry* pTargetPrnt, sal_uLong nChildPos);
+ void ActionInserted(SvTreeListEntry* pEntry);
+ void ActionInsertedTree(SvTreeListEntry* pEntry);
+ void ActionRemoving(SvTreeListEntry* pEntry);
+ void ActionClear();
+};
+
+
SvTreeList::SvTreeList() :
mbEnableInvalidate(true)
{
@@ -582,10 +616,10 @@ sal_uLong SvTreeList::GetVisiblePos( const SvListView* pView, SvTreeListEntry* p
{
DBG_ASSERT(pView&&pEntry,"View/Entry?");
- if ( !pView->bVisPositionsValid )
+ if (!pView->m_pImpl->m_bVisPositionsValid)
{
// to make GetVisibleCount refresh the positions
- const_cast<SvListView*>(pView)->nVisibleCount = 0;
+ const_cast<SvListView*>(pView)->m_pImpl->m_nVisibleCount = 0;
GetVisibleCount( const_cast<SvListView*>(pView) );
}
const SvViewDataEntry* pViewData = pView->GetViewData( pEntry );
@@ -597,8 +631,8 @@ sal_uLong SvTreeList::GetVisibleCount( SvListView* pView ) const
assert(pView && "GetVisCount:No View");
if( !pView->HasViewData() )
return 0;
- if ( pView->nVisibleCount )
- return pView->nVisibleCount;
+ if (pView->m_pImpl->m_nVisibleCount)
+ return pView->m_pImpl->m_nVisibleCount;
sal_uLong nPos = 0;
SvTreeListEntry* pEntry = First(); // first entry is always visible
@@ -615,8 +649,8 @@ sal_uLong SvTreeList::GetVisibleCount( SvListView* pView ) const
OSL_FAIL("nVisibleCount bad");
}
#endif
- pView->nVisibleCount = nPos;
- pView->bVisPositionsValid = true;
+ pView->m_pImpl->m_nVisibleCount = nPos;
+ pView->m_pImpl->m_bVisPositionsValid = true;
return nPos;
}
@@ -746,9 +780,9 @@ SvTreeListEntry* SvTreeList::NextVisible(const SvListView* pView,SvTreeListEntry
// nDelta entries existent?
// example: 0,1,2,3,4,5,6,7,8,9 nVisPos=5 nDelta=7
// nNewDelta = 10-nVisPos-1 == 4
- if ( nVisPos+nDelta >= pView->nVisibleCount )
+ if (nVisPos+nDelta >= pView->m_pImpl->m_nVisibleCount)
{
- nDelta = (sal_uInt16)(pView->nVisibleCount-nVisPos);
+ nDelta = static_cast<sal_uInt16>(pView->m_pImpl->m_nVisibleCount-nVisPos);
nDelta--;
}
sal_uInt16 nDeltaTmp = nDelta;
@@ -945,8 +979,8 @@ void SvTreeList::Expand( SvListView* pView, SvTreeListEntry* pEntry )
// if parent is visible, invalidate status data
if ( pView->IsExpanded( pParent ) )
{
- pView->bVisPositionsValid = false;
- pView->nVisibleCount = 0;
+ pView->m_pImpl->m_bVisPositionsValid = false;
+ pView->m_pImpl->m_nVisibleCount = 0;
}
}
@@ -964,8 +998,8 @@ void SvTreeList::Collapse( SvListView* pView, SvTreeListEntry* pEntry )
SvTreeListEntry* pParent = pEntry->pParent;
if ( pView->IsExpanded(pParent) )
{
- pView->nVisibleCount = 0;
- pView->bVisPositionsValid = false;
+ pView->m_pImpl->m_nVisibleCount = 0;
+ pView->m_pImpl->m_bVisPositionsValid = false;
}
}
@@ -980,7 +1014,7 @@ bool SvTreeList::Select( SvListView* pView, SvTreeListEntry* pEntry, bool bSelec
else
{
pViewData->SetSelected(true);
- pView->nSelectionCount++;
+ pView->m_pImpl->m_nSelectionCount++;
}
}
else
@@ -990,7 +1024,7 @@ bool SvTreeList::Select( SvListView* pView, SvTreeListEntry* pEntry, bool bSelec
else
{
pViewData->SetSelected(false);
- pView->nSelectionCount--;
+ pView->m_pImpl->m_nSelectionCount--;
}
}
return true;
@@ -1058,9 +1092,9 @@ void SvTreeList::SelectAll( SvListView* pView, bool bSelect )
pEntry = Next( pEntry );
}
if ( bSelect )
- pView->nSelectionCount = nEntryCount;
+ pView->m_pImpl->m_nSelectionCount = nEntryCount;
else
- pView->nSelectionCount = 0;
+ pView->m_pImpl->m_nSelectionCount = 0;
}
@@ -1148,50 +1182,55 @@ std::pair<SvTreeListEntries::iterator, SvTreeListEntries::iterator>
SvListView::SvListView()
+ : m_pImpl(new Impl(*this))
+ , pModel(nullptr)
{
- pModel = 0;
- nSelectionCount = 0;
- nVisibleCount = 0;
- bVisPositionsValid = false;
}
-
SvListView::~SvListView()
{
- maDataTable.clear();
+ m_pImpl->m_DataTable.clear();
}
-void SvListView::InitTable()
+sal_uLong SvListView::GetSelectionCount() const
+{ return m_pImpl->m_nSelectionCount; }
+
+bool SvListView::HasViewData() const
+{ return m_pImpl->m_DataTable.size() > 1; } // There's always a ROOT
+
+
+void SvListView::Impl::InitTable()
{
- DBG_ASSERT(pModel,"InitTable:No Model");
- DBG_ASSERT(!nSelectionCount&&!nVisibleCount&&!bVisPositionsValid,"InitTable: Not cleared!");
+ DBG_ASSERT(m_rThis.pModel,"InitTable:No Model");
+ DBG_ASSERT(!m_nSelectionCount && !m_nVisibleCount && !m_bVisPositionsValid,
+ "InitTable: Not cleared!");
- if( maDataTable.size() )
+ if (!m_DataTable.empty())
{
- DBG_ASSERT(maDataTable.size()==1,"InitTable: TableCount != 1");
+ DBG_ASSERT(m_DataTable.size() == 1, "InitTable: TableCount != 1");
// Delete the view data allocated to the Clear in the root.
// Attention: The model belonging to the root entry (and thus the entry
// itself) might already be deleted.
- maDataTable.clear();
+ m_DataTable.clear();
}
SvTreeListEntry* pEntry;
SvViewDataEntry* pViewData;
// insert root entry
- pEntry = pModel->pRootItem;
+ pEntry = m_rThis.pModel->pRootItem;
pViewData = new SvViewDataEntry;
pViewData->SetExpanded(true);
- maDataTable.insert( pEntry, pViewData );
+ m_DataTable.insert( pEntry, pViewData );
// now all the other entries
- pEntry = pModel->First();
+ pEntry = m_rThis.pModel->First();
while( pEntry )
{
- pViewData = CreateViewData( pEntry );
+ pViewData = m_rThis.CreateViewData( pEntry );
DBG_ASSERT(pViewData,"InitTable:No ViewData");
- InitViewData( pViewData, pEntry );
- maDataTable.insert( pEntry, pViewData );
- pEntry = pModel->Next( pEntry );
+ m_rThis.InitViewData( pViewData, pEntry );
+ m_DataTable.insert( pEntry, pViewData );
+ pEntry = m_rThis.pModel->Next( pEntry );
}
}
@@ -1202,17 +1241,17 @@ SvViewDataEntry* SvListView::CreateViewData( SvTreeListEntry* )
void SvListView::Clear()
{
- maDataTable.clear();
- nSelectionCount = 0;
- nVisibleCount = 0;
- bVisPositionsValid = false;
+ m_pImpl->m_DataTable.clear();
+ m_pImpl->m_nSelectionCount = 0;
+ m_pImpl->m_nVisibleCount = 0;
+ m_pImpl->m_bVisPositionsValid = false;
if( pModel )
{
// insert root entry
SvTreeListEntry* pEntry = pModel->pRootItem;
SvViewDataEntry* pViewData = new SvViewDataEntry;
pViewData->SetExpanded(true);
- maDataTable.insert( pEntry, pViewData );
+ m_pImpl->m_DataTable.insert( pEntry, pViewData );
}
}
@@ -1228,7 +1267,7 @@ void SvListView::SetModel( SvTreeList* pNewModel )
delete pModel;
}
pModel = pNewModel;
- InitTable();
+ m_pImpl->InitTable();
pNewModel->InsertView( this );
if( bBroadcastCleared )
ModelNotification( SvListAction::CLEARED,0,0,0 );
@@ -1272,75 +1311,75 @@ void SvListView::ModelHasEntryInvalidated( SvTreeListEntry*)
{
}
-void SvListView::ActionMoving( SvTreeListEntry* pEntry,SvTreeListEntry*,sal_uLong)
+void SvListView::Impl::ActionMoving( SvTreeListEntry* pEntry,SvTreeListEntry*,sal_uLong)
{
SvTreeListEntry* pParent = pEntry->pParent;
DBG_ASSERT(pParent,"Model not consistent");
- if (pParent != pModel->pRootItem && pParent->maChildren.size() == 1)
+ if (pParent != m_rThis.pModel->pRootItem && pParent->maChildren.size() == 1)
{
- SvViewDataEntry* pViewData = maDataTable.find( pParent )->second;
+ SvViewDataEntry* pViewData = m_DataTable.find( pParent )->second;
pViewData->SetExpanded(false);
}
- // vorlaeufig
- nVisibleCount = 0;
- bVisPositionsValid = false;
+ // preliminary
+ m_nVisibleCount = 0;
+ m_bVisPositionsValid = false;
}
-void SvListView::ActionMoved( SvTreeListEntry* /* pEntry */ ,
+void SvListView::Impl::ActionMoved( SvTreeListEntry* /* pEntry */ ,
SvTreeListEntry* /* pTargetPrnt */ ,
sal_uLong /* nChildPos */ )
{
- nVisibleCount = 0;
- bVisPositionsValid = false;
+ m_nVisibleCount = 0;
+ m_bVisPositionsValid = false;
}
-void SvListView::ActionInserted( SvTreeListEntry* pEntry )
+void SvListView::Impl::ActionInserted( SvTreeListEntry* pEntry )
{
DBG_ASSERT(pEntry,"Insert:No Entry");
- SvViewDataEntry* pData = CreateViewData( pEntry );
- InitViewData( pData, pEntry );
+ SvViewDataEntry* pData = m_rThis.CreateViewData( pEntry );
+ m_rThis.InitViewData( pData, pEntry );
#ifdef DBG_UTIL
std::pair<SvDataTable::iterator, bool> aSuccess =
#endif
- maDataTable.insert( pEntry, pData );
+ m_DataTable.insert( pEntry, pData );
DBG_ASSERT(aSuccess.second,"Entry already in View");
- if ( nVisibleCount && pModel->IsEntryVisible( this, pEntry ))
+ if (m_nVisibleCount && m_rThis.pModel->IsEntryVisible(&m_rThis, pEntry))
{
- nVisibleCount = 0;
- bVisPositionsValid = false;
+ m_nVisibleCount = 0;
+ m_bVisPositionsValid = false;
}
}
-void SvListView::ActionInsertedTree( SvTreeListEntry* pEntry )
+void SvListView::Impl::ActionInsertedTree( SvTreeListEntry* pEntry )
{
- if ( pModel->IsEntryVisible( this, pEntry ))
+ if (m_rThis.pModel->IsEntryVisible(&m_rThis, pEntry))
{
- nVisibleCount = 0;
- bVisPositionsValid = false;
+ m_nVisibleCount = 0;
+ m_bVisPositionsValid = false;
}
// iterate over entry and its children
SvTreeListEntry* pCurEntry = pEntry;
- sal_uInt16 nRefDepth = pModel->GetDepth( pCurEntry );
+ sal_uInt16 nRefDepth = m_rThis.pModel->GetDepth( pCurEntry );
while( pCurEntry )
{
- DBG_ASSERT(maDataTable.find(pCurEntry) != maDataTable.end(),"Entry already in Table");
- SvViewDataEntry* pViewData = CreateViewData( pCurEntry );
+ DBG_ASSERT(m_DataTable.find(pCurEntry) != m_DataTable.end(),"Entry already in Table");
+ SvViewDataEntry* pViewData = m_rThis.CreateViewData( pCurEntry );
DBG_ASSERT(pViewData,"No ViewData");
- InitViewData( pViewData, pEntry );
- maDataTable.insert( pCurEntry, pViewData );
- pCurEntry = pModel->Next( pCurEntry );
- if ( pCurEntry && pModel->GetDepth(pCurEntry) <= nRefDepth)
+ m_rThis.InitViewData( pViewData, pEntry );
+ m_DataTable.insert( pCurEntry, pViewData );
+ pCurEntry = m_rThis.pModel->Next( pCurEntry );
+ if ( pCurEntry && m_rThis.pModel->GetDepth(pCurEntry) <= nRefDepth)
pCurEntry = 0;
}
}
-void SvListView::RemoveViewData( SvTreeListEntry* pParent )
+void SvListView::Impl::RemoveViewData( SvTreeListEntry* pParent )
{
SvTreeListEntries::iterator it = pParent->maChildren.begin(), itEnd = pParent->maChildren.end();
for (; it != itEnd; ++it)
{
SvTreeListEntry& rEntry = *it;
- maDataTable.erase(&rEntry);
+ m_DataTable.erase(&rEntry);
if (rEntry.HasChildren())
RemoveViewData(&rEntry);
}
@@ -1348,44 +1387,44 @@ void SvListView::RemoveViewData( SvTreeListEntry* pParent )
-void SvListView::ActionRemoving( SvTreeListEntry* pEntry )
+void SvListView::Impl::ActionRemoving( SvTreeListEntry* pEntry )
{
DBG_ASSERT(pEntry,"Remove:No Entry");
- SvViewDataEntry* pViewData = maDataTable.find( pEntry )->second;
+ SvViewDataEntry* pViewData = m_DataTable.find( pEntry )->second;
sal_uLong nSelRemoved = 0;
if ( pViewData->IsSelected() )
- nSelRemoved = 1 + pModel->GetChildSelectionCount( this, pEntry );
- nSelectionCount -= nSelRemoved;
+ nSelRemoved = 1 + m_rThis.pModel->GetChildSelectionCount(&m_rThis, pEntry);
+ m_nSelectionCount -= nSelRemoved;
sal_uLong nVisibleRemoved = 0;
- if ( pModel->IsEntryVisible( this, pEntry ) )
- nVisibleRemoved = 1 + pModel->GetVisibleChildCount( this, pEntry );
- if( nVisibleCount )
+ if (m_rThis.pModel->IsEntryVisible(&m_rThis, pEntry))
+ nVisibleRemoved = 1 + m_rThis.pModel->GetVisibleChildCount(&m_rThis, pEntry);
+ if( m_nVisibleCount )
{
#ifdef DBG_UTIL
- if( nVisibleCount < nVisibleRemoved )
+ if (m_nVisibleCount < nVisibleRemoved)
{
OSL_FAIL("nVisibleRemoved bad");
}
#endif
- nVisibleCount -= nVisibleRemoved;
+ m_nVisibleCount -= nVisibleRemoved;
}
- bVisPositionsValid = false;
+ m_bVisPositionsValid = false;
- maDataTable.erase(pEntry);
+ m_DataTable.erase(pEntry);
RemoveViewData( pEntry );
SvTreeListEntry* pCurEntry = pEntry->pParent;
- if (pCurEntry && pCurEntry != pModel->pRootItem && pCurEntry->maChildren.size() == 1)
+ if (pCurEntry && pCurEntry != m_rThis.pModel->pRootItem && pCurEntry->maChildren.size() == 1)
{
- pViewData = maDataTable.find(pCurEntry)->second;
+ pViewData = m_DataTable.find(pCurEntry)->second;
pViewData->SetExpanded(false);
}
}
-void SvListView::ActionClear()
+void SvListView::Impl::ActionClear()
{
- Clear();
+ m_rThis.Clear();
}
void SvListView::ModelNotification( SvListAction nActionId, SvTreeListEntry* pEntry1,
@@ -1394,30 +1433,30 @@ void SvListView::ModelNotification( SvListAction nActionId, SvTreeListEntry* pEn
switch( nActionId )
{
case SvListAction::INSERTED:
- ActionInserted( pEntry1 );
+ m_pImpl->ActionInserted( pEntry1 );
ModelHasInserted( pEntry1 );
break;
case SvListAction::INSERTED_TREE:
- ActionInsertedTree( pEntry1 );
+ m_pImpl->ActionInsertedTree( pEntry1 );
ModelHasInsertedTree( pEntry1 );
break;
case SvListAction::REMOVING:
ModelIsRemoving( pEntry1 );
- ActionRemoving( pEntry1 );
+ m_pImpl->ActionRemoving( pEntry1 );
break;
case SvListAction::REMOVED:
ModelHasRemoved( pEntry1 );
break;
case SvListAction::MOVING:
ModelIsMoving( pEntry1, pEntry2, nPos );
- ActionMoving( pEntry1, pEntry2, nPos );
+ m_pImpl->ActionMoving( pEntry1, pEntry2, nPos );
break;
case SvListAction::MOVED:
- ActionMoved( pEntry1, pEntry2, nPos );
+ m_pImpl->ActionMoved( pEntry1, pEntry2, nPos );
ModelHasMoved( pEntry1 );
break;
case SvListAction::CLEARING:
- ActionClear();
+ m_pImpl->ActionClear();
ModelHasCleared(); // sic! for compatibility reasons!
break;
case SvListAction::CLEARED:
@@ -1427,14 +1466,14 @@ void SvListView::ModelNotification( SvListAction nActionId, SvTreeListEntry* pEn
ModelHasEntryInvalidated( pEntry1 );
break;
case SvListAction::RESORTED:
- bVisPositionsValid = false;
+ m_pImpl->m_bVisPositionsValid = false;
break;
case SvListAction::RESORTING:
break;
case SvListAction::REVERSING:
break;
case SvListAction::REVERSED:
- bVisPositionsValid = false;
+ m_pImpl->m_bVisPositionsValid = false;
break;
default:
OSL_FAIL("unknown ActionId");
@@ -1448,9 +1487,9 @@ void SvListView::InitViewData( SvViewDataEntry*, SvTreeListEntry* )
bool SvListView::IsExpanded( SvTreeListEntry* pEntry ) const
{
DBG_ASSERT(pEntry,"IsExpanded:No Entry");
- SvDataTable::const_iterator itr = maDataTable.find(pEntry);
- DBG_ASSERT(itr != maDataTable.end(),"Entry not in Table");
- if (itr == maDataTable.end())
+ SvDataTable::const_iterator itr = m_pImpl->m_DataTable.find(pEntry);
+ DBG_ASSERT(itr != m_pImpl->m_DataTable.end(),"Entry not in Table");
+ if (itr == m_pImpl->m_DataTable.end())
return false;
return itr->second->IsExpanded();
}
@@ -1458,8 +1497,8 @@ bool SvListView::IsExpanded( SvTreeListEntry* pEntry ) const
bool SvListView::IsSelected( SvTreeListEntry* pEntry ) const
{
DBG_ASSERT(pEntry,"IsExpanded:No Entry");
- SvDataTable::const_iterator itr = maDataTable.find(pEntry );
- if (itr == maDataTable.end())
+ SvDataTable::const_iterator itr = m_pImpl->m_DataTable.find(pEntry);
+ if (itr == m_pImpl->m_DataTable.end())
return false;
return itr->second->IsSelected();
}
@@ -1467,23 +1506,24 @@ bool SvListView::IsSelected( SvTreeListEntry* pEntry ) const
void SvListView::SetEntryFocus( SvTreeListEntry* pEntry, bool bFocus )
{
DBG_ASSERT(pEntry,"SetEntryFocus:No Entry");
- SvDataTable::iterator itr = maDataTable.find(pEntry);
- DBG_ASSERT(itr != maDataTable.end(),"Entry not in Table");
+ SvDataTable::iterator itr = m_pImpl->m_DataTable.find(pEntry);
+ DBG_ASSERT(itr != m_pImpl->m_DataTable.end(),"Entry not in Table");
itr->second->SetFocus(bFocus);
}
const SvViewDataEntry* SvListView::GetViewData( const SvTreeListEntry* pEntry ) const
{
- SvDataTable::const_iterator itr = maDataTable.find( const_cast<SvTreeListEntry*>(pEntry) );
- if (itr == maDataTable.end())
+ SvDataTable::const_iterator itr =
+ m_pImpl->m_DataTable.find(const_cast<SvTreeListEntry*>(pEntry));
+ if (itr == m_pImpl->m_DataTable.end())
return NULL;
return itr->second;
}
SvViewDataEntry* SvListView::GetViewData( SvTreeListEntry* pEntry )
{
- SvDataTable::iterator itr = maDataTable.find( pEntry );
- DBG_ASSERT(itr != maDataTable.end(),"Entry not in model or wrong view");
+ SvDataTable::iterator itr = m_pImpl->m_DataTable.find( pEntry );
+ DBG_ASSERT(itr != m_pImpl->m_DataTable.end(),"Entry not in model or wrong view");
return itr->second;
}
commit fafd0b61cc8e3476c0eaaccf42a5ce2e72954295
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jul 10 21:25:30 2015 +0200
extensions: convert boost::bind
Change-Id: I7922140eaaeb428da0f268cac41f7a227693c25a
diff --git a/extensions/source/logging/logger.cxx b/extensions/source/logging/logger.cxx
index d185ee6..71330c0 100644
--- a/extensions/source/logging/logger.cxx
+++ b/extensions/source/logging/logger.cxx
@@ -29,7 +29,6 @@
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/logging/XLoggerPool.hpp>
-#include <boost/bind.hpp>
#include <cppuhelper/basemutex.hxx>
#include <cppuhelper/interfacecontainer.hxx>
#include <cppuhelper/implbase2.hxx>
@@ -175,9 +174,9 @@ namespace logging
return;
m_aHandlers.forEach< XLogHandler >(
- ::boost::bind( &XLogHandler::publish, _1, ::boost::cref( _rRecord ) ) );
+ [&] (Reference<XLogHandler> const& rxListener) { rxListener->publish(_rRecord); } );
m_aHandlers.forEach< XLogHandler >(
- ::boost::bind( &XLogHandler::flush, _1 ) );
+ [] (Reference<XLogHandler> const& rxListener) { rxListener->flush(); } );
}
OUString SAL_CALL EventLogger::getName() throw (RuntimeException, std::exception)
commit ad94eaf540260296e8aee0b5bff91d22a5fe6b78
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jul 10 19:25:24 2015 +0200
vcl: avoid a boost::ptr_map in VclBuilder
This eliminates 638MB of preprocessor input.
Change-Id: Ife434310ec08e408e1f8aaf52d6298f8caa209af
diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx
index b0d8ace..baf523d 100644
--- a/include/vcl/builder.hxx
+++ b/include/vcl/builder.hxx
@@ -18,6 +18,8 @@
#include <vcl/dllapi.h>
#include <vcl/window.hxx>
#include <vcl/vclptr.hxx>
+
+#include <memory>
#include <map>
#include <set>
#include <stack>
@@ -26,7 +28,6 @@
# //some problem with MacOSX and a check define
# undef check
#endif
-#include <boost/ptr_container/ptr_map.hpp>
#include <com/sun/star/frame/XFrame.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
@@ -124,7 +125,7 @@ private:
VclBuilder(const VclBuilder&) SAL_DELETED_FUNCTION;
VclBuilder& operator=(const VclBuilder&) SAL_DELETED_FUNCTION;
- typedef boost::ptr_map<OUString, osl::Module> ModuleMap;
+ typedef std::map<OUString, std::unique_ptr<osl::Module>> ModuleMap;
//We store these until the builder is deleted, that way we can use the
//ui-previewer on custom widgets and guarantee the modules they are from
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index dba80c0..9a5a5b5 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -1751,7 +1751,7 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString &
#else
pModule->loadRelative(&thisModule, sModule);
#endif
- aI = m_aModuleMap.insert(sModule, pModule).first;
+ aI = m_aModuleMap.insert(std::make_pair(sModule, std::unique_ptr<osl::Module>(pModule))).first;
}
customMakeWidget pFunction = reinterpret_cast<customMakeWidget>(aI->second->getFunctionSymbol(sFunction));
#else
commit 72c11ce76abebdbe88a7be793dbf690c54b30500
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jul 10 18:55:12 2015 +0200
remove unused ptr_container includes
Change-Id: I55e15669520075f74c3fc730f8c6549d19de5ab3
diff --git a/include/sfx2/infobar.hxx b/include/sfx2/infobar.hxx
index 1d3adc6..f423190 100644
--- a/include/sfx2/infobar.hxx
+++ b/include/sfx2/infobar.hxx
@@ -17,8 +17,6 @@
#include <sfx2/dllapi.h>
#include <sfx2/childwin.hxx>
-#include <boost/ptr_container/ptr_vector.hpp>
-
/** SfxChildWindow for positioning the InfoBar in the view.
*/
class SFX2_DLLPUBLIC SfxInfoBarContainerChild : public SfxChildWindow
diff --git a/include/vcl/opengl/OpenGLContext.hxx b/include/vcl/opengl/OpenGLContext.hxx
index 2676905..94ba1ed 100644
--- a/include/vcl/opengl/OpenGLContext.hxx
+++ b/include/vcl/opengl/OpenGLContext.hxx
@@ -52,11 +52,11 @@ class NSOpenGLView;
#endif
#include <vcl/dllapi.h>
-#include <boost/ptr_container/ptr_map.hpp>
#include <vcl/window.hxx>
#include <tools/gen.hxx>
#include <vcl/syschild.hxx>
+#include <map>
#include <set>
class OpenGLFramebuffer;
commit ac010423b6e9005896ca73a55a7d65dd698767d3
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jul 10 18:44:56 2015 +0200
sw: clean up SwDoc::maPatternNms nonsense
Change-Id: I0a166d1b58b23cac96ae27d446d6d8ed2442df8e
diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
index b5461ba..706f79d 100644
--- a/sw/inc/doc.hxx
+++ b/sw/inc/doc.hxx
@@ -263,7 +263,7 @@ class SW_DLLPUBLIC SwDoc :
Idle maOLEModifiedIdle; //< Timer for update modified OLE-Objects
SwDBData maDBData; //< database descriptor
OUString msTOIAutoMarkURL; //< URL of table of index AutoMark file
- boost::ptr_vector< boost::nullable<OUString> > maPatternNms; // Array for names of document-templates
+ std::vector<OUString> m_PatternNames; //< Array for names of document-templates
com::sun::star::uno::Reference<com::sun::star::container::XNameContainer>
mxXForms; //< container with XForms models
mutable com::sun::star::uno::Reference< com::sun::star::linguistic2::XProofreadingIterator > m_xGCIterator;
@@ -907,17 +907,10 @@ public:
static bool IsUsed( const SwNumRule& );
// Set name of newly loaded document template.
- sal_uInt16 SetDocPattern( const OUString& rPatternName );
+ size_t SetDocPattern(const OUString& rPatternName);
// @return name of document template. Can be 0!
- const OUString* GetDocPattern( sal_uInt16 nPos ) const
- {
- if(nPos >= maPatternNms.size())
- return NULL;
- if(boost::is_null(maPatternNms.begin() + nPos))
- return NULL;
- return &(maPatternNms[nPos]);
- }
+ const OUString* GetDocPattern(size_t nPos) const;
// Query / connect current document with glossary document.
void SetGlossaryDoc( SwDoc* pDoc ) { mpGlossaryDoc = pDoc; }
diff --git a/sw/source/core/doc/poolfmt.cxx b/sw/source/core/doc/poolfmt.cxx
index f290b05..3244fb7 100644
--- a/sw/source/core/doc/poolfmt.cxx
+++ b/sw/source/core/doc/poolfmt.cxx
@@ -131,28 +131,31 @@ bool SwDoc::IsUsed( const SwNumRule& rRule )
return bUsed;
}
+const OUString* SwDoc::GetDocPattern(size_t const nPos) const
+{
+ if (nPos >= m_PatternNames.size())
+ return nullptr;
+ return &m_PatternNames[nPos];
+}
+
// Look for the style name's position. If it doesn't exist,
// insert a anew
-sal_uInt16 SwDoc::SetDocPattern( const OUString& rPatternName )
+size_t SwDoc::SetDocPattern(const OUString& rPatternName)
{
OSL_ENSURE( !rPatternName.isEmpty(), "no Document style name" );
- size_t nNewPos = maPatternNms.size();
- for(size_t n = 0; n < maPatternNms.size(); ++n)
- if( boost::is_null(maPatternNms.begin() + n) )
- {
- if( nNewPos == maPatternNms.size() )
- nNewPos = n;
- }
- else if( rPatternName == maPatternNms[n] )
- return n;
-
- if( nNewPos < maPatternNms.size() )
- maPatternNms.erase(maPatternNms.begin() + nNewPos); // Free space again
-
- maPatternNms.insert(maPatternNms.begin() + nNewPos, new OUString(rPatternName));
- getIDocumentState().SetModified();
- return nNewPos;
+ auto const iter(
+ std::find(m_PatternNames.begin(), m_PatternNames.end(), rPatternName));
+ if (iter != m_PatternNames.end())
+ {
+ return std::distance(m_PatternNames.begin(), iter);
+ }
+ else
+ {
+ m_PatternNames.push_back(rPatternName);
+ getIDocumentState().SetModified();
+ return m_PatternNames.size() - 1;
+ }
}
sal_uInt16 GetPoolParent( sal_uInt16 nId )
commit 20bd0a2ee9ed899ea542c2de08efda243dbef446
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jul 10 14:22:25 2015 +0200
vcl: remove boost/signal2/signal.hpp from header
The most relevant signal member function appears to be connect(),
so let's create a wrapper function for that now, without the more
esoteric ordering features for now.
Move the signal member itself to a new pImpl.
The benefits are worth it: preprocessor input reduced by 2.8GB,
that's 9% of the total (excluding system headers which are not counted
because they don't generate dependencies).
Change-Id: I0aaeda51a5630a348bb12c81a83f67afbd508a14
diff --git a/cui/source/options/optpath.cxx b/cui/source/options/optpath.cxx
index 45c8bbb..f44456c 100644
--- a/cui/source/options/optpath.cxx
+++ b/cui/source/options/optpath.cxx
@@ -51,6 +51,8 @@
#include "optHeaderTabListbox.hxx"
#include <vcl/help.hxx>
+#include <boost/scoped_ptr.hpp>
+
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::ui::dialogs;
diff --git a/cui/source/options/tsaurls.cxx b/cui/source/options/tsaurls.cxx
index 142ea65..a886975 100644
--- a/cui/source/options/tsaurls.cxx
+++ b/cui/source/options/tsaurls.cxx
@@ -15,6 +15,8 @@
#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
+#include <boost/scoped_ptr.hpp>
+
using namespace ::com::sun::star;
TSAURLsDialog::TSAURLsDialog(vcl::Window* pParent)
diff --git a/filter/source/svg/svgfilter.cxx b/filter/source/svg/svgfilter.cxx
index e44c37d..b3a56df 100644
--- a/filter/source/svg/svgfilter.cxx
+++ b/filter/source/svg/svgfilter.cxx
@@ -50,6 +50,8 @@
#include "svgfilter.hxx"
#include "svgwriter.hxx"
+#include <boost/scoped_ptr.hpp>
+
using namespace ::com::sun::star;
namespace
diff --git a/filter/source/svg/svgimport.cxx b/filter/source/svg/svgimport.cxx
index b803b6d..1d3daaf 100644
--- a/filter/source/svg/svgimport.cxx
+++ b/filter/source/svg/svgimport.cxx
@@ -43,6 +43,8 @@
#include <unotools/mediadescriptor.hxx>
#include <tools/zcodec.hxx>
+#include <boost/scoped_ptr.hpp>
+
using namespace ::com::sun::star;
using namespace ::svgi;
diff --git a/include/svtools/DocumentInfoPreview.hxx b/include/svtools/DocumentInfoPreview.hxx
index 9eba310..6cd4fc8 100644
--- a/include/svtools/DocumentInfoPreview.hxx
+++ b/include/svtools/DocumentInfoPreview.hxx
@@ -29,6 +29,8 @@
#include <tools/wintypes.hxx>
#include <vcl/window.hxx>
+#include <boost/scoped_ptr.hpp>
+
class SvtDocInfoTable_Impl;
namespace com { namespace sun { namespace star {
diff --git a/include/vcl/edit.hxx b/include/vcl/edit.hxx
index c134780..a245985 100644
--- a/include/vcl/edit.hxx
+++ b/include/vcl/edit.hxx
@@ -20,17 +20,23 @@
#ifndef INCLUDED_VCL_EDIT_HXX
#define INCLUDED_VCL_EDIT_HXX
-#include <boost/signals2/signal.hpp>
+#include <vcl/ctrl.hxx>
+
+#include <functional>
+#include <memory>
+
#include <tools/solar.h>
#include <vcl/dllapi.h>
#include <vcl/timer.hxx>
#include <vcl/idle.hxx>
-#include <vcl/ctrl.hxx>
#include <vcl/menu.hxx>
#include <vcl/dndhelp.hxx>
#include <vcl/vclptr.hxx>
#include <com/sun/star/uno/Reference.h>
+// forward declare signals stuff - those headers are staggeringly expensive
+namespace boost { namespace signals2 { class connection; } }
+
namespace com {
namespace sun {
namespace star {
@@ -68,6 +74,9 @@ enum AutocompleteAction{ AUTOCOMPLETE_KEYINPUT, AUTOCOMPLETE_TABFORWARD, AUTOCOM
class VCL_DLLPUBLIC Edit : public Control, public vcl::unohelper::DragAndDropClient
{
private:
+ struct Impl;
+ ::std::unique_ptr<Impl> m_pImpl;
+
VclPtr<Edit> mpSubEdit;
Timer* mpUpdateDataTimer;
TextFilter* mpFilterText;
@@ -244,7 +253,8 @@ public:
void SetSubEdit( Edit* pEdit );
Edit* GetSubEdit() const { return mpSubEdit; }
- boost::signals2::signal< void ( Edit* ) > autocompleteSignal;
+ void SignalConnectAutocomplete(::boost::signals2::connection * pConnection,
+ ::std::function<void (Edit *)>);
AutocompleteAction GetAutocompleteAction() const { return meAutocompleteAction; }
virtual Size CalcMinimumSize() const;
diff --git a/sd/source/filter/ppt/pptinanimations.cxx b/sd/source/filter/ppt/pptinanimations.cxx
index d5ed372..f1e8b22 100644
--- a/sd/source/filter/ppt/pptinanimations.cxx
+++ b/sd/source/filter/ppt/pptinanimations.cxx
@@ -65,6 +65,9 @@
#include <pptatom.hxx>
#include "pptin.hxx"
#include "randomnode.hxx"
+
+#include <boost/scoped_ptr.hpp>
+
#include <algorithm>
using ::std::map;
diff --git a/sd/source/ui/func/fuoltext.cxx b/sd/source/ui/func/fuoltext.cxx
index 79c13a1..b7fbe74 100644
--- a/sd/source/ui/func/fuoltext.cxx
+++ b/sd/source/ui/func/fuoltext.cxx
@@ -35,6 +35,8 @@
#include "ViewShell.hxx"
#include "OutlineViewShell.hxx"
+#include <boost/scoped_ptr.hpp>
+
#include <stdio.h>
namespace sd {
diff --git a/sd/source/ui/slidesorter/cache/SlsRequestQueue.hxx b/sd/source/ui/slidesorter/cache/SlsRequestQueue.hxx
index 5bec93d..21b47c2 100644
--- a/sd/source/ui/slidesorter/cache/SlsRequestQueue.hxx
+++ b/sd/source/ui/slidesorter/cache/SlsRequestQueue.hxx
@@ -27,6 +27,9 @@
#include <osl/mutex.hxx>
#include <svx/sdrpageuser.hxx>
+#include <boost/scoped_ptr.hpp>
+
+
namespace sd { namespace slidesorter { namespace cache {
class RequestData;
diff --git a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
index 316189f..1aaae26 100644
--- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
+++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
@@ -83,6 +83,8 @@
#include <com/sun/star/drawing/XDrawPages.hpp>
#include <com/sun/star/accessibility/AccessibleEventId.hpp>
+#include <boost/scoped_ptr.hpp>
+
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::sd::slidesorter::model;
diff --git a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
index 62818dc..6923b11 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
@@ -30,6 +30,8 @@
#include <tools/link.hxx>
#include <tools/gen.hxx>
+#include <boost/scoped_ptr.hpp>
+
namespace sd { namespace slidesorter {
class SlideSorter;
} }
diff --git a/sd/source/ui/tools/PreviewRenderer.cxx b/sd/source/ui/tools/PreviewRenderer.cxx
index 6603263..4cf2694 100644
--- a/sd/source/ui/tools/PreviewRenderer.cxx
+++ b/sd/source/ui/tools/PreviewRenderer.cxx
@@ -36,6 +36,8 @@
#include <svx/sdr/contact/viewobjectcontact.hxx>
#include <svx/sdr/contact/viewcontact.hxx>
+#include <boost/scoped_ptr.hpp>
+
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
diff --git a/sfx2/source/dialog/templdlg.cxx b/sfx2/source/dialog/templdlg.cxx
index d4e01ca..5b91be9 100644
--- a/sfx2/source/dialog/templdlg.cxx
+++ b/sfx2/source/dialog/templdlg.cxx
@@ -18,6 +18,7 @@
*/
#include <boost/noncopyable.hpp>
+#include <boost/scoped_ptr.hpp>
#include <vcl/menu.hxx>
#include <vcl/settings.hxx>
diff --git a/sfx2/source/doc/graphhelp.cxx b/sfx2/source/doc/graphhelp.cxx
index ca19d1b..1167db3 100644
--- a/sfx2/source/doc/graphhelp.cxx
+++ b/sfx2/source/doc/graphhelp.cxx
@@ -53,6 +53,8 @@
#include "graphhelp.hxx"
#include "doc.hrc"
+#include <boost/scoped_ptr.hpp>
+
using namespace css;
SvMemoryStream* GraphicHelper::getFormatStrFromGDI_Impl( const GDIMetaFile* pGDIMeta, ConvertDataFormat nFormat )
diff --git a/svtools/source/control/inettbc.cxx b/svtools/source/control/inettbc.cxx
index 4f34198..7579687 100644
--- a/svtools/source/control/inettbc.cxx
+++ b/svtools/source/control/inettbc.cxx
@@ -893,7 +893,8 @@ void SvtURLBox::Init(bool bSetDefaultHelpID)
SetText( OUString() );
- GetSubEdit()->autocompleteSignal.connect( boost::bind( &SvtURLBox::AutoCompleteHandler, this, _1 ) );
+ GetSubEdit()->SignalConnectAutocomplete(nullptr,
+ [this] (Edit *const pEdit) { this->AutoCompleteHandler(pEdit); } );
UpdatePicklistForSmartProtocol_Impl();
EnableAutoSize(GetStyle() & WB_AUTOSIZE);
diff --git a/svtools/source/control/ruler.cxx b/svtools/source/control/ruler.cxx
index 4595b42..0d6c6ab 100644
--- a/svtools/source/control/ruler.cxx
+++ b/svtools/source/control/ruler.cxx
@@ -29,6 +29,8 @@
#include <svtools/svtools.hrc>
#include <svtools/colorcfg.hxx>
+#include <boost/scoped_ptr.hpp>
+
#include <vector>
using namespace std;
diff --git a/svx/source/fmcomp/gridctrl.cxx b/svx/source/fmcomp/gridctrl.cxx
index cdb3302..3607211 100644
--- a/svx/source/fmcomp/gridctrl.cxx
+++ b/svx/source/fmcomp/gridctrl.cxx
@@ -56,6 +56,8 @@
#include <comphelper/property.hxx>
+#include <boost/scoped_ptr.hpp>
+
#include <algorithm>
#include <cstdlib>
#include <map>
diff --git a/svx/source/form/fmtextcontrolshell.cxx b/svx/source/form/fmtextcontrolshell.cxx
index fab7097..62a07c8 100644
--- a/svx/source/form/fmtextcontrolshell.cxx
+++ b/svx/source/form/fmtextcontrolshell.cxx
@@ -63,6 +63,8 @@
#include <vcl/outdev.hxx>
#include <osl/mutex.hxx>
+#include <boost/scoped_ptr.hpp>
+
namespace svx
{
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index f577522..dc7f4f6 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -60,6 +60,9 @@
#include <sdr/overlay/overlaytools.hxx>
#include <svx/sdr/table/tablecontroller.hxx>
#include <drawinglayer/processor2d/processor2dtools.hxx>
+
+#include <boost/scoped_ptr.hpp>
+
#include <memory>
diff --git a/sw/source/core/text/pormulti.cxx b/sw/source/core/text/pormulti.cxx
index ca60bae..d66702e 100644
--- a/sw/source/core/text/pormulti.cxx
+++ b/sw/source/core/text/pormulti.cxx
@@ -50,6 +50,8 @@
#include <swtable.hxx>
#include <fmtfsize.hxx>
+#include <boost/scoped_ptr.hpp>
+
using namespace ::com::sun::star;
// A SwMultiPortion is not a simple portion,
diff --git a/sw/source/filter/ww8/docxtablestyleexport.cxx b/sw/source/filter/ww8/docxtablestyleexport.cxx
index 60510da..1142f35 100644
--- a/sw/source/filter/ww8/docxtablestyleexport.cxx
+++ b/sw/source/filter/ww8/docxtablestyleexport.cxx
@@ -15,6 +15,8 @@
#include <comphelper/sequenceashashmap.hxx>
#include <o3tl/make_unique.hxx>
+#include <boost/optional.hpp>
+
using namespace com::sun::star;
using namespace oox;
diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx
index 15a3c09..9249acb 100644
--- a/vcl/source/control/combobox.cxx
+++ b/vcl/source/control/combobox.cxx
@@ -284,8 +284,12 @@ void ComboBox::EnableAutocomplete( bool bEnable, bool bMatchCase )
if ( bEnable )
{
if( !m_pImpl->m_AutocompleteConnection.connected())
- m_pImpl->m_AutocompleteConnection = m_pImpl->m_pSubEdit->autocompleteSignal.connect(
- boost::bind( &ComboBox::Impl::ImplAutocompleteHandler, m_pImpl.get(), _1 ) );
+ {
+ m_pImpl->m_pSubEdit->SignalConnectAutocomplete(
+ &m_pImpl->m_AutocompleteConnection,
+ [this] (Edit *const pEdit) { m_pImpl->ImplAutocompleteHandler(pEdit); }
+ );
+ }
}
else
m_pImpl->m_AutocompleteConnection.disconnect();
diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx
index ce1d9bb..43ba36c 100644
--- a/vcl/source/control/edit.cxx
+++ b/vcl/source/control/edit.cxx
@@ -65,6 +65,9 @@
#include <vcl/unohelp2.hxx>
#include <officecfg/Office/Common.hxx>
+
+#include <boost/signals2/signal.hpp>
+
#include <memory>
using namespace ::com::sun::star;
@@ -154,21 +157,29 @@ void Impl_IMEInfos::DestroyAttribs()
nLen = 0;
}
-Edit::Edit( WindowType nType ) :
- Control( nType )
+struct Edit::Impl
+{
+ boost::signals2::signal< void (Edit *) > m_AutocompleteSignal;
+};
+
+Edit::Edit( WindowType nType )
+ : Control( nType )
+ , m_pImpl(new Impl)
{
ImplInitEditData();
}
-Edit::Edit( vcl::Window* pParent, WinBits nStyle ) :
- Control( WINDOW_EDIT )
+Edit::Edit( vcl::Window* pParent, WinBits nStyle )
+ : Control( WINDOW_EDIT )
+ , m_pImpl(new Impl)
{
ImplInitEditData();
ImplInit( pParent, nStyle );
}
-Edit::Edit( vcl::Window* pParent, const ResId& rResId ) :
- Control( WINDOW_EDIT )
+Edit::Edit( vcl::Window* pParent, const ResId& rResId )
+ : Control( WINDOW_EDIT )
+ , m_pImpl(new Impl)
{
rResId.SetRT( RSC_EDIT );
WinBits nStyle = ImplInitRes( rResId );
@@ -1639,12 +1650,12 @@ bool Edit::ImplHandleKeyEvent( const KeyEvent& rKEvt )
ImplCopyToSelectionClipboard();
}
- if ( bGoEnd && !autocompleteSignal.empty() && !rKEvt.GetKeyCode().GetModifier() )
+ if (bGoEnd && !m_pImpl->m_AutocompleteSignal.empty() && !rKEvt.GetKeyCode().GetModifier())
{
if ( (maSelection.Min() == maSelection.Max()) && (maSelection.Min() == maText.getLength()) )
{
meAutocompleteAction = AUTOCOMPLETE_KEYINPUT;
- autocompleteSignal( this );
+ m_pImpl->m_AutocompleteSignal( this );
}
}
@@ -1739,12 +1750,12 @@ bool Edit::ImplHandleKeyEvent( const KeyEvent& rKEvt )
if ( !mbReadOnly )
{
ImplInsertText(OUString(rKEvt.GetCharCode()), 0, true);
- if ( !autocompleteSignal.empty() )
+ if (!m_pImpl->m_AutocompleteSignal.empty())
{
if ( (maSelection.Min() == maSelection.Max()) && (maSelection.Min() == maText.getLength()) )
{
meAutocompleteAction = AUTOCOMPLETE_KEYINPUT;
- autocompleteSignal( this );
+ m_pImpl->m_AutocompleteSignal( this );
}
}
}
@@ -2103,12 +2114,12 @@ void Edit::Command( const CommandEvent& rCEvt )
Invalidate();
// #i25161# call auto complete handler for ext text commit also
- if ( autocompleteSignal.empty() )
+ if (m_pImpl->m_AutocompleteSignal.empty())
{
if ( (maSelection.Min() == maSelection.Max()) && (maSelection.Min() == maText.getLength()) )
{
meAutocompleteAction = AUTOCOMPLETE_KEYINPUT;
- autocompleteSignal( this );
+ m_pImpl->m_AutocompleteSignal( this );
}
}
}
@@ -2720,7 +2731,7 @@ void Edit::SetSubEdit(Edit* pEdit)
mpSubEdit->mbIsSubEdit = true;
mpSubEdit->SetReadOnly(mbReadOnly);
- mpSubEdit->autocompleteSignal.connect(autocompleteSignal);
+ mpSubEdit->m_pImpl->m_AutocompleteSignal.connect(m_pImpl->m_AutocompleteSignal);
}
}
@@ -3047,4 +3058,14 @@ Selection Edit::GetSurroundingTextSelection() const
return GetSelection();
}
+void Edit::SignalConnectAutocomplete(
+ boost::signals2::connection *const pConnection,
+ std::function<void (Edit *)> slot)
+{
+ boost::signals2::connection const& rConnection(
+ m_pImpl->m_AutocompleteSignal.connect(slot));
+ if (pConnection)
+ *pConnection = rConnection;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/filter/wmf/wmf.cxx b/vcl/source/filter/wmf/wmf.cxx
index 21ab4a4..c566bc3 100644
--- a/vcl/source/filter/wmf/wmf.cxx
+++ b/vcl/source/filter/wmf/wmf.cxx
@@ -24,6 +24,8 @@
#include <vcl/gdimetafiletools.hxx>
#include <comphelper/scopeguard.hxx>
+#include <boost/bind.hpp>
+
bool ConvertWMFToGDIMetaFile( SvStream & rStreamWMF, GDIMetaFile & rGDIMetaFile, FilterConfigItem* pConfigItem, WMF_EXTERNALHEADER *pExtHeader )
{
sal_uInt32 nMetaType;
diff --git a/vcl/unx/generic/window/salframe.cxx b/vcl/unx/generic/window/salframe.cxx
index 4ce6f75..d11e520 100644
--- a/vcl/unx/generic/window/salframe.cxx
+++ b/vcl/unx/generic/window/salframe.cxx
@@ -70,6 +70,8 @@
#include "svids.hrc"
#include "impbmp.hxx"
+#include <boost/optional.hpp>
+
#include <algorithm>
#ifndef Button6
commit ece8699f8f22f6bae137c601bc29b83b75dc3bf3
Author: Michael Stahl <mstahl at redhat.com>
Date: Fri Jul 10 12:05:48 2015 +0200
vcl: pImplify ComboBox
The boost::signal stuff is quite heavy (33 kloc), so try to hide it
from the header.
Change-Id: I87826ccfd2a151aff274ffa6b7159a988f751808
diff --git a/include/vcl/combobox.hxx b/include/vcl/combobox.hxx
index 87e2b92..d0189d5 100644
--- a/include/vcl/combobox.hxx
+++ b/include/vcl/combobox.hxx
@@ -20,9 +20,7 @@
#ifndef INCLUDED_VCL_COMBOBOX_HXX
#define INCLUDED_VCL_COMBOBOX_HXX
-#include <boost/signals2/connection.hpp>
#include <vcl/dllapi.h>
-#include <vcl/ctrl.hxx>
#include <vcl/combobox.h>
#include <vcl/edit.hxx>
@@ -35,45 +33,8 @@ class ImplBtn;
class VCL_DLLPUBLIC ComboBox : public Edit
{
private:
- VclPtr<Edit> mpSubEdit;
- VclPtr<ImplListBox> mpImplLB;
- VclPtr<ImplBtn> mpBtn;
- VclPtr<ImplListBoxFloatingWindow> mpFloatWin;
- sal_uInt16 mnDDHeight;
- sal_Unicode mcMultiSep;
- bool mbDDAutoSize : 1;
- bool mbSyntheticModify : 1;
- bool mbMatchCase : 1;
- sal_Int32 m_nMaxWidthChars;
- Link<> maSelectHdl;
- Link<> maDoubleClickHdl;
- boost::signals2::scoped_connection mAutocompleteConnection;
-
- struct ComboBoxBounds
- {
- Point aSubEditPos;
- Size aSubEditSize;
-
- Point aButtonPos;
- Size aButtonSize;
- };
-
-private:
- SAL_DLLPRIVATE void ImplInitComboBoxData();
- SAL_DLLPRIVATE void ImplUpdateFloatSelection();
- SAL_DLLPRIVATE ComboBoxBounds calcComboBoxDropDownComponentBounds(
- const Size &rOutSize, const Size &rBorderOutSize) const;
-
- DECL_DLLPRIVATE_LINK( ImplSelectHdl, void* );
- DECL_DLLPRIVATE_LINK( ImplCancelHdl, void* );
- DECL_DLLPRIVATE_LINK( ImplDoubleClickHdl, void* );
- DECL_DLLPRIVATE_LINK( ImplPopupModeEndHdl, void* );
- DECL_DLLPRIVATE_LINK( ImplSelectionChangedHdl, void* );
- DECL_DLLPRIVATE_LINK( ImplListItemSelectHdl , void* );
-
- SAL_DLLPRIVATE void ImplClickButtonHandler( ImplBtn* );
- SAL_DLLPRIVATE void ImplUserDrawHandler( UserDrawEvent* );
- SAL_DLLPRIVATE void ImplAutocompleteHandler( Edit* );
+ struct Impl;
+ std::unique_ptr<Impl> m_pImpl;
protected:
using Window::ImplInit;
@@ -84,7 +45,7 @@ protected:
SAL_DLLPRIVATE long getMaxWidthScrollBarAndDownButton() const;
protected:
- bool IsDropDownBox() const { return mpFloatWin != nullptr; }
+ bool IsDropDownBox() const;
virtual void FillLayoutData() const SAL_OVERRIDE;
@@ -120,7 +81,7 @@ public:
sal_uInt16 GetDropDownLineCount() const;
void EnableAutoSize( bool bAuto );
- bool IsAutoSizeEnabled() const { return mbDDAutoSize; }
+ bool IsAutoSizeEnabled() const;
void EnableDDAutoWidth( bool b );
@@ -160,13 +121,13 @@ public:
void EnableMultiSelection( bool bMulti );
bool IsMultiSelectionEnabled() const;
- void SetMultiSelectionSeparator( sal_Unicode cSep ) { mcMultiSep = cSep; }
- sal_Unicode GetMultiSelectionSeparator() const { return mcMultiSep; }
+ void SetMultiSelectionSeparator( sal_Unicode cSep );
+ sal_Unicode GetMultiSelectionSeparator() const;
- void SetSelectHdl( const Link<>& rLink ) { maSelectHdl = rLink; }
- const Link<>& GetSelectHdl() const { return maSelectHdl; }
- void SetDoubleClickHdl( const Link<>& rLink ) { maDoubleClickHdl = rLink; }
- const Link<>& GetDoubleClickHdl() const { return maDoubleClickHdl; }
+ void SetSelectHdl(const Link<>& rLink);
+ const Link<>& GetSelectHdl() const;
+ void SetDoubleClickHdl(const Link<>& rLink);
+ const Link<>& GetDoubleClickHdl() const;
Size CalcMinimumSize() const SAL_OVERRIDE;
virtual Size GetOptimalSize() const SAL_OVERRIDE;
@@ -216,7 +177,7 @@ public:
using Control::GetIndexForPoint;
long GetIndexForPoint( const Point& rPoint, sal_Int32 & rPos ) const;
- sal_Int32 getMaxWidthChars() const { return m_nMaxWidthChars; }
+ sal_Int32 getMaxWidthChars() const;
void setMaxWidthChars(sal_Int32 nWidth);
virtual bool set_property(const OString &rKey, const OString &rValue) SAL_OVERRIDE;
diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx
index 4f41c31..15a3c09 100644
--- a/vcl/source/control/combobox.cxx
+++ b/vcl/source/control/combobox.cxx
@@ -17,7 +17,12 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <vcl/combobox.hxx>
+
#include <set>
+
+#include <boost/signals2/connection.hpp>
+
#include <comphelper/string.hxx>
#include <tools/debug.hxx>
#include <tools/rc.h>
@@ -25,13 +30,59 @@
#include <vcl/lstbox.h>
#include <vcl/button.hxx>
#include <vcl/event.hxx>
-#include <vcl/combobox.hxx>
#include <vcl/settings.hxx>
#include <svdata.hxx>
#include <ilstbox.hxx>
#include <controldata.hxx>
+
+struct ComboBoxBounds
+{
+ Point aSubEditPos;
+ Size aSubEditSize;
+
+ Point aButtonPos;
+ Size aButtonSize;
+};
+
+struct ComboBox::Impl
+{
+ ComboBox & m_rThis;
+ VclPtr<Edit> m_pSubEdit;
+ VclPtr<ImplListBox> m_pImplLB;
+ VclPtr<ImplBtn> m_pBtn;
+ VclPtr<ImplListBoxFloatingWindow> m_pFloatWin;
+ sal_uInt16 m_nDDHeight;
+ sal_Unicode m_cMultiSep;
+ bool m_isDDAutoSize : 1;
+ bool m_isSyntheticModify : 1;
+ bool m_isMatchCase : 1;
+ sal_Int32 m_nMaxWidthChars;
+ Link<> m_SelectHdl;
+ Link<> m_DoubleClickHdl;
+ boost::signals2::scoped_connection m_AutocompleteConnection;
+
+ Impl(ComboBox & rThis) : m_rThis(rThis) {}
+
+ void ImplInitComboBoxData();
+ void ImplUpdateFloatSelection();
+ ComboBoxBounds calcComboBoxDropDownComponentBounds(
+ const Size &rOutSize, const Size &rBorderOutSize) const;
+
+ DECL_DLLPRIVATE_LINK( ImplSelectHdl, void* );
+ DECL_DLLPRIVATE_LINK( ImplCancelHdl, void* );
+ DECL_DLLPRIVATE_LINK( ImplDoubleClickHdl, void* );
+ DECL_DLLPRIVATE_LINK( ImplPopupModeEndHdl, void* );
+ DECL_DLLPRIVATE_LINK( ImplSelectionChangedHdl, void* );
+ DECL_DLLPRIVATE_LINK( ImplListItemSelectHdl , void* );
+
+ void ImplClickButtonHandler( ImplBtn* );
+ void ImplUserDrawHandler( UserDrawEvent* );
+ void ImplAutocompleteHandler( Edit* );
+};
+
+
static void lcl_GetSelectedEntries( ::std::set< sal_Int32 >& rSelectedPos, const OUString& rText, sal_Unicode cTokenSep, const ImplEntryList* pEntryList )
{
for (sal_Int32 n = comphelper::string::getTokenCount(rText, cTokenSep); n;)
@@ -44,18 +95,20 @@ static void lcl_GetSelectedEntries( ::std::set< sal_Int32 >& rSelectedPos, const
}
}
-ComboBox::ComboBox( vcl::Window* pParent, WinBits nStyle ) :
- Edit( WINDOW_COMBOBOX )
+ComboBox::ComboBox(vcl::Window *const pParent, WinBits const nStyle)
+ : Edit( WINDOW_COMBOBOX )
+ , m_pImpl(new Impl(*this))
{
- ImplInitComboBoxData();
+ m_pImpl->ImplInitComboBoxData();
ImplInit( pParent, nStyle );
SetWidthInChars(-1);
}
-ComboBox::ComboBox( vcl::Window* pParent, const ResId& rResId ) :
- Edit( WINDOW_COMBOBOX )
+ComboBox::ComboBox(vcl::Window *const pParent, const ResId& rResId)
+ : Edit( WINDOW_COMBOBOX )
+ , m_pImpl(new Impl(*this))
{
- ImplInitComboBoxData();
+ m_pImpl->ImplInitComboBoxData();
rResId.SetRT( RSC_COMBOBOX );
WinBits nStyle = ImplInitRes( rResId );
ImplInit( pParent, nStyle );
@@ -73,29 +126,29 @@ ComboBox::~ComboBox()
void ComboBox::dispose()
{
- mpSubEdit.disposeAndClear();
+ m_pImpl->m_pSubEdit.disposeAndClear();
- VclPtr< ImplListBox > pImplLB = mpImplLB;
- mpImplLB.clear();
+ VclPtr< ImplListBox > pImplLB = m_pImpl->m_pImplLB;
+ m_pImpl->m_pImplLB.clear();
pImplLB.disposeAndClear();
- mpFloatWin.disposeAndClear();
- mpBtn.disposeAndClear();
+ m_pImpl->m_pFloatWin.disposeAndClear();
+ m_pImpl->m_pBtn.disposeAndClear();
Edit::dispose();
}
-void ComboBox::ImplInitComboBoxData()
+void ComboBox::Impl::ImplInitComboBoxData()
{
- mpSubEdit.disposeAndClear();
- mpBtn = NULL;
- mpImplLB = NULL;
- mpFloatWin = NULL;
+ m_pSubEdit.disposeAndClear();
+ m_pBtn = nullptr;
+ m_pImplLB = nullptr;
+ m_pFloatWin = nullptr;
- mnDDHeight = 0;
- mbDDAutoSize = true;
- mbSyntheticModify = false;
- mbMatchCase = false;
- mcMultiSep = ';';
+ m_nDDHeight = 0;
+ m_isDDAutoSize = true;
+ m_isSyntheticModify = false;
+ m_isMatchCase = false;
+ m_cMultiSep = ';';
m_nMaxWidthChars = -1;
}
@@ -103,9 +156,9 @@ void ComboBox::ImplCalcEditHeight()
{
sal_Int32 nLeft, nTop, nRight, nBottom;
GetBorder( nLeft, nTop, nRight, nBottom );
- mnDDHeight = (sal_uInt16)(mpSubEdit->GetTextHeight() + nTop + nBottom + 4);
+ m_pImpl->m_nDDHeight = (sal_uInt16)(m_pImpl->m_pSubEdit->GetTextHeight() + nTop + nBottom + 4);
if ( !IsDropDownBox() )
- mnDDHeight += 4;
+ m_pImpl->m_nDDHeight += 4;
Rectangle aCtrlRegion( Point( 0, 0 ), Size( 10, 10 ) );
Rectangle aBoundRegion, aContentRegion;
@@ -118,8 +171,8 @@ void ComboBox::ImplCalcEditHeight()
aBoundRegion, aContentRegion ) )
{
const long nNCHeight = aBoundRegion.GetHeight();
- if( mnDDHeight < nNCHeight )
- mnDDHeight = sal::static_int_cast<sal_uInt16>( nNCHeight );
+ if (m_pImpl->m_nDDHeight < nNCHeight)
+ m_pImpl->m_nDDHeight = sal::static_int_cast<sal_uInt16>(nNCHeight);
}
}
@@ -147,14 +200,14 @@ void ComboBox::ImplInit( vcl::Window* pParent, WinBits nStyle )
WinBits nListStyle = nStyle;
if( nStyle & WB_DROPDOWN )
{
- mpFloatWin = VclPtr<ImplListBoxFloatingWindow>::Create( this );
- mpFloatWin->SetAutoWidth( true );
- mpFloatWin->SetPopupModeEndHdl( LINK( this, ComboBox, ImplPopupModeEndHdl ) );
+ m_pImpl->m_pFloatWin = VclPtr<ImplListBoxFloatingWindow>::Create( this );
+ m_pImpl->m_pFloatWin->SetAutoWidth( true );
+ m_pImpl->m_pFloatWin->SetPopupModeEndHdl( LINK(m_pImpl.get(), ComboBox::Impl, ImplPopupModeEndHdl) );
- mpBtn = VclPtr<ImplBtn>::Create( this, WB_NOLIGHTBORDER | WB_RECTSTYLE );
- ImplInitDropDownButton( mpBtn );
- mpBtn->buttonDownSignal.connect( boost::bind( &ComboBox::ImplClickButtonHandler, this, _1 ));
- mpBtn->Show();
+ m_pImpl->m_pBtn = VclPtr<ImplBtn>::Create( this, WB_NOLIGHTBORDER | WB_RECTSTYLE );
+ ImplInitDropDownButton( m_pImpl->m_pBtn );
+ m_pImpl->m_pBtn->buttonDownSignal.connect( boost::bind( &ComboBox::Impl::ImplClickButtonHandler, m_pImpl.get(), _1 ));
+ m_pImpl->m_pBtn->Show();
nEditStyle |= WB_NOBORDER;
nListStyle &= ~WB_BORDER;
@@ -170,30 +223,30 @@ void ComboBox::ImplInit( vcl::Window* pParent, WinBits nStyle )
}
}
- mpSubEdit.set( VclPtr<Edit>::Create( this, nEditStyle ) );
- mpSubEdit->EnableRTL( false );
- SetSubEdit( mpSubEdit );
- mpSubEdit->SetPosPixel( Point() );
+ m_pImpl->m_pSubEdit.set( VclPtr<Edit>::Create( this, nEditStyle ) );
+ m_pImpl->m_pSubEdit->EnableRTL( false );
+ SetSubEdit( m_pImpl->m_pSubEdit );
+ m_pImpl->m_pSubEdit->SetPosPixel( Point() );
EnableAutocomplete( true );
- mpSubEdit->Show();
+ m_pImpl->m_pSubEdit->Show();
vcl::Window* pLBParent = this;
- if ( mpFloatWin )
- pLBParent = mpFloatWin;
- mpImplLB = VclPtr<ImplListBox>::Create( pLBParent, nListStyle|WB_SIMPLEMODE|WB_AUTOHSCROLL );
- mpImplLB->SetPosPixel( Point() );
- mpImplLB->SetSelectHdl( LINK( this, ComboBox, ImplSelectHdl ) );
- mpImplLB->SetCancelHdl( LINK( this, ComboBox, ImplCancelHdl ) );
- mpImplLB->SetDoubleClickHdl( LINK( this, ComboBox, ImplDoubleClickHdl ) );
- mpImplLB->userDrawSignal.connect( boost::bind( &ComboBox::ImplUserDrawHandler, this, _1 ) );
- mpImplLB->SetSelectionChangedHdl( LINK( this, ComboBox, ImplSelectionChangedHdl ) );
- mpImplLB->SetListItemSelectHdl( LINK( this, ComboBox, ImplListItemSelectHdl ) );
- mpImplLB->Show();
-
- if ( mpFloatWin )
- mpFloatWin->SetImplListBox( mpImplLB );
+ if (m_pImpl->m_pFloatWin)
+ pLBParent = m_pImpl->m_pFloatWin;
+ m_pImpl->m_pImplLB = VclPtr<ImplListBox>::Create( pLBParent, nListStyle|WB_SIMPLEMODE|WB_AUTOHSCROLL );
+ m_pImpl->m_pImplLB->SetPosPixel( Point() );
+ m_pImpl->m_pImplLB->SetSelectHdl( LINK(m_pImpl.get(), ComboBox::Impl, ImplSelectHdl) );
+ m_pImpl->m_pImplLB->SetCancelHdl( LINK(m_pImpl.get(), ComboBox::Impl, ImplCancelHdl) );
+ m_pImpl->m_pImplLB->SetDoubleClickHdl( LINK(m_pImpl.get(), ComboBox::Impl, ImplDoubleClickHdl) );
+ m_pImpl->m_pImplLB->userDrawSignal.connect( boost::bind( &ComboBox::Impl::ImplUserDrawHandler, m_pImpl.get(), _1 ) );
+ m_pImpl->m_pImplLB->SetSelectionChangedHdl( LINK(m_pImpl.get(), ComboBox::Impl, ImplSelectionChangedHdl) );
+ m_pImpl->m_pImplLB->SetListItemSelectHdl( LINK(m_pImpl.get(), ComboBox::Impl, ImplListItemSelectHdl) );
+ m_pImpl->m_pImplLB->Show();
+
+ if (m_pImpl->m_pFloatWin)
+ m_pImpl->m_pFloatWin->SetImplListBox( m_pImpl->m_pImplLB );
else
- mpImplLB->GetMainWindow()->AllowGrabFocus( true );
+ m_pImpl->m_pImplLB->GetMainWindow()->AllowGrabFocus( true );
ImplCalcEditHeight();
@@ -226,65 +279,66 @@ void ComboBox::ImplLoadRes( const ResId& rResId )
void ComboBox::EnableAutocomplete( bool bEnable, bool bMatchCase )
{
- mbMatchCase = bMatchCase;
+ m_pImpl->m_isMatchCase = bMatchCase;
if ( bEnable )
{
- if( !mAutocompleteConnection.connected())
- mAutocompleteConnection = mpSubEdit->autocompleteSignal.connect(
- boost::bind( &ComboBox::ImplAutocompleteHandler, this, _1 ) );
+ if( !m_pImpl->m_AutocompleteConnection.connected())
+ m_pImpl->m_AutocompleteConnection = m_pImpl->m_pSubEdit->autocompleteSignal.connect(
+ boost::bind( &ComboBox::Impl::ImplAutocompleteHandler, m_pImpl.get(), _1 ) );
}
else
- mAutocompleteConnection.disconnect();
+ m_pImpl->m_AutocompleteConnection.disconnect();
}
bool ComboBox::IsAutocompleteEnabled() const
{
- return mAutocompleteConnection.connected();
+ return m_pImpl->m_AutocompleteConnection.connected();
}
-void ComboBox::ImplClickButtonHandler( ImplBtn* )
+void ComboBox::Impl::ImplClickButtonHandler( ImplBtn* )
{
- CallEventListeners( VCLEVENT_DROPDOWN_PRE_OPEN );
- mpSubEdit->GrabFocus();
- if ( !mpImplLB->GetEntryList()->GetMRUCount() )
+ m_rThis.CallEventListeners( VCLEVENT_DROPDOWN_PRE_OPEN );
+ m_pSubEdit->GrabFocus();
+ if (!m_pImplLB->GetEntryList()->GetMRUCount())
ImplUpdateFloatSelection();
else
- mpImplLB->SelectEntry( 0 , true );
- mpBtn->SetPressed( true );
- SetSelection( Selection( 0, SELECTION_MAX ) );
- mpFloatWin->StartFloat( true );
- CallEventListeners( VCLEVENT_DROPDOWN_OPEN );
+ m_pImplLB->SelectEntry( 0 , true );
+ m_pBtn->SetPressed( true );
+ m_rThis.SetSelection( Selection( 0, SELECTION_MAX ) );
+ m_pFloatWin->StartFloat( true );
+ m_rThis.CallEventListeners( VCLEVENT_DROPDOWN_OPEN );
- ImplClearLayoutData();
- if( mpImplLB )
- mpImplLB->GetMainWindow()->ImplClearLayoutData();
+ m_rThis.ImplClearLayoutData();
+ if (m_pImplLB)
+ m_pImplLB->GetMainWindow()->ImplClearLayoutData();
}
-IMPL_LINK_NOARG(ComboBox, ImplPopupModeEndHdl)
+IMPL_LINK_NOARG(ComboBox::Impl, ImplPopupModeEndHdl)
{
- if( mpFloatWin->IsPopupModeCanceled() )
+ if (m_pFloatWin->IsPopupModeCanceled())
{
- if ( !mpImplLB->GetEntryList()->IsEntryPosSelected( mpFloatWin->GetPopupModeStartSaveSelection() ) )
+ if (!m_pImplLB->GetEntryList()->IsEntryPosSelected(
+ m_pFloatWin->GetPopupModeStartSaveSelection()))
{
- mpImplLB->SelectEntry( mpFloatWin->GetPopupModeStartSaveSelection(), true );
- bool bTravelSelect = mpImplLB->IsTravelSelect();
- mpImplLB->SetTravelSelect( true );
- Select();
- mpImplLB->SetTravelSelect( bTravelSelect );
+ m_pImplLB->SelectEntry(m_pFloatWin->GetPopupModeStartSaveSelection(), true);
+ bool bTravelSelect = m_pImplLB->IsTravelSelect();
+ m_pImplLB->SetTravelSelect( true );
+ m_rThis.Select();
+ m_pImplLB->SetTravelSelect( bTravelSelect );
}
}
- ImplClearLayoutData();
- if( mpImplLB )
- mpImplLB->GetMainWindow()->ImplClearLayoutData();
+ m_rThis.ImplClearLayoutData();
+ if (m_pImplLB)
+ m_pImplLB->GetMainWindow()->ImplClearLayoutData();
- mpBtn->SetPressed( false );
- CallEventListeners( VCLEVENT_DROPDOWN_CLOSE );
+ m_pBtn->SetPressed( false );
+ m_rThis.CallEventListeners( VCLEVENT_DROPDOWN_CLOSE );
return 0;
}
-void ComboBox::ImplAutocompleteHandler( Edit* pEdit )
+void ComboBox::Impl::ImplAutocompleteHandler( Edit* pEdit )
{
Selection aSel = pEdit->GetSelection();
AutocompleteAction eAction = pEdit->GetAutocompleteAction();
@@ -297,7 +351,7 @@ void ComboBox::ImplAutocompleteHandler( Edit* pEdit )
{
OUString aFullText = pEdit->GetText();
OUString aStartText = aFullText.copy( 0, (sal_Int32)aSel.Max() );
- sal_Int32 nStart = mpImplLB->GetCurrentPos();
+ sal_Int32 nStart = m_pImplLB->GetCurrentPos();
if ( nStart == LISTBOX_ENTRY_NOTFOUND )
nStart = 0;
@@ -310,62 +364,66 @@ void ComboBox::ImplAutocompleteHandler( Edit* pEdit )
bForward = false;
if (nStart)
nStart = nStart - 1;
- else if (mpImplLB->GetEntryList()->GetEntryCount())
- nStart = mpImplLB->GetEntryList()->GetEntryCount()-1;
+ else if (m_pImplLB->GetEntryList()->GetEntryCount())
+ nStart = m_pImplLB->GetEntryList()->GetEntryCount()-1;
}
sal_Int32 nPos = LISTBOX_ENTRY_NOTFOUND;
- if( ! mbMatchCase )
+ if (!m_isMatchCase)
{
// Try match case insensitive from current position
- nPos = mpImplLB->GetEntryList()->FindMatchingEntry( aStartText, nStart, bForward, true );
+ nPos = m_pImplLB->GetEntryList()->FindMatchingEntry( aStartText, nStart, bForward, true );
if ( nPos == LISTBOX_ENTRY_NOTFOUND )
// Try match case insensitive, but from start
- nPos = mpImplLB->GetEntryList()->FindMatchingEntry( aStartText, bForward ? 0 : (mpImplLB->GetEntryList()->GetEntryCount()-1), bForward, true );
+ nPos = m_pImplLB->GetEntryList()->FindMatchingEntry( aStartText,
+ bForward ? 0 : (m_pImplLB->GetEntryList()->GetEntryCount()-1),
+ bForward, true );
}
if ( nPos == LISTBOX_ENTRY_NOTFOUND )
// Try match full from current position
- nPos = mpImplLB->GetEntryList()->FindMatchingEntry( aStartText, nStart, bForward, false );
+ nPos = m_pImplLB->GetEntryList()->FindMatchingEntry( aStartText, nStart, bForward, false );
if ( nPos == LISTBOX_ENTRY_NOTFOUND )
// Match full, but from start
- nPos = mpImplLB->GetEntryList()->FindMatchingEntry( aStartText, bForward ? 0 : (mpImplLB->GetEntryList()->GetEntryCount()-1), bForward, false );
+ nPos = m_pImplLB->GetEntryList()->FindMatchingEntry( aStartText,
+ bForward ? 0 : (m_pImplLB->GetEntryList()->GetEntryCount()-1),
+ bForward, false );
if ( nPos != LISTBOX_ENTRY_NOTFOUND )
{
- OUString aText = mpImplLB->GetEntryList()->GetEntryText( nPos );
+ OUString aText = m_pImplLB->GetEntryList()->GetEntryText( nPos );
Selection aSelection( aText.getLength(), aStartText.getLength() );
pEdit->SetText( aText, aSelection );
}
}
}
-IMPL_LINK_NOARG(ComboBox, ImplSelectHdl)
+IMPL_LINK_NOARG(ComboBox::Impl, ImplSelectHdl)
{
- bool bPopup = IsInDropDown();
+ bool bPopup = m_rThis.IsInDropDown();
bool bCallSelect = false;
- if ( mpImplLB->IsSelectionChanged() || bPopup )
+ if (m_pImplLB->IsSelectionChanged() || bPopup)
{
OUString aText;
- if ( IsMultiSelectionEnabled() )
+ if (m_rThis.IsMultiSelectionEnabled())
{
- aText = mpSubEdit->GetText();
+ aText = m_pSubEdit->GetText();
// remove all entries to which there is an entry, but which is not selected
sal_Int32 nIndex = 0;
while ( nIndex >= 0 )
{
sal_Int32 nPrevIndex = nIndex;
- OUString aToken = aText.getToken( 0, mcMultiSep, nIndex );
+ OUString aToken = aText.getToken( 0, m_cMultiSep, nIndex );
sal_Int32 nTokenLen = aToken.getLength();
aToken = comphelper::string::strip(aToken, ' ');
- sal_Int32 nP = mpImplLB->GetEntryList()->FindEntry( aToken );
- if ( (nP != LISTBOX_ENTRY_NOTFOUND) && (!mpImplLB->GetEntryList()->IsEntryPosSelected( nP )) )
+ sal_Int32 nP = m_pImplLB->GetEntryList()->FindEntry( aToken );
+ if ((nP != LISTBOX_ENTRY_NOTFOUND) && (!m_pImplLB->GetEntryList()->IsEntryPosSelected(nP)))
{
aText = aText.replaceAt( nPrevIndex, nTokenLen, "" );
nIndex = nIndex - nTokenLen;
sal_Int32 nSepCount=0;
- if ( (nPrevIndex+nSepCount < aText.getLength()) && (aText[nPrevIndex+nSepCount] == mcMultiSep) )
+ if ((nPrevIndex+nSepCount < aText.getLength()) && (aText[nPrevIndex+nSepCount] == m_cMultiSep))
{
nIndex--;
++nSepCount;
@@ -377,87 +435,87 @@ IMPL_LINK_NOARG(ComboBox, ImplSelectHdl)
// attach missing entries
::std::set< sal_Int32 > aSelInText;
- lcl_GetSelectedEntries( aSelInText, aText, mcMultiSep, mpImplLB->GetEntryList() );
- sal_Int32 nSelectedEntries = mpImplLB->GetEntryList()->GetSelectEntryCount();
+ lcl_GetSelectedEntries( aSelInText, aText, m_cMultiSep, m_pImplLB->GetEntryList() );
+ sal_Int32 nSelectedEntries = m_pImplLB->GetEntryList()->GetSelectEntryCount();
for ( sal_Int32 n = 0; n < nSelectedEntries; n++ )
{
- sal_Int32 nP = mpImplLB->GetEntryList()->GetSelectEntryPos( n );
+ sal_Int32 nP = m_pImplLB->GetEntryList()->GetSelectEntryPos( n );
if ( !aSelInText.count( nP ) )
{
- if ( !aText.isEmpty() && (aText[ aText.getLength()-1 ] != mcMultiSep) )
- aText += OUString(mcMultiSep);
+ if (!aText.isEmpty() && (aText[aText.getLength()-1] != m_cMultiSep))
+ aText += OUString(m_cMultiSep);
if ( !aText.isEmpty() )
aText += " "; // slightly loosen
- aText += mpImplLB->GetEntryList()->GetEntryText( nP );
- aText += OUString(mcMultiSep);
+ aText += m_pImplLB->GetEntryList()->GetEntryText( nP );
+ aText += OUString(m_cMultiSep);
}
}
- aText = comphelper::string::stripEnd( aText, mcMultiSep );
+ aText = comphelper::string::stripEnd( aText, m_cMultiSep );
}
else
{
- aText = mpImplLB->GetEntryList()->GetSelectEntry( 0 );
+ aText = m_pImplLB->GetEntryList()->GetSelectEntry( 0 );
}
- mpSubEdit->SetText( aText );
+ m_pSubEdit->SetText( aText );
Selection aNewSelection( 0, aText.getLength() );
- if ( IsMultiSelectionEnabled() )
+ if (m_rThis.IsMultiSelectionEnabled())
aNewSelection.Min() = aText.getLength();
- mpSubEdit->SetSelection( aNewSelection );
+ m_pSubEdit->SetSelection( aNewSelection );
bCallSelect = true;
}
// #84652# Call GrabFocus and EndPopupMode before calling Select/Modify, but after changing the text
- if ( bPopup && !mpImplLB->IsTravelSelect() &&
- ( !IsMultiSelectionEnabled() || !mpImplLB->GetSelectModifier() ) )
+ if (bPopup && !m_pImplLB->IsTravelSelect() &&
+ (!m_rThis.IsMultiSelectionEnabled() || !m_pImplLB->GetSelectModifier()))
{
- mpFloatWin->EndPopupMode();
- GrabFocus();
+ m_pFloatWin->EndPopupMode();
+ m_rThis.GrabFocus();
}
if ( bCallSelect )
{
- mpSubEdit->SetModifyFlag();
- mbSyntheticModify = true;
- Modify();
- mbSyntheticModify = false;
- Select();
+ m_pSubEdit->SetModifyFlag();
+ m_isSyntheticModify = true;
+ m_rThis.Modify();
+ m_isSyntheticModify = false;
+ m_rThis.Select();
}
return 0;
}
-IMPL_LINK_NOARG( ComboBox, ImplListItemSelectHdl )
+IMPL_LINK_NOARG( ComboBox::Impl, ImplListItemSelectHdl )
{
- CallEventListeners( VCLEVENT_DROPDOWN_SELECT );
+ m_rThis.CallEventListeners( VCLEVENT_DROPDOWN_SELECT );
return 1;
}
-IMPL_LINK_NOARG(ComboBox, ImplCancelHdl)
+IMPL_LINK_NOARG(ComboBox::Impl, ImplCancelHdl)
{
- if( IsInDropDown() )
- mpFloatWin->EndPopupMode();
+ if (m_rThis.IsInDropDown())
+ m_pFloatWin->EndPopupMode();
return 1;
}
-IMPL_LINK( ComboBox, ImplSelectionChangedHdl, void*, n )
+IMPL_LINK( ComboBox::Impl, ImplSelectionChangedHdl, void*, n )
{
- if ( !mpImplLB->IsTrackingSelect() )
+ if (!m_pImplLB->IsTrackingSelect())
{
sal_Int32 nChanged = (sal_Int32)reinterpret_cast<sal_uLong>(n);
- if ( !mpSubEdit->IsReadOnly() && mpImplLB->GetEntryList()->IsEntryPosSelected( nChanged ) )
- mpSubEdit->SetText( mpImplLB->GetEntryList()->GetEntryText( nChanged ) );
+ if (!m_pSubEdit->IsReadOnly() && m_pImplLB->GetEntryList()->IsEntryPosSelected(nChanged))
+ m_pSubEdit->SetText(m_pImplLB->GetEntryList()->GetEntryText(nChanged));
}
return 1;
}
-IMPL_LINK_NOARG(ComboBox, ImplDoubleClickHdl)
+IMPL_LINK_NOARG(ComboBox::Impl, ImplDoubleClickHdl)
{
- DoubleClick();
+ m_rThis.DoubleClick();
return 0;
}
@@ -465,19 +523,19 @@ void ComboBox::ToggleDropDown()
{
if( IsDropDownBox() )
{
- if( mpFloatWin->IsInPopupMode() )
- mpFloatWin->EndPopupMode();
+ if (m_pImpl->m_pFloatWin->IsInPopupMode())
+ m_pImpl->m_pFloatWin->EndPopupMode();
else
{
- mpSubEdit->GrabFocus();
- if ( !mpImplLB->GetEntryList()->GetMRUCount() )
- ImplUpdateFloatSelection();
+ m_pImpl->m_pSubEdit->GrabFocus();
+ if (!m_pImpl->m_pImplLB->GetEntryList()->GetMRUCount())
+ m_pImpl->ImplUpdateFloatSelection();
else
- mpImplLB->SelectEntry( 0 , true );
+ m_pImpl->m_pImplLB->SelectEntry( 0 , true );
CallEventListeners( VCLEVENT_DROPDOWN_PRE_OPEN );
- mpBtn->SetPressed( true );
+ m_pImpl->m_pBtn->SetPressed( true );
SetSelection( Selection( 0, SELECTION_MAX ) );
- mpFloatWin->StartFloat( true );
+ m_pImpl->m_pFloatWin->StartFloat( true );
CallEventListeners( VCLEVENT_DROPDOWN_OPEN );
}
}
@@ -485,41 +543,43 @@ void ComboBox::ToggleDropDown()
void ComboBox::Select()
{
- ImplCallEventListenersAndHandler( VCLEVENT_COMBOBOX_SELECT, maSelectHdl, this );
+ ImplCallEventListenersAndHandler( VCLEVENT_COMBOBOX_SELECT, m_pImpl->m_SelectHdl, this );
}
void ComboBox::DoubleClick()
{
- ImplCallEventListenersAndHandler( VCLEVENT_COMBOBOX_DOUBLECLICK, maDoubleClickHdl, this );
+ ImplCallEventListenersAndHandler( VCLEVENT_COMBOBOX_DOUBLECLICK, m_pImpl->m_DoubleClickHdl, this );
}
+bool ComboBox::IsAutoSizeEnabled() const { return m_pImpl->m_isDDAutoSize; }
+
void ComboBox::EnableAutoSize( bool bAuto )
{
- mbDDAutoSize = bAuto;
- if ( mpFloatWin )
+ m_pImpl->m_isDDAutoSize = bAuto;
+ if (m_pImpl->m_pFloatWin)
{
- if ( bAuto && !mpFloatWin->GetDropDownLineCount() )
+ if (bAuto && !m_pImpl->m_pFloatWin->GetDropDownLineCount())
{
// Adapt to GetListBoxMaximumLineCount here; was on fixed number of five before
AdaptDropDownLineCountToMaximum();
}
else if ( !bAuto )
{
- mpFloatWin->SetDropDownLineCount( 0 );
+ m_pImpl->m_pFloatWin->SetDropDownLineCount( 0 );
}
}
}
void ComboBox::EnableDDAutoWidth( bool b )
{
- if ( mpFloatWin )
- mpFloatWin->SetAutoWidth( b );
+ if (m_pImpl->m_pFloatWin)
+ m_pImpl->m_pFloatWin->SetAutoWidth( b );
}
void ComboBox::SetDropDownLineCount( sal_uInt16 nLines )
{
- if ( mpFloatWin )
- mpFloatWin->SetDropDownLineCount( nLines );
+ if (m_pImpl->m_pFloatWin)
+ m_pImpl->m_pFloatWin->SetDropDownLineCount( nLines );
}
void ComboBox::AdaptDropDownLineCountToMaximum()
@@ -531,8 +591,8 @@ void ComboBox::AdaptDropDownLineCountToMaximum()
sal_uInt16 ComboBox::GetDropDownLineCount() const
{
sal_uInt16 nLines = 0;
- if ( mpFloatWin )
- nLines = mpFloatWin->GetDropDownLineCount();
+ if (m_pImpl->m_pFloatWin)
+ nLines = m_pImpl->m_pFloatWin->GetDropDownLineCount();
return nLines;
}
@@ -541,15 +601,15 @@ void ComboBox::setPosSizePixel( long nX, long nY, long nWidth, long nHeight,
{
if( IsDropDownBox() && ( nFlags & PosSizeFlags::Size ) )
{
- Size aPrefSz = mpFloatWin->GetPrefSize();
- if ( ( nFlags & PosSizeFlags::Height ) && ( nHeight >= 2*mnDDHeight ) )
- aPrefSz.Height() = nHeight-mnDDHeight;
+ Size aPrefSz = m_pImpl->m_pFloatWin->GetPrefSize();
+ if ((nFlags & PosSizeFlags::Height) && (nHeight >= 2*m_pImpl->m_nDDHeight))
+ aPrefSz.Height() = nHeight-m_pImpl->m_nDDHeight;
if ( nFlags & PosSizeFlags::Width )
aPrefSz.Width() = nWidth;
- mpFloatWin->SetPrefSize( aPrefSz );
+ m_pImpl->m_pFloatWin->SetPrefSize( aPrefSz );
if ( IsAutoSizeEnabled() && ! (nFlags & PosSizeFlags::Dropdown) )
- nHeight = mnDDHeight;
+ nHeight = m_pImpl->m_nDDHeight;
}
Edit::setPosSizePixel( nX, nY, nWidth, nHeight, nFlags );
@@ -559,41 +619,44 @@ void ComboBox::Resize()
{
Control::Resize();
- if (mpSubEdit)
+ if (m_pImpl->m_pSubEdit)
{
Size aOutSz = GetOutputSizePixel();
if( IsDropDownBox() )
{
- ComboBoxBounds aBounds(calcComboBoxDropDownComponentBounds(aOutSz,
+ ComboBoxBounds aBounds(m_pImpl->calcComboBoxDropDownComponentBounds(aOutSz,
GetWindow(GetWindowType::Border)->GetOutputSizePixel()));
- mpSubEdit->SetPosSizePixel(aBounds.aSubEditPos, aBounds.aSubEditSize);
- mpBtn->SetPosSizePixel(aBounds.aButtonPos, aBounds.aButtonSize);
+ m_pImpl->m_pSubEdit->SetPosSizePixel(aBounds.aSubEditPos, aBounds.aSubEditSize);
+ m_pImpl->m_pBtn->SetPosSizePixel(aBounds.aButtonPos, aBounds.aButtonSize);
}
else
{
- mpSubEdit->SetSizePixel( Size( aOutSz.Width(), mnDDHeight ) );
- mpImplLB->setPosSizePixel( 0, mnDDHeight, aOutSz.Width(), aOutSz.Height() - mnDDHeight );
+ m_pImpl->m_pSubEdit->SetSizePixel(Size(aOutSz.Width(), m_pImpl->m_nDDHeight));
+ m_pImpl->m_pImplLB->setPosSizePixel(0, m_pImpl->m_nDDHeight,
+ aOutSz.Width(), aOutSz.Height() - m_pImpl->m_nDDHeight);
if ( !GetText().isEmpty() )
- ImplUpdateFloatSelection();
+ m_pImpl->ImplUpdateFloatSelection();
}
}
// adjust the size of the FloatingWindow even when invisible
// as KEY_PGUP/DOWN is being processed...
- if ( mpFloatWin )
- mpFloatWin->SetSizePixel( mpFloatWin->CalcFloatSize() );
+ if (m_pImpl->m_pFloatWin)
+ m_pImpl->m_pFloatWin->SetSizePixel(m_pImpl->m_pFloatWin->CalcFloatSize());
}
+bool ComboBox::IsDropDownBox() const { return m_pImpl->m_pFloatWin != nullptr; }
+
void ComboBox::FillLayoutData() const
{
mpControlData->mpLayoutData = new vcl::ControlLayoutData();
- AppendLayoutData( *mpSubEdit );
- mpSubEdit->SetLayoutDataParent( this );
- ImplListBoxWindow* rMainWindow = mpImplLB->GetMainWindow();
- if( mpFloatWin )
+ AppendLayoutData( *m_pImpl->m_pSubEdit );
+ m_pImpl->m_pSubEdit->SetLayoutDataParent( this );
+ ImplListBoxWindow* rMainWindow = m_pImpl->m_pImplLB->GetMainWindow();
+ if (m_pImpl->m_pFloatWin)
{
// dropdown mode
- if( mpFloatWin->IsReallyVisible() )
+ if (m_pImpl->m_pFloatWin->IsReallyVisible())
{
AppendLayoutData( *rMainWindow );
rMainWindow->SetLayoutDataParent( this );
@@ -612,60 +675,60 @@ void ComboBox::StateChanged( StateChangedType nType )
if ( nType == StateChangedType::ReadOnly )
{
- mpImplLB->SetReadOnly( IsReadOnly() );
- if ( mpBtn )
- mpBtn->Enable( IsEnabled() && !IsReadOnly() );
+ m_pImpl->m_pImplLB->SetReadOnly( IsReadOnly() );
+ if (m_pImpl->m_pBtn)
+ m_pImpl->m_pBtn->Enable( IsEnabled() && !IsReadOnly() );
}
else if ( nType == StateChangedType::Enable )
{
- mpSubEdit->Enable( IsEnabled() );
- mpImplLB->Enable( IsEnabled() && !IsReadOnly() );
- if ( mpBtn )
- mpBtn->Enable( IsEnabled() && !IsReadOnly() );
+ m_pImpl->m_pSubEdit->Enable( IsEnabled() );
+ m_pImpl->m_pImplLB->Enable( IsEnabled() && !IsReadOnly() );
+ if (m_pImpl->m_pBtn)
+ m_pImpl->m_pBtn->Enable( IsEnabled() && !IsReadOnly() );
Invalidate();
}
else if( nType == StateChangedType::UpdateMode )
{
- mpImplLB->SetUpdateMode( IsUpdateMode() );
+ m_pImpl->m_pImplLB->SetUpdateMode( IsUpdateMode() );
}
else if ( nType == StateChangedType::Zoom )
{
- mpImplLB->SetZoom( GetZoom() );
- mpSubEdit->SetZoom( GetZoom() );
+ m_pImpl->m_pImplLB->SetZoom( GetZoom() );
+ m_pImpl->m_pSubEdit->SetZoom( GetZoom() );
ImplCalcEditHeight();
Resize();
}
else if ( nType == StateChangedType::ControlFont )
{
- mpImplLB->SetControlFont( GetControlFont() );
- mpSubEdit->SetControlFont( GetControlFont() );
+ m_pImpl->m_pImplLB->SetControlFont( GetControlFont() );
+ m_pImpl->m_pSubEdit->SetControlFont( GetControlFont() );
ImplCalcEditHeight();
Resize();
}
else if ( nType == StateChangedType::ControlForeground )
{
- mpImplLB->SetControlForeground( GetControlForeground() );
- mpSubEdit->SetControlForeground( GetControlForeground() );
+ m_pImpl->m_pImplLB->SetControlForeground( GetControlForeground() );
+ m_pImpl->m_pSubEdit->SetControlForeground( GetControlForeground() );
}
else if ( nType == StateChangedType::ControlBackground )
{
- mpImplLB->SetControlBackground( GetControlBackground() );
- mpSubEdit->SetControlBackground( GetControlBackground() );
+ m_pImpl->m_pImplLB->SetControlBackground( GetControlBackground() );
+ m_pImpl->m_pSubEdit->SetControlBackground( GetControlBackground() );
}
else if ( nType == StateChangedType::Style )
{
SetStyle( ImplInitStyle( GetStyle() ) );
- mpImplLB->GetMainWindow()->EnableSort( ( GetStyle() & WB_SORT ) != 0 );
+ m_pImpl->m_pImplLB->GetMainWindow()->EnableSort( ( GetStyle() & WB_SORT ) != 0 );
}
else if( nType == StateChangedType::Mirroring )
{
- if( mpBtn )
+ if (m_pImpl->m_pBtn)
{
- mpBtn->EnableRTL( IsRTLEnabled() );
- ImplInitDropDownButton( mpBtn );
+ m_pImpl->m_pBtn->EnableRTL( IsRTLEnabled() );
+ ImplInitDropDownButton( m_pImpl->m_pBtn );
}
- mpSubEdit->CompatStateChanged( StateChangedType::Mirroring );
- mpImplLB->EnableRTL( IsRTLEnabled() );
+ m_pImpl->m_pSubEdit->CompatStateChanged( StateChangedType::Mirroring );
+ m_pImpl->m_pImplLB->EnableRTL( IsRTLEnabled() );
Resize();
}
}
@@ -679,13 +742,13 @@ void ComboBox::DataChanged( const DataChangedEvent& rDCEvt )
((rDCEvt.GetType() == DataChangedEventType::SETTINGS) &&
(rDCEvt.GetFlags() & AllSettingsFlags::STYLE)) )
{
- if ( mpBtn )
+ if (m_pImpl->m_pBtn)
{
- mpBtn->SetSettings( GetSettings() );
- ImplInitDropDownButton( mpBtn );
+ m_pImpl->m_pBtn->SetSettings( GetSettings() );
+ ImplInitDropDownButton( m_pImpl->m_pBtn );
}
Resize();
- mpImplLB->Resize(); // not called by ComboBox::Resize() if ImplLB is unchanged
+ m_pImpl->m_pImplLB->Resize(); // not called by ComboBox::Resize() if ImplLB is unchanged
SetBackground(); // due to a hack in Window::UpdateSettings the background must be reset
// otherwise it will overpaint NWF drawn comboboxes
@@ -701,8 +764,9 @@ bool ComboBox::PreNotify( NotifyEvent& rNEvt )
bool ComboBox::Notify( NotifyEvent& rNEvt )
{
bool nDone = false;
- if( ( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT ) && ( rNEvt.GetWindow() == mpSubEdit )
- && !IsReadOnly() )
+ if ((rNEvt.GetType() == MouseNotifyEvent::KEYINPUT)
+ && (rNEvt.GetWindow() == m_pImpl->m_pSubEdit)
+ && !IsReadOnly())
{
KeyEvent aKeyEvt = *rNEvt.GetKeyEvent();
sal_uInt16 nKeyCode = aKeyEvt.GetKeyCode().GetCode();
@@ -713,51 +777,55 @@ bool ComboBox::Notify( NotifyEvent& rNEvt )
case KEY_PAGEUP:
case KEY_PAGEDOWN:
{
- ImplUpdateFloatSelection();
- if( ( nKeyCode == KEY_DOWN ) && mpFloatWin && !mpFloatWin->IsInPopupMode() && aKeyEvt.GetKeyCode().IsMod2() )
+ m_pImpl->ImplUpdateFloatSelection();
+ if ((nKeyCode == KEY_DOWN) && m_pImpl->m_pFloatWin
+ && !m_pImpl->m_pFloatWin->IsInPopupMode()
+ && aKeyEvt.GetKeyCode().IsMod2())
{
CallEventListeners( VCLEVENT_DROPDOWN_PRE_OPEN );
- mpBtn->SetPressed( true );
- if ( mpImplLB->GetEntryList()->GetMRUCount() )
- mpImplLB->SelectEntry( 0 , true );
+ m_pImpl->m_pBtn->SetPressed( true );
+ if (m_pImpl->m_pImplLB->GetEntryList()->GetMRUCount())
+ m_pImpl->m_pImplLB->SelectEntry( 0 , true );
SetSelection( Selection( 0, SELECTION_MAX ) );
- mpFloatWin->StartFloat( false );
+ m_pImpl->m_pFloatWin->StartFloat( false );
CallEventListeners( VCLEVENT_DROPDOWN_OPEN );
nDone = true;
}
- else if( ( nKeyCode == KEY_UP ) && mpFloatWin && mpFloatWin->IsInPopupMode() && aKeyEvt.GetKeyCode().IsMod2() )
+ else if ((nKeyCode == KEY_UP) && m_pImpl->m_pFloatWin
+ && m_pImpl->m_pFloatWin->IsInPopupMode()
+ && aKeyEvt.GetKeyCode().IsMod2())
{
- mpFloatWin->EndPopupMode();
+ m_pImpl->m_pFloatWin->EndPopupMode();
nDone = true;
}
else
{
- nDone = mpImplLB->ProcessKeyInput( aKeyEvt );
+ nDone = m_pImpl->m_pImplLB->ProcessKeyInput( aKeyEvt );
}
}
break;
case KEY_RETURN:
{
- if( ( rNEvt.GetWindow() == mpSubEdit ) && IsInDropDown() )
+ if ((rNEvt.GetWindow() == m_pImpl->m_pSubEdit) && IsInDropDown())
{
- mpImplLB->ProcessKeyInput( aKeyEvt );
+ m_pImpl->m_pImplLB->ProcessKeyInput( aKeyEvt );
nDone = true;
}
}
break;
}
}
- else if ( (rNEvt.GetType() == MouseNotifyEvent::LOSEFOCUS) && mpFloatWin )
+ else if ((rNEvt.GetType() == MouseNotifyEvent::LOSEFOCUS) && m_pImpl->m_pFloatWin)
{
- if( mpFloatWin->HasChildPathFocus() )
- mpSubEdit->GrabFocus();
- else if ( mpFloatWin->IsInPopupMode() && !HasChildPathFocus( true ) )
- mpFloatWin->EndPopupMode();
+ if (m_pImpl->m_pFloatWin->HasChildPathFocus())
+ m_pImpl->m_pSubEdit->GrabFocus();
+ else if (m_pImpl->m_pFloatWin->IsInPopupMode() && !HasChildPathFocus(true))
+ m_pImpl->m_pFloatWin->EndPopupMode();
}
else if( (rNEvt.GetType() == MouseNotifyEvent::COMMAND) &&
(rNEvt.GetCommandEvent()->GetCommand() == CommandEventId::Wheel) &&
- (rNEvt.GetWindow() == mpSubEdit) )
+ (rNEvt.GetWindow() == m_pImpl->m_pSubEdit) )
{
MouseWheelBehaviour nWheelBehavior( GetSettings().GetMouseSettings().GetWheelBehavior() );
if ( ( nWheelBehavior == MouseWheelBehaviour::ALWAYS )
@@ -766,16 +834,17 @@ bool ComboBox::Notify( NotifyEvent& rNEvt )
)
)
{
- nDone = mpImplLB->HandleWheelAsCursorTravel( *rNEvt.GetCommandEvent() );
+ nDone = m_pImpl->m_pImplLB->HandleWheelAsCursorTravel( *rNEvt.GetCommandEvent() );
}
else
{
nDone = false; // don't eat this event, let the default handling happen (i.e. scroll the context)
}
}
- else if( ( rNEvt.GetType() == MouseNotifyEvent::MOUSEBUTTONDOWN ) && ( rNEvt.GetWindow() == mpImplLB->GetMainWindow() ) )
+ else if ((rNEvt.GetType() == MouseNotifyEvent::MOUSEBUTTONDOWN)
+ && (rNEvt.GetWindow() == m_pImpl->m_pImplLB->GetMainWindow()))
{
- mpSubEdit->GrabFocus();
+ m_pImpl->m_pSubEdit->GrabFocus();
}
return nDone || Edit::Notify( rNEvt );
@@ -786,7 +855,7 @@ void ComboBox::SetText( const OUString& rStr )
CallEventListeners( VCLEVENT_COMBOBOX_SETTEXT );
Edit::SetText( rStr );
- ImplUpdateFloatSelection();
+ m_pImpl->ImplUpdateFloatSelection();
}
void ComboBox::SetText( const OUString& rStr, const Selection& rNewSelection )
@@ -794,85 +863,86 @@ void ComboBox::SetText( const OUString& rStr, const Selection& rNewSelection )
CallEventListeners( VCLEVENT_COMBOBOX_SETTEXT );
Edit::SetText( rStr, rNewSelection );
- ImplUpdateFloatSelection();
+ m_pImpl->ImplUpdateFloatSelection();
}
void ComboBox::Modify()
{
- if ( !mbSyntheticModify )
- ImplUpdateFloatSelection();
+ if (!m_pImpl->m_isSyntheticModify)
+ m_pImpl->ImplUpdateFloatSelection();
Edit::Modify();
}
-void ComboBox::ImplUpdateFloatSelection()
+void ComboBox::Impl::ImplUpdateFloatSelection()
{
- if (!mpImplLB || !mpSubEdit)
+ if (!m_pImplLB || m_pSubEdit)
return;
// move text in the ListBox into the visible region
- mpImplLB->SetCallSelectionChangedHdl( false );
- if ( !IsMultiSelectionEnabled() )
+ m_pImplLB->SetCallSelectionChangedHdl( false );
+ if (!m_rThis.IsMultiSelectionEnabled())
{
- OUString aSearchStr( mpSubEdit->GetText() );
+ OUString aSearchStr( m_pSubEdit->GetText() );
sal_Int32 nSelect = LISTBOX_ENTRY_NOTFOUND;
bool bSelect = true;
- if ( mpImplLB->GetCurrentPos() != LISTBOX_ENTRY_NOTFOUND )
+ if (m_pImplLB->GetCurrentPos() != LISTBOX_ENTRY_NOTFOUND)
{
- OUString aCurrent = mpImplLB->GetEntryList()->GetEntryText( mpImplLB->GetCurrentPos() );
+ OUString aCurrent = m_pImplLB->GetEntryList()->GetEntryText(
+ m_pImplLB->GetCurrentPos());
if ( aCurrent == aSearchStr )
- nSelect = mpImplLB->GetCurrentPos();
+ nSelect = m_pImplLB->GetCurrentPos();
}
if ( nSelect == LISTBOX_ENTRY_NOTFOUND )
- nSelect = mpImplLB->GetEntryList()->FindEntry( aSearchStr );
+ nSelect = m_pImplLB->GetEntryList()->FindEntry( aSearchStr );
if ( nSelect == LISTBOX_ENTRY_NOTFOUND )
{
- nSelect = mpImplLB->GetEntryList()->FindMatchingEntry( aSearchStr );
+ nSelect = m_pImplLB->GetEntryList()->FindMatchingEntry( aSearchStr );
bSelect = false;
}
if( nSelect != LISTBOX_ENTRY_NOTFOUND )
{
- if ( !mpImplLB->IsVisible( nSelect ) )
- mpImplLB->ShowProminentEntry( nSelect );
- mpImplLB->SelectEntry( nSelect, bSelect );
+ if (!m_pImplLB->IsVisible(nSelect))
+ m_pImplLB->ShowProminentEntry( nSelect );
+ m_pImplLB->SelectEntry( nSelect, bSelect );
}
else
{
- nSelect = mpImplLB->GetEntryList()->GetSelectEntryPos( 0 );
+ nSelect = m_pImplLB->GetEntryList()->GetSelectEntryPos( 0 );
if( nSelect != LISTBOX_ENTRY_NOTFOUND )
- mpImplLB->SelectEntry( nSelect, false );
- mpImplLB->ResetCurrentPos();
+ m_pImplLB->SelectEntry( nSelect, false );
+ m_pImplLB->ResetCurrentPos();
}
}
else
{
::std::set< sal_Int32 > aSelInText;
- lcl_GetSelectedEntries( aSelInText, mpSubEdit->GetText(), mcMultiSep, mpImplLB->GetEntryList() );
- for ( sal_Int32 n = 0; n < mpImplLB->GetEntryList()->GetEntryCount(); n++ )
- mpImplLB->SelectEntry( n, aSelInText.count( n ) );
+ lcl_GetSelectedEntries(aSelInText, m_pSubEdit->GetText(), m_cMultiSep, m_pImplLB->GetEntryList());
+ for (sal_Int32 n = 0; n < m_pImplLB->GetEntryList()->GetEntryCount(); n++)
+ m_pImplLB->SelectEntry( n, aSelInText.count( n ) );
}
- mpImplLB->SetCallSelectionChangedHdl( true );
+ m_pImplLB->SetCallSelectionChangedHdl( true );
}
sal_Int32 ComboBox::InsertEntry(const OUString& rStr, sal_Int32 const nPos)
{
- assert(nPos >= 0 && COMBOBOX_MAX_ENTRIES > mpImplLB->GetEntryList()->GetEntryCount());
+ assert(nPos >= 0 && COMBOBOX_MAX_ENTRIES > m_pImpl->m_pImplLB->GetEntryList()->GetEntryCount());
sal_Int32 nRealPos;
if (nPos == COMBOBOX_APPEND)
nRealPos = nPos;
else
{
- const sal_Int32 nMRUCount = mpImplLB->GetEntryList()->GetMRUCount();
+ const sal_Int32 nMRUCount = m_pImpl->m_pImplLB->GetEntryList()->GetMRUCount();
assert(nPos <= COMBOBOX_MAX_ENTRIES - nMRUCount);
nRealPos = nPos + nMRUCount;
}
- nRealPos = mpImplLB->InsertEntry( nRealPos, rStr );
- nRealPos -= mpImplLB->GetEntryList()->GetMRUCount();
+ nRealPos = m_pImpl->m_pImplLB->InsertEntry( nRealPos, rStr );
+ nRealPos -= m_pImpl->m_pImplLB->GetEntryList()->GetMRUCount();
CallEventListeners( VCLEVENT_COMBOBOX_ITEMADDED, reinterpret_cast<void*>(nRealPos) );
return nRealPos;
}
@@ -880,20 +950,20 @@ sal_Int32 ComboBox::InsertEntry(const OUString& rStr, sal_Int32 const nPos)
sal_Int32 ComboBox::InsertEntryWithImage(
const OUString& rStr, const Image& rImage, sal_Int32 const nPos)
{
- assert(nPos >= 0 && COMBOBOX_MAX_ENTRIES > mpImplLB->GetEntryList()->GetEntryCount());
+ assert(nPos >= 0 && COMBOBOX_MAX_ENTRIES > m_pImpl->m_pImplLB->GetEntryList()->GetEntryCount());
sal_Int32 nRealPos;
if (nPos == COMBOBOX_APPEND)
nRealPos = nPos;
else
{
- const sal_Int32 nMRUCount = mpImplLB->GetEntryList()->GetMRUCount();
+ const sal_Int32 nMRUCount = m_pImpl->m_pImplLB->GetEntryList()->GetMRUCount();
assert(nPos <= COMBOBOX_MAX_ENTRIES - nMRUCount);
nRealPos = nPos + nMRUCount;
}
- nRealPos = mpImplLB->InsertEntry( nRealPos, rStr, rImage );
- nRealPos -= mpImplLB->GetEntryList()->GetMRUCount();
+ nRealPos = m_pImpl->m_pImplLB->InsertEntry( nRealPos, rStr, rImage );
+ nRealPos -= m_pImpl->m_pImplLB->GetEntryList()->GetMRUCount();
CallEventListeners( VCLEVENT_COMBOBOX_ITEMADDED, reinterpret_cast<void*>(nRealPos) );
return nRealPos;
}
@@ -905,81 +975,92 @@ void ComboBox::RemoveEntry( const OUString& rStr )
void ComboBox::RemoveEntryAt(sal_Int32 const nPos)
{
- const sal_Int32 nMRUCount = mpImplLB->GetEntryList()->GetMRUCount();
+ const sal_Int32 nMRUCount = m_pImpl->m_pImplLB->GetEntryList()->GetMRUCount();
if (nPos < 0 || nPos > COMBOBOX_MAX_ENTRIES - nMRUCount)
return;
- mpImplLB->RemoveEntry( nPos + nMRUCount );
+ m_pImpl->m_pImplLB->RemoveEntry( nPos + nMRUCount );
CallEventListeners( VCLEVENT_COMBOBOX_ITEMREMOVED, reinterpret_cast<void*>(nPos) );
}
void ComboBox::Clear()
{
- mpImplLB->Clear();
+ m_pImpl->m_pImplLB->Clear();
CallEventListeners( VCLEVENT_COMBOBOX_ITEMREMOVED, reinterpret_cast<void*>(-1) );
}
Image ComboBox::GetEntryImage( sal_Int32 nPos ) const
{
- if ( mpImplLB->GetEntryList()->HasEntryImage( nPos ) )
- return mpImplLB->GetEntryList()->GetEntryImage( nPos );
+ if (m_pImpl->m_pImplLB->GetEntryList()->HasEntryImage(nPos))
+ return m_pImpl->m_pImplLB->GetEntryList()->GetEntryImage( nPos );
return Image();
}
sal_Int32 ComboBox::GetEntryPos( const OUString& rStr ) const
{
- sal_Int32 nPos = mpImplLB->GetEntryList()->FindEntry( rStr );
+ sal_Int32 nPos = m_pImpl->m_pImplLB->GetEntryList()->FindEntry( rStr );
if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- nPos -= mpImplLB->GetEntryList()->GetMRUCount();
+ nPos -= m_pImpl->m_pImplLB->GetEntryList()->GetMRUCount();
return nPos;
}
sal_Int32 ComboBox::GetEntryPos( const void* pData ) const
{
- sal_Int32 nPos = mpImplLB->GetEntryList()->FindEntry( pData );
+ sal_Int32 nPos = m_pImpl->m_pImplLB->GetEntryList()->FindEntry( pData );
if ( nPos != LISTBOX_ENTRY_NOTFOUND )
- nPos = nPos - mpImplLB->GetEntryList()->GetMRUCount();
+ nPos = nPos - m_pImpl->m_pImplLB->GetEntryList()->GetMRUCount();
return nPos;
}
OUString ComboBox::GetEntry( sal_Int32 nPos ) const
{
- const sal_Int32 nMRUCount = mpImplLB->GetEntryList()->GetMRUCount();
+ const sal_Int32 nMRUCount = m_pImpl->m_pImplLB->GetEntryList()->GetMRUCount();
if (nPos < 0 || nPos > COMBOBOX_MAX_ENTRIES - nMRUCount)
return OUString();
- return mpImplLB->GetEntryList()->GetEntryText( nPos + nMRUCount );
+ return m_pImpl->m_pImplLB->GetEntryList()->GetEntryText( nPos + nMRUCount );
}
sal_Int32 ComboBox::GetEntryCount() const
{
- return mpImplLB->GetEntryList()->GetEntryCount() - mpImplLB->GetEntryList()->GetMRUCount();
+ return m_pImpl->m_pImplLB->GetEntryList()->GetEntryCount() - m_pImpl->m_pImplLB->GetEntryList()->GetMRUCount();
}
bool ComboBox::IsTravelSelect() const
{
- return mpImplLB->IsTravelSelect();
+ return m_pImpl->m_pImplLB->IsTravelSelect();
}
bool ComboBox::IsInDropDown() const
{
- return mpFloatWin && mpFloatWin->IsInPopupMode();
+ return m_pImpl->m_pFloatWin && m_pImpl->m_pFloatWin->IsInPopupMode();
}
+void ComboBox::SetMultiSelectionSeparator(sal_Unicode cSep) { m_pImpl->m_cMultiSep = cSep; }
+sal_Unicode ComboBox::GetMultiSelectionSeparator() const { return m_pImpl->m_cMultiSep; }
+
void ComboBox::EnableMultiSelection( bool bMulti )
{
- mpImplLB->EnableMultiSelection( bMulti, false );
- mpImplLB->SetMultiSelectionSimpleMode( true );
+ m_pImpl->m_pImplLB->EnableMultiSelection( bMulti, false );
+ m_pImpl->m_pImplLB->SetMultiSelectionSimpleMode( true );
}
bool ComboBox::IsMultiSelectionEnabled() const
{
- return mpImplLB->IsMultiSelectionEnabled();
+ return m_pImpl->m_pImplLB->IsMultiSelectionEnabled();
}
+void ComboBox::SetSelectHdl(const Link<>& rLink) { m_pImpl->m_SelectHdl = rLink; }
+
+const Link<>& ComboBox::GetSelectHdl() const { return m_pImpl->m_SelectHdl; }
+
+void ComboBox::SetDoubleClickHdl(const Link<>& rLink) { m_pImpl->m_DoubleClickHdl = rLink; }
+
+const Link<>& ComboBox::GetDoubleClickHdl() const { return m_pImpl->m_DoubleClickHdl; }
+
long ComboBox::CalcWindowSizePixel( sal_uInt16 nLines ) const
{
- return mpImplLB->GetEntryHeight() * nLines;
+ return m_pImpl->m_pImplLB->GetEntryHeight() * nLines;
}
Size ComboBox::GetOptimalSize() const
@@ -1014,30 +1095,30 @@ Size ComboBox::CalcMinimumSize() const
{
Size aSz;
- if (!mpImplLB)
+ if (!m_pImpl->m_pImplLB)
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list