summaryrefslogtreecommitdiff
path: root/sw/source
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source')
-rw-r--r--sw/source/core/doc/doc.cxx2
-rw-r--r--sw/source/core/layout/trvlfrm.cxx92
-rw-r--r--sw/source/core/text/portxt.cxx2
-rw-r--r--sw/source/core/txtnode/fntcap.cxx2
-rw-r--r--sw/source/core/view/viewsh.cxx28
-rw-r--r--sw/source/core/view/vnew.cxx2
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx4
-rw-r--r--sw/source/filter/ww8/wrtww8.cxx4
-rw-r--r--sw/source/filter/ww8/ww8par3.cxx2
-rw-r--r--sw/source/filter/xml/xmlmeta.cxx4
-rw-r--r--sw/source/ui/docvw/edtwin.cxx7
-rw-r--r--sw/source/ui/inc/swuicnttab.hxx37
-rw-r--r--sw/source/ui/index/cnttab.cxx293
13 files changed, 258 insertions, 221 deletions
diff --git a/sw/source/core/doc/doc.cxx b/sw/source/core/doc/doc.cxx
index a031aa86098f..7c4e1984b819 100644
--- a/sw/source/core/doc/doc.cxx
+++ b/sw/source/core/doc/doc.cxx
@@ -1947,7 +1947,7 @@ void SwDoc::ResetModified()
mbModified = sal_False;
// If there is already a document statistic, we assume that
// it is correct. In this case we reset the modified flag.
- if ( 0 != pDocStat->nChar )
+ if ( 0 != pDocStat->nCharExcludingSpaces )
pDocStat->bModified = sal_False;
GetIDocumentUndoRedo().SetUndoNoModifiedPosition();
if( nCall && aOle2Link.IsSet() )
diff --git a/sw/source/core/layout/trvlfrm.cxx b/sw/source/core/layout/trvlfrm.cxx
index 2673082d5468..17b9a29ee78b 100644
--- a/sw/source/core/layout/trvlfrm.cxx
+++ b/sw/source/core/layout/trvlfrm.cxx
@@ -162,63 +162,63 @@ sal_Bool SwPageFrm::GetCrsrOfst( SwPosition *pPos, Point &rPoint,
aPoint.Y() = Min( aPoint.Y(), Frm().Bottom() );
}
- //Wenn kein Cntnt unterhalb der Seite 'antwortet', so korrigieren
- //wir den StartPoint und fangen nochmal eine Seite vor der
- //aktuellen an. Mit Flys ist es dann allerdings vorbei.
- if ( SwLayoutFrm::GetCrsrOfst( pPos, aPoint, pCMS ) )
- bRet = sal_True;
- else
+ //Koennte ein Freifliegender gemeint sein?
+ //Wenn sein Inhalt geschuetzt werden soll, so ist nix mit Crsr
+ //hineinsetzen, dadurch sollten alle Aenderungen unmoeglich sein.
+ if ( GetSortedObjs() )
{
- if ( pCMS && (pCMS->bStop || pCMS->bExactOnly) )
+ SwOrderIter aIter( this );
+ aIter.Top();
+ while ( aIter() )
{
- ((SwCrsrMoveState*)pCMS)->bStop = sal_True;
- return sal_False;
- }
- const SwCntntFrm *pCnt = GetCntntPos( aPoint, sal_False, sal_False, sal_False, pCMS, sal_False );
- if ( pCMS && pCMS->bStop )
- return sal_False;
-
- OSL_ENSURE( pCnt, "Crsr is gone to a Black hole" );
- if( pCMS && pCMS->pFill && pCnt->IsTxtFrm() )
- bRet = pCnt->GetCrsrOfst( pPos, rPoint, pCMS );
- else
- bRet = pCnt->GetCrsrOfst( pPos, aPoint, pCMS );
+ const SwVirtFlyDrawObj* pObj =
+ static_cast<const SwVirtFlyDrawObj*>(aIter());
+ const SwFlyFrm* pFly = pObj ? pObj->GetFlyFrm() : 0;
+ if ( pFly &&
+ ( ( pCMS ? pCMS->bSetInReadOnly : sal_False ) ||
+ !pFly->IsProtected() ) &&
+ pFly->GetCrsrOfst( pPos, aPoint, pCMS ) )
+ {
+ bRet = sal_True;
+ break;
+ }
- if ( !bRet )
- {
- // Set point to pCnt, delete mark
- // this may happen, if pCnt is hidden
- *pPos = SwPosition( *pCnt->GetNode(), SwIndex( (SwTxtNode*)pCnt->GetNode(), 0 ) );
- bRet = sal_True;
+ if ( pCMS && pCMS->bStop )
+ return sal_False;
+ aIter.Prev();
}
}
if ( !bRet )
{
- //Koennte ein Freifliegender gemeint sein?
- //Wenn sein Inhalt geschuetzt werden soll, so ist nix mit Crsr
- //hineinsetzen, dadurch sollten alle Aenderungen unmoeglich sein.
- if ( GetSortedObjs() )
+ //Wenn kein Cntnt unterhalb der Seite 'antwortet', so korrigieren
+ //wir den StartPoint und fangen nochmal eine Seite vor der
+ //aktuellen an. Mit Flys ist es dann allerdings vorbei.
+ if ( SwLayoutFrm::GetCrsrOfst( pPos, aPoint, pCMS ) )
+ bRet = sal_True;
+ else
{
- SwOrderIter aIter( this );
- aIter.Top();
- while ( aIter() )
+ if ( pCMS && (pCMS->bStop || pCMS->bExactOnly) )
{
- const SwVirtFlyDrawObj* pObj =
- static_cast<const SwVirtFlyDrawObj*>(aIter());
- const SwFlyFrm* pFly = pObj ? pObj->GetFlyFrm() : 0;
- if ( pFly &&
- ( ( pCMS ? pCMS->bSetInReadOnly : sal_False ) ||
- !pFly->IsProtected() ) &&
- pFly->GetCrsrOfst( pPos, aPoint, pCMS ) )
- {
- bRet = sal_True;
- break;
- }
+ ((SwCrsrMoveState*)pCMS)->bStop = sal_True;
+ return sal_False;
+ }
+ const SwCntntFrm *pCnt = GetCntntPos( aPoint, sal_False, sal_False, sal_False, pCMS, sal_False );
+ if ( pCMS && pCMS->bStop )
+ return sal_False;
- if ( pCMS && pCMS->bStop )
- return sal_False;
- aIter.Prev();
+ OSL_ENSURE( pCnt, "Crsr is gone to a Black hole" );
+ if( pCMS && pCMS->pFill && pCnt->IsTxtFrm() )
+ bRet = pCnt->GetCrsrOfst( pPos, rPoint, pCMS );
+ else
+ bRet = pCnt->GetCrsrOfst( pPos, aPoint, pCMS );
+
+ if ( !bRet )
+ {
+ // Set point to pCnt, delete mark
+ // this may happen, if pCnt is hidden
+ *pPos = SwPosition( *pCnt->GetNode(), SwIndex( (SwTxtNode*)pCnt->GetNode(), 0 ) );
+ bRet = sal_True;
}
}
}
diff --git a/sw/source/core/text/portxt.cxx b/sw/source/core/text/portxt.cxx
index a84ccb6b52de..c72c22fb02f9 100644
--- a/sw/source/core/text/portxt.cxx
+++ b/sw/source/core/text/portxt.cxx
@@ -820,7 +820,7 @@ void SwFieldFormPortion::Paint( const SwTxtPaintInfo& rInf ) const
{
if ( pBM->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMCHECKBOX ) ) )
{ // a checkbox...
- ICheckboxFieldmark* pCheckboxFm = reinterpret_cast< ICheckboxFieldmark* >(pBM);
+ ICheckboxFieldmark* pCheckboxFm = dynamic_cast< ICheckboxFieldmark* >(pBM);
bool checked = pCheckboxFm->IsChecked();
rInf.DrawCheckBox(*this, checked);
}
diff --git a/sw/source/core/txtnode/fntcap.cxx b/sw/source/core/txtnode/fntcap.cxx
index 8a40614a3d93..5696984a7dce 100644
--- a/sw/source/core/txtnode/fntcap.cxx
+++ b/sw/source/core/txtnode/fntcap.cxx
@@ -623,7 +623,7 @@ void SwSubFont::DoOnCapitals( SwDoCapitals &rDo )
pBigFont = pLastFont;
// Hier entsteht der Kleinbuchstabenfont:
- aFont.SetProportion( sal_uInt8 (aFont.GetPropr() * SMALL_CAPS_PERCENTAGE ) / 100L);
+ aFont.SetProportion( (aFont.GetPropr() * SMALL_CAPS_PERCENTAGE ) / 100L );
pMagic2 = NULL;
nIndex2 = 0;
SwFntAccess *pSmallFontAccess = new SwFntAccess( pMagic2, nIndex2, &aFont,
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index 797ed01a3287..e328e369e696 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -98,7 +98,7 @@ using namespace ::com::sun::star;
//////////////////////////////////////////////////////////////////////////////
// #i72754# 2nd set of Pre/PostPaints
-// This time it uses the lock counter mnPrePostPaintCount to allow only one activation
+// This time it uses the lock counter (mPrePostPaintRegions empty/non-empty) to allow only one activation
// and deactivation and mpPrePostOutDev to remember the OutDev from the BeginDrawLayers
// call. That way, all places where paint take place can be handled the same way, even
// when calling other paint methods. This is the case at the places where SW paints
@@ -116,8 +116,9 @@ void ViewShell::PrePaint()
void ViewShell::DLPrePaint2(const Region& rRegion)
{
- if(0L == mnPrePostPaintCount)
+ if(mPrePostPaintRegions.empty())
{
+ mPrePostPaintRegions.push( rRegion );
// #i75172# ensure DrawView to use DrawingLayer bufferings
if ( !HasDrawView() )
MakeDrawView();
@@ -139,16 +140,29 @@ void ViewShell::DLPrePaint2(const Region& rRegion)
// remember original paint MapMode for wrapped FlyFrame paints
maPrePostMapMode = pOut->GetMapMode();
}
-
- mnPrePostPaintCount++;
+ else
+ {
+ // region needs to be updated to the given one
+ if( mPrePostPaintRegions.top() != rRegion )
+ Imp()->GetDrawView()->UpdateDrawLayersRegion(mpPrePostOutDev, rRegion);
+ mPrePostPaintRegions.push( rRegion );
+ }
}
void ViewShell::DLPostPaint2(bool bPaintFormLayer)
{
- OSL_ENSURE(mnPrePostPaintCount > 0L, "ViewShell::DLPostPaint2: Pre/PostPaint encapsulation broken (!)");
- mnPrePostPaintCount--;
+ OSL_ENSURE(!mPrePostPaintRegions.empty(), "ViewShell::DLPostPaint2: Pre/PostPaint encapsulation broken (!)");
- if((0L == mnPrePostPaintCount) && (0 != mpTargetPaintWindow))
+ if( mPrePostPaintRegions.size() > 1 )
+ {
+ Region current = mPrePostPaintRegions.top();
+ mPrePostPaintRegions.pop();
+ if( current != mPrePostPaintRegions.top())
+ Imp()->GetDrawView()->UpdateDrawLayersRegion(mpPrePostOutDev, mPrePostPaintRegions.top());
+ return;
+ }
+ mPrePostPaintRegions.pop(); // clear
+ if(0 != mpTargetPaintWindow)
{
// #i74769# restore buffered OutDev
if(mpTargetPaintWindow->GetPreRenderDevice())
diff --git a/sw/source/core/view/vnew.cxx b/sw/source/core/view/vnew.cxx
index 668a9028d36a..7b51f53b9df3 100644
--- a/sw/source/core/view/vnew.cxx
+++ b/sw/source/core/view/vnew.cxx
@@ -158,7 +158,6 @@ ViewShell::ViewShell( SwDoc& rDocument, Window *pWindow,
pDoc( &rDocument ),
nStartAction( 0 ),
nLockPaint( 0 ),
- mnPrePostPaintCount(0L),
mpPrePostOutDev(0),
maPrePostMapMode()
{
@@ -226,7 +225,6 @@ ViewShell::ViewShell( ViewShell& rShell, Window *pWindow,
pDoc( rShell.GetDoc() ),
nStartAction( 0 ),
nLockPaint( 0 ),
- mnPrePostPaintCount(0L),
mpPrePostOutDev(0),
maPrePostMapMode()
{
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index bc60b3e21e74..357aded1322d 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -657,9 +657,7 @@ void DocxAttributeOutput::WriteFFData( const FieldInfos& rInfos )
FieldMarkParamsHelper params( rFieldmark );
params.extractParam( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ODF_FORMCHECKBOX_NAME ) ), sName );
- const sw::mark::ICheckboxFieldmark* pCheckboxFm = NULL;
- if ( rFieldmark.GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMCHECKBOX ) ) )
- pCheckboxFm = reinterpret_cast<const sw::mark::ICheckboxFieldmark*>(&rFieldmark);
+ const sw::mark::ICheckboxFieldmark* pCheckboxFm = dynamic_cast<const sw::mark::ICheckboxFieldmark*>(&rFieldmark);
if ( pCheckboxFm && pCheckboxFm->IsChecked() )
bChecked = true;
diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx
index 81920922c145..fe160b9493fe 100644
--- a/sw/source/filter/ww8/wrtww8.cxx
+++ b/sw/source/filter/ww8/wrtww8.cxx
@@ -3522,9 +3522,7 @@ void WW8Export::WriteFormData( const ::sw::mark::IFieldmark& rFieldmark )
return;
const ::sw::mark::IFieldmark* pFieldmark = &rFieldmark;
- const ::sw::mark::ICheckboxFieldmark* pAsCheckbox = NULL;
- if ( rFieldmark.GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMCHECKBOX ) ) )
- pAsCheckbox = reinterpret_cast< const ::sw::mark::ICheckboxFieldmark* >( pFieldmark );
+ const ::sw::mark::ICheckboxFieldmark* pAsCheckbox = dynamic_cast< const ::sw::mark::ICheckboxFieldmark* >( pFieldmark );
OSL_ENSURE(rFieldmark.GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMTEXT ) ) ||
diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx
index 6d014a08a61a..45cc68c4cdfc 100644
--- a/sw/source/filter/ww8/ww8par3.cxx
+++ b/sw/source/filter/ww8/ww8par3.cxx
@@ -225,7 +225,7 @@ eF_ResT SwWW8ImplReader::Read_F_FormCheckBox( WW8FieldDesc* pF, String& rStr )
OSL_ENSURE(pFieldmark!=NULL, "hmmm; why was the bookmark not created?");
if (pFieldmark!=NULL) {
IFieldmark::parameter_map_t* const pParameters = pFieldmark->GetParameters();
- ICheckboxFieldmark* pCheckboxFm = reinterpret_cast<ICheckboxFieldmark*>(pFieldmark);
+ ICheckboxFieldmark* pCheckboxFm = dynamic_cast<ICheckboxFieldmark*>(pFieldmark);
(*pParameters)[::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMCHECKBOX_NAME))] = uno::makeAny(::rtl::OUString(aFormula.sTitle));
(*pParameters)[::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ODF_FORMCHECKBOX_HELPTEXT))] = uno::makeAny(::rtl::OUString(aFormula.sToolTip));
diff --git a/sw/source/filter/xml/xmlmeta.cxx b/sw/source/filter/xml/xmlmeta.cxx
index 92c743518cb6..be0e7d42d286 100644
--- a/sw/source/filter/xml/xmlmeta.cxx
+++ b/sw/source/filter/xml/xmlmeta.cxx
@@ -94,6 +94,7 @@ enum SvXMLTokenMapAttrs
XML_TOK_META_STAT_PARA = 16,
XML_TOK_META_STAT_WORD = 32,
XML_TOK_META_STAT_CHAR = 64,
+ XML_TOK_META_STAT_NON_WHITE_SPACE_CHAR = 128,
XML_TOK_META_STAT_END=XML_TOK_UNKNOWN
};
@@ -112,6 +113,7 @@ static const struct statistic s_stats [] = {
{ XML_TOK_META_STAT_PARA, "ParagraphCount", 0, &SwDocStat::nPara },
{ XML_TOK_META_STAT_WORD, "WordCount", 0, &SwDocStat::nWord },
{ XML_TOK_META_STAT_CHAR, "CharacterCount", 0, &SwDocStat::nChar },
+ { XML_TOK_META_STAT_NON_WHITE_SPACE_CHAR, "NonWhitespaceCharacterCount", 0, &SwDocStat::nCharExcludingSpaces },
{ XML_TOK_META_STAT_END, 0, 0, 0 }
};
@@ -149,7 +151,7 @@ void SwXMLImport::SetStatistics(
}
}
- if( 127 == nTokens )
+ if( 255 == nTokens )
aDocStat.bModified = sal_False;
if( nTokens )
pDoc->SetDocStat( aDocStat );
diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx
index c78cedad805c..818aec6e04a3 100644
--- a/sw/source/ui/docvw/edtwin.cxx
+++ b/sw/source/ui/docvw/edtwin.cxx
@@ -2195,9 +2195,8 @@ KEYINPUT_CHECKTABLE_INSDEL:
case KS_InsChar:
if (rSh.GetChar(sal_False)==CH_TXT_ATR_FORMELEMENT)
{
- ::sw::mark::ICheckboxFieldmark* pFieldmark = NULL;
- if ( rSh.GetCurrentFieldmark() && rSh.GetCurrentFieldmark()->GetFieldname().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMCHECKBOX ) ) )
- pFieldmark = reinterpret_cast< ::sw::mark::ICheckboxFieldmark* >
+ ::sw::mark::ICheckboxFieldmark* pFieldmark =
+ dynamic_cast< ::sw::mark::ICheckboxFieldmark* >
(rSh.GetCurrentFieldmark());
OSL_ENSURE(pFieldmark,
"Where is my FieldMark??");
@@ -4119,7 +4118,7 @@ void SwEditWin::MouseButtonUp(const MouseEvent& rMEvt)
IFieldmark *fieldBM = const_cast< IFieldmark* > ( aCntntAtPos.aFnd.pFldmark );
if (fieldBM->GetFieldname( ).equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( ODF_FORMCHECKBOX ) ) )
{
- ICheckboxFieldmark* pCheckboxFm = reinterpret_cast<ICheckboxFieldmark*>(fieldBM);
+ ICheckboxFieldmark* pCheckboxFm = dynamic_cast<ICheckboxFieldmark*>(fieldBM);
pCheckboxFm->SetChecked(!pCheckboxFm->IsChecked());
pCheckboxFm->Invalidate();
rSh.InvalidateWindows( rView.GetVisArea() );
diff --git a/sw/source/ui/inc/swuicnttab.hxx b/sw/source/ui/inc/swuicnttab.hxx
index 63298235243f..a2ff8e8c0294 100644
--- a/sw/source/ui/inc/swuicnttab.hxx
+++ b/sw/source/ui/inc/swuicnttab.hxx
@@ -28,25 +28,27 @@
#ifndef _SWUI_CNTTAB_HXX
#define _SWUI_CNTTAB_HXX
-#include <boost/ptr_container/ptr_vector.hpp>
-
-#include <tools/resary.hxx>
-#include <sfx2/tabdlg.hxx>
-#include <svtools/svtreebx.hxx>
-#include <svx/checklbx.hxx>
-#include <svx/langbox.hxx>
#include <svx/stddlg.hxx>
+
#include <vcl/button.hxx>
+
#include <vcl/edit.hxx>
-#include <vcl/field.hxx>
+
#include <vcl/fixed.hxx>
-#include <vcl/lstbox.hxx>
-#include <vcl/menubtn.hxx>
-#include <cnttab.hxx>
-#include <toxmgr.hxx>
+#include <vcl/field.hxx>
+#include <vcl/lstbox.hxx>
+#include <sfx2/tabdlg.hxx>
#include "tox.hxx"
+#include <toxmgr.hxx>
+#include <svx/checklbx.hxx>
+#include <tools/resary.hxx>
+#include <svtools/svtreebx.hxx>
+#include <vcl/menubtn.hxx>
+#include <svx/langbox.hxx>
+#include <cnttab.hxx>
+#include <vector>
class SwWrtShell;
class SwTOXMgr;
@@ -259,16 +261,15 @@ class SwTOXEntryTabPage;
class SwTokenWindow : public Window
{
- typedef boost::ptr_vector<Control> TOXControlList;
- typedef TOXControlList::iterator ctrl_iterator;
- typedef TOXControlList::const_iterator ctrl_const_iterator;
- typedef TOXControlList::reverse_iterator ctrl_reverse_iterator;
- typedef TOXControlList::const_reverse_iterator ctrl_const_reverse_iterator;
+ typedef std::vector<Control*>::iterator ctrl_iterator;
+ typedef std::vector<Control*>::const_iterator ctrl_const_iterator;
+ typedef std::vector<Control*>::reverse_iterator ctrl_reverse_iterator;
+ typedef std::vector<Control*>::const_reverse_iterator ctrl_const_reverse_iterator;
ImageButton aLeftScrollWin;
Window aCtrlParentWin;
ImageButton aRightScrollWin;
- TOXControlList aControlList;
+ std::vector<Control*> aControlList;
SwForm* pForm;
sal_uInt16 nLevel;
sal_Bool bValid;
diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx
index 5ae40724d85b..4fc60b300dfb 100644
--- a/sw/source/ui/index/cnttab.cxx
+++ b/sw/source/ui/index/cnttab.cxx
@@ -111,17 +111,6 @@ static const sal_Unicode aDeliEnd = ']'; //fuer die form
#define IDX_FILE_EXTENSION String::CreateFromAscii( \
RTL_CONSTASCII_STRINGPARAM( "*.sdi" ))
-static boost::ptr_vector<Control>::iterator FindControl (boost::ptr_vector<Control> &list, Control *ctrl)
-{
- for (boost::ptr_vector<Control>::iterator it = list.begin(); it != list.end(); ++it)
- {
- if ((&(*it)) == ctrl)
- return it;
- }
-
- return list.end();
-}
-
String lcl_CreateAutoMarkFileDlg( const String& rURL,
const String& rFileString, sal_Bool bOpen )
{
@@ -2879,6 +2868,13 @@ SwTokenWindow::SwTokenWindow(SwTOXEntryTabPage* pParent, const ResId& rResId) :
SwTokenWindow::~SwTokenWindow()
{
+ for (ctrl_iterator it = aControlList.begin(); it != aControlList.end(); ++it)
+ {
+ Control* pControl = (*it);
+ pControl->SetGetFocusHdl( Link() );
+ pControl->SetLoseFocusHdl( Link() );
+ delete pControl;
+ }
}
void SwTokenWindow::SetForm(SwForm& rForm, sal_uInt16 nL)
@@ -2886,9 +2882,14 @@ void SwTokenWindow::SetForm(SwForm& rForm, sal_uInt16 nL)
SetActiveControl(0);
bValid = sal_True;
- //apply current level settings to the form
if(pForm)
+ {
+ //apply current level settings to the form
+ for (ctrl_iterator iter = aControlList.begin(); iter != aControlList.end(); ++iter)
+ delete (*iter);
+
aControlList.clear();
+ }
nLevel = nL;
pForm = &rForm;
@@ -2986,17 +2987,17 @@ Control* SwTokenWindow::InsertItem(const String& rText, const SwFormToken& rT
Point aControlPos;
if(!aControlList.empty())
- {
- ctrl_const_reverse_iterator iterLast = aControlList.rbegin();
+ {
+ Control* pLast = *(aControlList.rbegin());
- aControlSize = iterLast->GetSizePixel();
- aControlPos = iterLast->GetPosPixel();
+ aControlSize = pLast->GetSizePixel();
+ aControlPos = pLast->GetPosPixel();
aControlPos.X() += aControlSize.Width();
}
if(TOKEN_TEXT == rToken.eTokenType)
{
- SwTOXEdit *pEdit = new SwTOXEdit(&aCtrlParentWin, this, rToken);
+ SwTOXEdit* pEdit = new SwTOXEdit(&aCtrlParentWin, this, rToken);
pEdit->SetPosPixel(aControlPos);
aControlList.push_back(pEdit);
@@ -3063,73 +3064,71 @@ void SwTokenWindow::InsertAtSelection(
//<insert> LS
//<insert> LE
//<insert>
- bool bPreStartLinkFound = false;
- bool bPreEndLinkFound = false;
+ sal_Bool bPreStartLinkFound = sal_False;
+ sal_Bool bPreEndLinkFound = sal_False;
- const Control *pExchange = 0;
- ctrl_const_iterator it = aControlList.begin();
+ const Control* pControl = 0;
+ const Control* pExchange = 0;
- while ( it != aControlList.end())
+ ctrl_const_iterator it = aControlList.begin();
+ for( ; it != aControlList.end() && pActiveCtrl != (*it); ++it )
{
- if ((&(*it)) == pActiveCtrl)
- break;
+ pControl = *it;
- if( WINDOW_EDIT != it->GetType())
+ if( WINDOW_EDIT != pControl->GetType())
{
const SwFormToken& rNewToken =
- (reinterpret_cast<const SwTOXButton&>(*it)).GetFormToken();
+ ((SwTOXButton*)pControl)->GetFormToken();
if( TOKEN_LINK_START == rNewToken.eTokenType )
{
- bPreStartLinkFound = true;
+ bPreStartLinkFound = sal_True;
pExchange = 0;
}
else if(TOKEN_LINK_END == rNewToken.eTokenType)
{
if( bPreStartLinkFound )
- bPreStartLinkFound = false;
+ bPreStartLinkFound = sal_False;
else
{
- bPreEndLinkFound = false;
- pExchange = const_cast<Control*>(&(*it));
+ bPreEndLinkFound = sal_False;
+ pExchange = pControl;
}
}
}
-
- ++it;
}
bool bPostLinkStartFound = false;
if(!bPreStartLinkFound && !bPreEndLinkFound)
{
- while(it != aControlList.end())
+ for( ; it != aControlList.end(); ++it )
{
- if( (&(*it)) != pActiveCtrl &&
- WINDOW_EDIT != it->GetType())
+ pControl = *it;
+
+ if( pControl != pActiveCtrl &&
+ WINDOW_EDIT != pControl->GetType())
{
const SwFormToken& rNewToken =
- reinterpret_cast<const SwTOXButton&>(*it).GetFormToken();
+ ((SwTOXButton*)pControl)->GetFormToken();
if( TOKEN_LINK_START == rNewToken.eTokenType )
{
if(bPostLinkStartFound)
break;
- bPostLinkStartFound = true;
- pExchange = const_cast<Control*>(&(*it));
+ bPostLinkStartFound = sal_True;
+ pExchange = pControl;
}
else if(TOKEN_LINK_END == rNewToken.eTokenType )
{
if(bPostLinkStartFound)
{
- bPostLinkStartFound = false;
+ bPostLinkStartFound = sal_False;
pExchange = 0;
}
break;
}
}
-
- ++it;
}
}
@@ -3142,7 +3141,6 @@ void SwTokenWindow::InsertAtSelection(
if(bPostLinkStartFound)
{
OSL_ENSURE(pExchange, "no control to exchange?");
-
if(pExchange)
{
((SwTOXButton*)pExchange)->SetLinkEnd();
@@ -3164,7 +3162,9 @@ void SwTokenWindow::InsertAtSelection(
//if the active control is text then insert a new button at the selection
//else replace the button
- ctrl_iterator iterActive = FindControl(aControlList,pActiveCtrl);
+ ctrl_iterator iterActive = std::find(aControlList.begin(),
+ aControlList.end(), pActiveCtrl);
+
ctrl_iterator iterInsert = iterActive;
Size aControlSize(GetOutputSizePixel());
@@ -3187,7 +3187,7 @@ void SwTokenWindow::InsertAtSelection(
SwFormToken aTmpToken(TOKEN_TEXT);
SwTOXEdit* pEdit = new SwTOXEdit(&aCtrlParentWin, this, aTmpToken);
- aControlList.insert(iterInsert,pEdit);
+ aControlList.insert(iterInsert, pEdit);
pEdit->SetText(sRight);
pEdit->SetSizePixel(aControlSize);
@@ -3199,13 +3199,15 @@ void SwTokenWindow::InsertAtSelection(
}
else
{
- pActiveCtrl->Hide();
aControlList.erase(iterActive);
+ pActiveCtrl->Hide();
+ delete pActiveCtrl;
}
//now the new button
SwTOXButton* pButton = new SwTOXButton(&aCtrlParentWin, this, aToInsertToken);
- aControlList.insert(iterInsert,pButton);
+
+ aControlList.insert(iterInsert, pButton);
pButton->SetPrevNextLink(LINK(this, SwTokenWindow, NextItemBtnHdl));
pButton->SetGetFocusHdl(LINK(this, SwTokenWindow, TbxFocusBtnHdl));
@@ -3237,7 +3239,7 @@ void SwTokenWindow::RemoveControl(SwTOXButton* pDel, sal_Bool bInternalCall )
if(bInternalCall && TOX_AUTHORITIES == pForm->GetTOXType())
m_pParent->PreTokenButtonRemoved(pDel->GetFormToken());
- ctrl_iterator it = FindControl(aControlList,pDel);
+ ctrl_iterator it = std::find(aControlList.begin(), aControlList.end(), pDel);
OSL_ENSURE(it != aControlList.end(), "Control does not exist!");
@@ -3246,22 +3248,26 @@ void SwTokenWindow::RemoveControl(SwTOXButton* pDel, sal_Bool bInternalCall )
OSL_ENSURE(it != aControlList.begin() && it != aControlList.end() - 1,
"Button at first or last position?");
- Control *pLeftCtrl = const_cast<Control*>(&(*(it-1)));
- Control *pRightCtrl = const_cast<Control*>(&(*(it+1)));
+ ctrl_iterator itLeft = it, itRight = it;
+ --itLeft;
+ ++itRight;
+ Control *pLeftEdit = *itLeft;
+ Control *pRightEdit = *itRight;
- String sTemp(((SwTOXEdit*)pLeftCtrl)->GetText());
- sTemp += ((SwTOXEdit*)pRightCtrl)->GetText();
- ((SwTOXEdit*)pLeftCtrl)->SetText(sTemp);
- ((SwTOXEdit*)pLeftCtrl)->AdjustSize();
+ String sTemp(((SwTOXEdit*)pLeftEdit)->GetText());
+ sTemp += ((SwTOXEdit*)pRightEdit)->GetText();
+ ((SwTOXEdit*)pLeftEdit)->SetText(sTemp);
+ ((SwTOXEdit*)pLeftEdit)->AdjustSize();
- aControlList.erase(it+1);
- aControlList.erase(it);
+ aControlList.erase(itRight);
+ delete pRightEdit;
+ aControlList.erase(it);
pActiveCtrl->Hide();
+ delete pActiveCtrl;
- SetActiveControl(pLeftCtrl);
+ SetActiveControl(pLeftEdit);
AdjustPositions();
-
if(aModifyHdl.IsSet())
aModifyHdl.Call(0);
}
@@ -3271,14 +3277,17 @@ void SwTokenWindow::AdjustPositions()
if(aControlList.size() > 1)
{
ctrl_iterator it = aControlList.begin();
+ Control* pCtrl = *it;
+ ++it;
- Point aNextPos = it->GetPosPixel();
- aNextPos.X() += it->GetSizePixel().Width();
+ Point aNextPos = pCtrl->GetPosPixel();
+ aNextPos.X() += pCtrl->GetSizePixel().Width();
- for (++it; it != aControlList.end(); ++it)
- {
- it->SetPosPixel(aNextPos);
- aNextPos.X() += it->GetSizePixel().Width();
+ for(; it != aControlList.end(); ++it)
+ {
+ pCtrl = *it;
+ pCtrl->SetPosPixel(aNextPos);
+ aNextPos.X() += pCtrl->GetSizePixel().Width();
}
AdjustScrolling();
@@ -3290,10 +3299,12 @@ void SwTokenWindow::MoveControls(long nOffset)
// move the complete list
for (ctrl_iterator it = aControlList.begin(); it != aControlList.end(); ++it)
{
- Point aPos = it->GetPosPixel();
+ Control *pCtrl = *it;
+
+ Point aPos = pCtrl->GetPosPixel();
aPos.X() += nOffset;
- it->SetPosPixel(aPos);
+ pCtrl->SetPosPixel(aPos);
}
}
@@ -3302,19 +3313,21 @@ void SwTokenWindow::AdjustScrolling()
if(aControlList.size() > 1)
{
//validate scroll buttons
- ctrl_const_reverse_iterator iterLast = aControlList.rbegin();
- ctrl_const_iterator iterFirst = aControlList.begin();
+ Control* pFirstCtrl = *(aControlList.begin());
+ Control* pLastCtrl = *(aControlList.rbegin());
long nSpace = aCtrlParentWin.GetSizePixel().Width();
- long nWidth = iterLast->GetPosPixel().X() - iterFirst->GetPosPixel().X()
- + iterLast->GetSizePixel().Width();
+ long nWidth = pLastCtrl->GetPosPixel().X() - pFirstCtrl->GetPosPixel().X()
+ + pLastCtrl->GetSizePixel().Width();
bool bEnable = nWidth > nSpace;
+
//the active control must be visible
if(bEnable && pActiveCtrl)
{
- long nMove = 0;
Point aActivePos(pActiveCtrl->GetPosPixel());
+ long nMove = 0;
+
if(aActivePos.X() < 0)
nMove = -aActivePos.X();
else if((aActivePos.X() + pActiveCtrl->GetSizePixel().Width()) > nSpace)
@@ -3323,16 +3336,20 @@ void SwTokenWindow::AdjustScrolling()
if(nMove)
MoveControls(nMove);
- aLeftScrollWin.Enable(iterFirst->GetPosPixel().X() < 0);
- aRightScrollWin.Enable((iterLast->GetPosPixel().X() + iterLast->GetSizePixel().Width()) > nSpace);
+ aLeftScrollWin.Enable(pFirstCtrl->GetPosPixel().X() < 0);
+
+ aRightScrollWin.Enable((pLastCtrl->GetPosPixel().X() + pLastCtrl->GetSizePixel().Width()) > nSpace);
}
else
{
- //if the control fits into the space then the first control must be at postion 0
- long nFirstPos = iterFirst->GetPosPixel().X();
+ if(pFirstCtrl)
+ {
+ //if the control fits into the space then the first control must be at postion 0
+ long nFirstPos = pFirstCtrl->GetPosPixel().X();
- if(nFirstPos != 0)
- MoveControls(-nFirstPos);
+ if(nFirstPos != 0)
+ MoveControls(-nFirstPos);
+ }
aRightScrollWin.Enable(false);
aLeftScrollWin.Enable(false);
@@ -3346,7 +3363,6 @@ IMPL_LINK(SwTokenWindow, ScrollHdl, ImageButton*, pBtn )
return 0;
const long nSpace = aCtrlParentWin.GetSizePixel().Width();
-
#if OSL_DEBUG_LEVEL > 1
//find all start/end positions and print it
String sMessage(String::CreateFromAscii("Space: "));
@@ -3355,8 +3371,10 @@ IMPL_LINK(SwTokenWindow, ScrollHdl, ImageButton*, pBtn )
for (ctrl_const_iterator it = aControlList.begin(); it != aControlList.end(); ++it)
{
- long nDebugXPos = it->GetPosPixel().X();
- long nDebugWidth = it->GetSizePixel().Width();
+ Control *pDebugCtrl = *it;
+
+ long nDebugXPos = pDebugCtrl->GetPosPixel().X();
+ long nDebugWidth = pDebugCtrl->GetSizePixel().Width();
sMessage += String::CreateFromInt32( nDebugXPos );
sMessage += String::CreateFromAscii(" ");
@@ -3372,11 +3390,13 @@ IMPL_LINK(SwTokenWindow, ScrollHdl, ImageButton*, pBtn )
//find the first completely visible control (left edge visible)
for (ctrl_iterator it = aControlList.begin(); it != aControlList.end(); ++it)
{
- long nXPos = it->GetPosPixel().X();
+ Control *pCtrl = *it;
+
+ long nXPos = pCtrl->GetPosPixel().X();
if (nXPos >= 0)
{
- if(it == aControlList.begin())
+ if (it == aControlList.begin())
{
//move the current control to the left edge
nMove = -nXPos;
@@ -3384,8 +3404,11 @@ IMPL_LINK(SwTokenWindow, ScrollHdl, ImageButton*, pBtn )
else
{
//move the left neighbor to the start position
- ctrl_iterator iterLeft = it-1;
- nMove = -iterLeft->GetPosPixel().X();
+ ctrl_iterator itLeft = it;
+ --itLeft;
+ Control *pLeft = *itLeft;
+
+ nMove = -pLeft->GetPosPixel().X();
}
break;
@@ -3397,16 +3420,20 @@ IMPL_LINK(SwTokenWindow, ScrollHdl, ImageButton*, pBtn )
//find the first completely visible control (right edge visible)
for (ctrl_reverse_iterator it = aControlList.rbegin(); it != aControlList.rend(); ++it)
{
- long nCtrlWidth = it->GetSizePixel().Width();
- long nXPos = it->GetPosPixel().X() + nCtrlWidth;
+ Control *pCtrl = *it;
+
+ long nCtrlWidth = pCtrl->GetSizePixel().Width();
+ long nXPos = pCtrl->GetPosPixel().X() + nCtrlWidth;
if (nXPos <= nSpace)
{
if (it != aControlList.rbegin())
{
//move the right neighbor to the right edge right aligned
- ctrl_reverse_iterator iterRight = it-1;
- nMove = nSpace - iterRight->GetPosPixel().X() - iterRight->GetSizePixel().Width();
+ ctrl_reverse_iterator itRight = it;
+ --it;
+ Control *pRight = *itRight;
+ nMove = nSpace - pRight->GetPosPixel().X() - pRight->GetSizePixel().Width();
}
break;
@@ -3419,20 +3446,23 @@ IMPL_LINK(SwTokenWindow, ScrollHdl, ImageButton*, pBtn )
if(nMove)
{
// move the complete list
+
+ Control *pCtrl = 0;
+
for (ctrl_iterator it = aControlList.begin(); it != aControlList.end(); ++it)
{
- Point aPos = it->GetPosPixel();
+ pCtrl = *it;
+ Point aPos = pCtrl->GetPosPixel();
aPos.X() += nMove;
-
- it->SetPosPixel(aPos);
+ pCtrl->SetPosPixel(aPos);
}
- ctrl_iterator iterCtrl = aControlList.begin();
- aLeftScrollWin.Enable(iterCtrl->GetPosPixel().X() < 0);
+ pCtrl = *(aControlList.begin());
+ aLeftScrollWin.Enable(pCtrl->GetPosPixel().X() < 0);
- iterCtrl = aControlList.end()-1;
- aRightScrollWin.Enable((iterCtrl->GetPosPixel().X() + iterCtrl->GetSizePixel().Width()) > nSpace);
+ pCtrl = *(aControlList.rbegin());
+ aRightScrollWin.Enable((pCtrl->GetPosPixel().X() + pCtrl->GetSizePixel().Width()) > nSpace);
#if OSL_DEBUG_LEVEL > 1
sMessage.AppendAscii("Move: ");
@@ -3447,14 +3477,14 @@ IMPL_LINK(SwTokenWindow, ScrollHdl, ImageButton*, pBtn )
String SwTokenWindow::GetPattern() const
{
String sRet;
- const Control *ctrl = 0;
+
for (ctrl_const_iterator it = aControlList.begin(); it != aControlList.end(); ++it)
{
- ctrl = &(*it);
+ const Control *pCtrl = *it;
- const SwFormToken& rNewToken = WINDOW_EDIT == ctrl->GetType()
- ? ((SwTOXEdit*)ctrl)->GetFormToken()
- : ((SwTOXButton*)ctrl)->GetFormToken();
+ const SwFormToken &rNewToken = pCtrl->GetType() == WINDOW_EDIT
+ ? ((SwTOXEdit*)pCtrl)->GetFormToken()
+ : ((SwTOXButton*)pCtrl)->GetFormToken();
//TODO: prevent input of TOX_STYLE_DELIMITER in KeyInput
sRet += rNewToken.GetString();
@@ -3469,15 +3499,14 @@ String SwTokenWindow::GetPattern() const
sal_Bool SwTokenWindow::Contains(FormTokenType eSearchFor) const
{
bool bRet = false;
- const Control* pControl = 0;
for (ctrl_const_iterator it = aControlList.begin(); it != aControlList.end(); ++it)
{
- pControl = &(*it);
+ const Control *pCtrl = *it;
- const SwFormToken& rNewToken = WINDOW_EDIT == pControl->GetType()
- ? ((SwTOXEdit*)pControl)->GetFormToken()
- : ((SwTOXButton*)pControl)->GetFormToken();
+ const SwFormToken &rNewToken = pCtrl->GetType() == WINDOW_EDIT
+ ? ((SwTOXEdit*)pCtrl)->GetFormToken()
+ : ((SwTOXButton*)pCtrl)->GetFormToken();
if (eSearchFor == rNewToken.eTokenType)
{
@@ -3563,24 +3592,22 @@ IMPL_LINK(SwTokenWindow, EditResize, Edit*, pEdit)
IMPL_LINK(SwTokenWindow, NextItemHdl, SwTOXEdit*, pEdit)
{
- ctrl_iterator it = FindControl(aControlList,pEdit);
+ ctrl_iterator it = std::find(aControlList.begin(),aControlList.end(),pEdit);
if (it == aControlList.end())
return 0;
- ctrl_iterator lastIter = aControlList.end()-1;
+ ctrl_iterator itTest = it;
+ ++itTest;
if ((it != aControlList.begin() && !pEdit->IsNextControl()) ||
- (it != lastIter && pEdit->IsNextControl()))
+ (itTest != aControlList.end() && pEdit->IsNextControl()))
{
ctrl_iterator iterFocus = it;
-
pEdit->IsNextControl() ? ++iterFocus : --iterFocus;
- Control *pCtrlFocus = &(*iterFocus);
-
+ Control *pCtrlFocus = *iterFocus;
pCtrlFocus->GrabFocus();
-
reinterpret_cast<SwTOXButton*>(pCtrlFocus)->Check();
AdjustScrolling();
@@ -3593,7 +3620,7 @@ IMPL_LINK(SwTokenWindow, TbxFocusHdl, SwTOXEdit*, pEdit)
{
for (ctrl_iterator it = aControlList.begin(); it != aControlList.end(); ++it)
{
- Control *pCtrl = &(*it);
+ Control *pCtrl = *it;
if (pCtrl && pCtrl->GetType() != WINDOW_EDIT)
reinterpret_cast<SwTOXButton*>(pCtrl)->Check(false);
@@ -3606,31 +3633,29 @@ IMPL_LINK(SwTokenWindow, TbxFocusHdl, SwTOXEdit*, pEdit)
IMPL_LINK(SwTokenWindow, NextItemBtnHdl, SwTOXButton*, pBtn )
{
- ctrl_iterator iter = FindControl(aControlList,pBtn);
+ ctrl_iterator it = std::find(aControlList.begin(),aControlList.end(),pBtn);
- if (iter == aControlList.end())
+ if (it == aControlList.end())
return 0;
- ctrl_iterator lastIter = aControlList.end()-1;
+ ctrl_iterator itTest = it;
+ ++itTest;
- if((iter != aControlList.begin() && !pBtn->IsNextControl()) ||
- (iter != lastIter && pBtn->IsNextControl()))
+ if (!pBtn->IsNextControl() || (itTest != aControlList.end() && pBtn->IsNextControl()))
{
- bool bNext = pBtn->IsNextControl();
-
- ctrl_iterator iterFocus = iter;
+ bool isNext = pBtn->IsNextControl();
- bNext ? ++iterFocus : --iterFocus;
-
- Control *pCtrlFocus = &(*iterFocus);
+ ctrl_iterator iterFocus = it;
+ isNext ? ++iterFocus : --iterFocus;
+ Control *pCtrlFocus = *iterFocus;
pCtrlFocus->GrabFocus();
-
Selection aSel(0,0);
- if(!bNext)
+ if (!isNext)
{
- sal_uInt16 nLen = ((SwTOXEdit*)pCtrlFocus)->GetText().Len();
+ sal_uInt16 nLen = reinterpret_cast<SwTOXEdit*>(pCtrlFocus)->GetText().Len();
+
aSel.A() = nLen;
aSel.B() = nLen;
}
@@ -3647,10 +3672,9 @@ IMPL_LINK(SwTokenWindow, NextItemBtnHdl, SwTOXButton*, pBtn )
IMPL_LINK(SwTokenWindow, TbxFocusBtnHdl, SwTOXButton*, pBtn )
{
- Control *pControl = 0;
- for (ctrl_iterator sit = aControlList.begin(); sit != aControlList.end(); ++sit)
+ for (ctrl_iterator it = aControlList.begin(); it != aControlList.end(); ++it)
{
- pControl = &(*sit);
+ Control *pControl = *it;
if (pControl && WINDOW_EDIT != pControl->GetType())
reinterpret_cast<SwTOXButton*>(pControl)->Check(pBtn == pControl);
@@ -3667,11 +3691,14 @@ void SwTokenWindow::GetFocus()
{
if (!aControlList.empty())
{
- Control *pFirst = &(*aControlList.begin());
+ Control *pFirst = *aControlList.begin();
- pFirst->GrabFocus();
- SetActiveControl(pFirst);
- AdjustScrolling();
+ if (pFirst)
+ {
+ pFirst->GrabFocus();
+ SetActiveControl(pFirst);
+ AdjustScrolling();
+ }
}
}
}