Return-Path: X-Original-To: apmail-openoffice-commits-archive@www.apache.org Delivered-To: apmail-openoffice-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2342F104E1 for ; Fri, 13 Sep 2013 16:05:40 +0000 (UTC) Received: (qmail 33440 invoked by uid 500); 13 Sep 2013 12:53:49 -0000 Delivered-To: apmail-openoffice-commits-archive@openoffice.apache.org Received: (qmail 33331 invoked by uid 500); 13 Sep 2013 12:53:43 -0000 Mailing-List: contact commits-help@openoffice.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openoffice.apache.org Delivered-To: mailing list commits@openoffice.apache.org Received: (qmail 33182 invoked by uid 99); 13 Sep 2013 12:53:26 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Sep 2013 12:53:26 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,FILL_THIS_FORM X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Sep 2013 12:53:21 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 3F7492388A33; Fri, 13 Sep 2013 12:53:01 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1522906 [1/2] - in /openoffice/branches/alg/aw080/main: chart2/source/controller/drawinglayer/ chart2/source/controller/inc/ chart2/source/controller/main/ filter/inc/filter/msfilter/ reportdesign/inc/ reportdesign/source/core/inc/ reportd... Date: Fri, 13 Sep 2013 12:52:59 -0000 To: commits@openoffice.apache.org From: alg@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130913125301.3F7492388A33@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: alg Date: Fri Sep 13 12:52:57 2013 New Revision: 1522906 URL: http://svn.apache.org/r1522906 Log: selection rework, fixes for virtual function warnings Modified: openoffice/branches/alg/aw080/main/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx openoffice/branches/alg/aw080/main/chart2/source/controller/inc/DrawViewWrapper.hxx openoffice/branches/alg/aw080/main/chart2/source/controller/main/SelectionHelper.cxx openoffice/branches/alg/aw080/main/filter/inc/filter/msfilter/escherex.hxx openoffice/branches/alg/aw080/main/reportdesign/inc/RptModel.hxx openoffice/branches/alg/aw080/main/reportdesign/source/core/inc/ReportUndoFactory.hxx openoffice/branches/alg/aw080/main/reportdesign/source/core/sdr/ReportUndoFactory.cxx openoffice/branches/alg/aw080/main/reportdesign/source/core/sdr/RptModel.cxx openoffice/branches/alg/aw080/main/reportdesign/source/ui/report/SectionView.cxx openoffice/branches/alg/aw080/main/reportdesign/source/ui/report/ViewsWindow.cxx openoffice/branches/alg/aw080/main/sc/source/ui/view/tabview5.cxx openoffice/branches/alg/aw080/main/sc/source/ui/view/tabvwshb.cxx openoffice/branches/alg/aw080/main/sd/source/ui/animations/CustomAnimationPane.cxx openoffice/branches/alg/aw080/main/sd/source/ui/animations/motionpathtag.cxx openoffice/branches/alg/aw080/main/sd/source/ui/annotations/annotationmanager.cxx openoffice/branches/alg/aw080/main/sd/source/ui/annotations/annotationtag.cxx openoffice/branches/alg/aw080/main/sd/source/ui/func/fucopy.cxx openoffice/branches/alg/aw080/main/sd/source/ui/func/fusel.cxx openoffice/branches/alg/aw080/main/sd/source/ui/func/futext.cxx openoffice/branches/alg/aw080/main/sd/source/ui/func/smarttag.cxx openoffice/branches/alg/aw080/main/sd/source/ui/table/tableobjectbar.cxx openoffice/branches/alg/aw080/main/sd/source/ui/unoidl/unopage.cxx openoffice/branches/alg/aw080/main/sd/source/ui/view/drviews1.cxx openoffice/branches/alg/aw080/main/sd/source/ui/view/sdwindow.cxx openoffice/branches/alg/aw080/main/sd/source/ui/view/viewoverlaymanager.cxx openoffice/branches/alg/aw080/main/svx/inc/svx/sdrselection.hxx openoffice/branches/alg/aw080/main/svx/inc/svx/svddrgv.hxx openoffice/branches/alg/aw080/main/svx/inc/svx/svdhdl.hxx openoffice/branches/alg/aw080/main/svx/inc/svx/svdmrkv.hxx openoffice/branches/alg/aw080/main/svx/source/engine3d/view3d.cxx openoffice/branches/alg/aw080/main/svx/source/svdraw/sdrselection.cxx openoffice/branches/alg/aw080/main/svx/source/svdraw/svddrgv.cxx openoffice/branches/alg/aw080/main/svx/source/svdraw/svdedxv.cxx openoffice/branches/alg/aw080/main/svx/source/svdraw/svdglev.cxx openoffice/branches/alg/aw080/main/svx/source/svdraw/svdhdl.cxx openoffice/branches/alg/aw080/main/svx/source/svdraw/svdmrkv.cxx openoffice/branches/alg/aw080/main/svx/source/svdraw/svdmrkv1.cxx openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpagv.cxx openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpoev.cxx openoffice/branches/alg/aw080/main/svx/source/toolbars/fontworkbar.cxx openoffice/branches/alg/aw080/main/svx/source/unodraw/unopage.cxx openoffice/branches/alg/aw080/main/sw/inc/dcontact.hxx openoffice/branches/alg/aw080/main/sw/source/core/draw/dcontact.cxx openoffice/branches/alg/aw080/main/sw/source/core/draw/dflyobj.cxx openoffice/branches/alg/aw080/main/sw/source/core/inc/dflyobj.hxx openoffice/branches/alg/aw080/main/sw/source/filter/ww8/attributeoutputbase.hxx openoffice/branches/alg/aw080/main/sw/source/filter/ww8/docxattributeoutput.cxx openoffice/branches/alg/aw080/main/sw/source/filter/ww8/docxattributeoutput.hxx openoffice/branches/alg/aw080/main/sw/source/filter/ww8/rtfsdrexport.cxx openoffice/branches/alg/aw080/main/sw/source/filter/ww8/rtfsdrexport.hxx openoffice/branches/alg/aw080/main/sw/source/filter/ww8/wrtw8num.cxx Modified: openoffice/branches/alg/aw080/main/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx (original) +++ openoffice/branches/alg/aw080/main/chart2/source/controller/drawinglayer/DrawViewWrapper.cxx Fri Sep 13 12:52:57 2013 @@ -220,17 +220,12 @@ SdrPageView* DrawViewWrapper::GetPageVie }; //virtual -void DrawViewWrapper::SetMarkHandles() +void DrawViewWrapper::CreateMarkHandles(SdrHdlList& rTarget) { - // hack for chart: It creates ominous own handles, and that by directly manipulating - // the normally not accessible maViewHandleList. For now, allow access to it by casting - // it to non-const - const SdrHdlList& rHdlList = GetHdlList(); - - if( m_pMarkHandleProvider && m_pMarkHandleProvider->getMarkHandles( const_cast< SdrHdlList& >(rHdlList) ) ) + if( m_pMarkHandleProvider && m_pMarkHandleProvider->getMarkHandles( rTarget ) ) return; else - SdrView::SetMarkHandles(); + SdrView::CreateMarkHandles(rTarget); } SdrObject* DrawViewWrapper::getHitObject( const basegfx::B2DPoint& rPnt ) const Modified: openoffice/branches/alg/aw080/main/chart2/source/controller/inc/DrawViewWrapper.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/chart2/source/controller/inc/DrawViewWrapper.hxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/chart2/source/controller/inc/DrawViewWrapper.hxx (original) +++ openoffice/branches/alg/aw080/main/chart2/source/controller/inc/DrawViewWrapper.hxx Fri Sep 13 12:52:57 2013 @@ -48,6 +48,10 @@ public: class DrawViewWrapper : public E3dView { +private: + //fill list of selection handles + virtual void CreateMarkHandles(SdrHdlList& rTarget); + public: DrawViewWrapper(SdrModel& rModel, OutputDevice* pOut, bool bPaintPageForEditMode); virtual ~DrawViewWrapper(); @@ -59,9 +63,6 @@ public: void attachParentReferenceDevice( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & xChartModel ); - //fill list of selection handles 'maViewHandleList' - virtual void SetMarkHandles(); - SdrPageView* GetPageView() const; SdrObject* getHitObject( const basegfx::B2DPoint& rPnt ) const; Modified: openoffice/branches/alg/aw080/main/chart2/source/controller/main/SelectionHelper.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/chart2/source/controller/main/SelectionHelper.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/chart2/source/controller/main/SelectionHelper.cxx (original) +++ openoffice/branches/alg/aw080/main/chart2/source/controller/main/SelectionHelper.cxx Fri Sep 13 12:52:57 2013 @@ -622,7 +622,6 @@ bool SelectionHelper::getMarkHandles( Sd //that object should be used to create handles from if( m_pMarkObj && m_pMarkObj != m_pSelectedObj) { - rHdlList.Clear(); SdrPathObj* pSdrPathObj = dynamic_cast< SdrPathObj* >(m_pMarkObj); if( pSdrPathObj ) @@ -648,8 +647,6 @@ bool SelectionHelper::getMarkHandles( Sd //@todo: //add and document good marking defaults ... - rHdlList.Clear(); - SdrObject* pObj = m_pSelectedObj; if(!pObj) return false; Modified: openoffice/branches/alg/aw080/main/filter/inc/filter/msfilter/escherex.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/filter/inc/filter/msfilter/escherex.hxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/filter/inc/filter/msfilter/escherex.hxx (original) +++ openoffice/branches/alg/aw080/main/filter/inc/filter/msfilter/escherex.hxx Fri Sep 13 12:52:57 2013 @@ -1568,7 +1568,7 @@ public: // ein ESCHER_Sp wird geschrieben ( Ein ESCHER_DgContainer muss dazu geoeffnet sein !!) virtual void AddShape( sal_uInt32 nShpInstance, sal_uInt32 nFlagIds, sal_uInt32 nShapeID = 0 ); - virtual void Commit( + virtual void Commit( EscherPropertyContainer& rProps, const basegfx::B2DRange& rObjectRange); Modified: openoffice/branches/alg/aw080/main/reportdesign/inc/RptModel.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/reportdesign/inc/RptModel.hxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/reportdesign/inc/RptModel.hxx (original) +++ openoffice/branches/alg/aw080/main/reportdesign/inc/RptModel.hxx Fri Sep 13 12:52:57 2013 @@ -63,10 +63,10 @@ public: OReportModel(::reportdesign::OReportDefinition* _pReportDefinition); virtual ~OReportModel(); - virtual void SetChanged(sal_Bool bFlg = sal_True); + virtual void SetChanged(bool bFlg = true); virtual SdrPage* AllocPage(bool bMasterPage); virtual Window* GetCurDocViewWin(); - virtual SdrPage* RemovePage(sal_uInt16 nPgNum); + virtual SdrPage* RemovePage(sal_uInt32 nPgNum); /** returns the numbering type that is used to format page fields in drawing shapes */ virtual SvxNumType GetPageNumType() const; Modified: openoffice/branches/alg/aw080/main/reportdesign/source/core/inc/ReportUndoFactory.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/reportdesign/source/core/inc/ReportUndoFactory.hxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/reportdesign/source/core/inc/ReportUndoFactory.hxx (original) +++ openoffice/branches/alg/aw080/main/reportdesign/source/core/inc/ReportUndoFactory.hxx Fri Sep 13 12:52:57 2013 @@ -58,8 +58,8 @@ namespace rptui virtual SdrUndoAction* CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText ); // layer - virtual SdrUndoAction* CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel); - virtual SdrUndoAction* CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel); + virtual SdrUndoAction* CreateUndoNewLayer(sal_uInt32 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel); + virtual SdrUndoAction* CreateUndoDeleteLayer(sal_uInt32 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel); // virtual SdrUndoAction* CreateUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1); // page Modified: openoffice/branches/alg/aw080/main/reportdesign/source/core/sdr/ReportUndoFactory.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/reportdesign/source/core/sdr/ReportUndoFactory.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/reportdesign/source/core/sdr/ReportUndoFactory.cxx (original) +++ openoffice/branches/alg/aw080/main/reportdesign/source/core/sdr/ReportUndoFactory.cxx Fri Sep 13 12:52:57 2013 @@ -124,12 +124,12 @@ SdrUndoAction* OReportUndoFactory::Creat } // layer -SdrUndoAction* OReportUndoFactory::CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) +SdrUndoAction* OReportUndoFactory::CreateUndoNewLayer(sal_uInt32 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) { return m_pUndoFactory->CreateUndoNewLayer( nLayerNum, rNewLayerAdmin, rNewModel ); } -SdrUndoAction* OReportUndoFactory::CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) +SdrUndoAction* OReportUndoFactory::CreateUndoDeleteLayer(sal_uInt32 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel) { return m_pUndoFactory->CreateUndoDeleteLayer( nLayerNum, rNewLayerAdmin, rNewModel ); } Modified: openoffice/branches/alg/aw080/main/reportdesign/source/core/sdr/RptModel.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/reportdesign/source/core/sdr/RptModel.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/reportdesign/source/core/sdr/RptModel.cxx (original) +++ openoffice/branches/alg/aw080/main/reportdesign/source/core/sdr/RptModel.cxx Fri Sep 13 12:52:57 2013 @@ -100,7 +100,7 @@ SdrPage* OReportModel::AllocPage(bool /* //---------------------------------------------------------------------------- -void OReportModel::SetChanged( sal_Bool bChanged ) +void OReportModel::SetChanged( bool bChanged ) { SdrModel::SetChanged( bChanged ); SetModified( bChanged ); @@ -125,7 +125,7 @@ void OReportModel::SetModified(sal_Bool m_pController->setModified(_bModified); } // ----------------------------------------------------------------------------- -SdrPage* OReportModel::RemovePage(sal_uInt16 nPgNum) +SdrPage* OReportModel::RemovePage(sal_uInt32 nPgNum) { OReportPage* pPage = dynamic_cast(SdrModel::RemovePage(nPgNum)); //if ( pPage ) Modified: openoffice/branches/alg/aw080/main/reportdesign/source/ui/report/SectionView.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/reportdesign/source/ui/report/SectionView.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/reportdesign/source/ui/report/SectionView.cxx (original) +++ openoffice/branches/alg/aw080/main/reportdesign/source/ui/report/SectionView.cxx Fri Sep 13 12:52:57 2013 @@ -157,13 +157,15 @@ void OSectionView::Notify( SfxBroadcaste { const SdrObject* pObj = pSdrHint->GetSdrHintObject(); const SdrHintKind eKind = pSdrHint->GetSdrHintKind(); - // check for change of selected object - if((HINT_OBJCHG_MOVE == eKind || HINT_OBJCHG_RESIZE == eKind || HINT_OBJCHG_ATTR == eKind) - && pObj && IsObjMarked(*pObj)) - { - SetMarkHandles(); - } - else if ( eKind == HINT_OBJREMOVED ) + // TTTT: Should be handled by Selection::Notify now + //// check for change of selected object + //if((HINT_OBJCHG_MOVE == eKind || HINT_OBJCHG_RESIZE == eKind || HINT_OBJCHG_ATTR == eKind) + // && pObj && IsObjMarked(*pObj)) + //{ + // RecreateAllMarkHandles(); + //} + //else + if ( eKind == HINT_OBJREMOVED ) { ObjectRemovedInAliveMode(pObj); } Modified: openoffice/branches/alg/aw080/main/reportdesign/source/ui/report/ViewsWindow.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/reportdesign/source/ui/report/ViewsWindow.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/reportdesign/source/ui/report/ViewsWindow.cxx (original) +++ openoffice/branches/alg/aw080/main/reportdesign/source/ui/report/ViewsWindow.cxx Fri Sep 13 12:52:57 2013 @@ -953,7 +953,7 @@ void OViewsWindow::alignMarkedObjects(sa } } - pView->SetMarkHandles(); + pView->RecreateAllMarkHandles(); } } // ----------------------------------------------------------------------------- @@ -1788,7 +1788,7 @@ void OViewsWindow::handleKey(const KeyCo } } - rView.SetMarkHandles(); + rView.RecreateAllMarkHandles(); } } } Modified: openoffice/branches/alg/aw080/main/sc/source/ui/view/tabview5.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sc/source/ui/view/tabview5.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sc/source/ui/view/tabview5.cxx (original) +++ openoffice/branches/alg/aw080/main/sc/source/ui/view/tabview5.cxx Fri Sep 13 12:52:57 2013 @@ -485,7 +485,7 @@ void ScTabView::UpdateAnchorHandles() { if ( pDrawView ) { - pDrawView->SetMarkHandles(); + pDrawView->RecreateAllMarkHandles(); } } Modified: openoffice/branches/alg/aw080/main/sc/source/ui/view/tabvwshb.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sc/source/ui/view/tabvwshb.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sc/source/ui/view/tabvwshb.cxx (original) +++ openoffice/branches/alg/aw080/main/sc/source/ui/view/tabvwshb.cxx Fri Sep 13 12:52:57 2013 @@ -225,7 +225,8 @@ sal_Bool ScTabViewShell::ActivateObject( // #i118524# refresh handles to suppress for activated OLE if(GetSdrView()) { - GetSdrView()->forceSelectionChange(); + // TTTT: Is this needed? Check for it... + GetSdrView()->handleSelectionChange(); } //! SetDocumentName sollte schon im Sfx passieren ??? //TODO/LATER: how "SetDocumentName"? Modified: openoffice/branches/alg/aw080/main/sd/source/ui/animations/CustomAnimationPane.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/animations/CustomAnimationPane.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/animations/CustomAnimationPane.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/animations/CustomAnimationPane.cxx Fri Sep 13 12:52:57 2013 @@ -1030,7 +1030,7 @@ void CustomAnimationPane::updateMotionPa if( bChanges && pView ) { - pView->SetMarkHandles(); + pView->RecreateAllMarkHandles(); } } Modified: openoffice/branches/alg/aw080/main/sd/source/ui/animations/motionpathtag.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/animations/motionpathtag.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/animations/motionpathtag.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/animations/motionpathtag.cxx Fri Sep 13 12:52:57 2013 @@ -459,7 +459,7 @@ void MotionPathTag::MovePath( double fDX { mpPathObj->setSdrObjectTransformation(basegfx::tools::createTranslateB2DHomMatrix(fDX, fDY) * mpPathObj->getSdrObjectTransformation()); // sdr::legacy::MoveSdrObject(*mpPathObj, Size( nDX, nDY ) ); - mrView.SetMarkHandles(); // TTTT: Neded? + mrView.RecreateAllMarkHandles(); // TTTT: Neded? } } @@ -517,7 +517,7 @@ bool MotionPathTag::MouseButtonDown( con if(0xffffffff != nInsPointNum) { mrView.MarkPoints(0, true); // unmarkall - mrView.SetMarkHandles(); + mrView.RecreateAllMarkHandles(); bool bRet = mrView.BegDragObj(aMDPos, mrView.GetHdlByIndex(nInsPointNum+1), 0.0, new PathDragObjOwn( mrView ) ); @@ -1023,7 +1023,7 @@ void MotionPathTag::disposing() { SdrPathObj* pPathObj = mpPathObj; mpPathObj = 0; - mrView.SetMarkHandles(); + mrView.RecreateAllMarkHandles(); deleteSdrObjectSafeAndClearPointer(pPathObj); } @@ -1071,7 +1071,7 @@ void MotionPathTag::DeleteMarkedPoints() } mrView.MarkPoints(0, true); // unmarkall - mrView.SetMarkHandles(); + mrView.RecreateAllMarkHandles(); } } } @@ -1120,7 +1120,7 @@ void MotionPathTag::SetMarkedSegmentsKin if(sdr::PolyPolygonEditor::SetSegmentsKind( aPolyPolygon, eKind, maSelectedPoints ) ) { mpPathObj->setB2DPolyPolygonInObjectCoordinates(aPolyPolygon); - mrView.SetMarkHandles(); + mrView.RecreateAllMarkHandles(); } } } @@ -1172,7 +1172,7 @@ void MotionPathTag::SetMarkedPointsSmoot if(sdr::PolyPolygonEditor::SetPointsSmooth( aPolyPolygon, eFlags, maSelectedPoints ) ) { mpPathObj->setB2DPolyPolygonInObjectCoordinates(aPolyPolygon); - mrView.SetMarkHandles(); + mrView.RecreateAllMarkHandles(); } } } @@ -1205,7 +1205,7 @@ void SAL_CALL MotionPathTag::changesOccu mpEffect->updateSdrPathObjFromPath( *mpPathObj ); mbInUpdatePath = false; updatePathAttributes(); - mrView.SetMarkHandles(); + mrView.RecreateAllMarkHandles(); } } Modified: openoffice/branches/alg/aw080/main/sd/source/ui/annotations/annotationmanager.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/annotations/annotationmanager.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/annotations/annotationmanager.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/annotations/annotationmanager.cxx Fri Sep 13 12:52:57 2013 @@ -856,7 +856,7 @@ IMPL_LINK(AnnotationManagerImpl,UpdateTa CreateTags(); if( mrBase.GetDrawView() ) - static_cast< ::sd::View* >( mrBase.GetDrawView() )->SetMarkHandles(); + static_cast< ::sd::View* >( mrBase.GetDrawView() )->RecreateAllMarkHandles(); invalidateSlots(); Modified: openoffice/branches/alg/aw080/main/sd/source/ui/annotations/annotationtag.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/annotations/annotationtag.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/annotations/annotationtag.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/annotations/annotationtag.cxx Fri Sep 13 12:52:57 2013 @@ -437,7 +437,7 @@ void AnnotationTag::Move( double fDX, do if( mrManager.GetDoc()->IsUndoEnabled() ) mrManager.GetDoc()->EndUndo(); - mrView.SetMarkHandles(); + mrView.RecreateAllMarkHandles(); } } Modified: openoffice/branches/alg/aw080/main/sd/source/ui/func/fucopy.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/func/fucopy.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/func/fucopy.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/func/fucopy.cxx Fri Sep 13 12:52:57 2013 @@ -327,7 +327,7 @@ void FuCopy::DoExecute( SfxRequest& rReq } // adapt handles - mpView->SetMarkHandles(); + mpView->RecreateAllMarkHandles(); mpView->EndUndo(); } Modified: openoffice/branches/alg/aw080/main/sd/source/ui/func/fusel.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/func/fusel.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/func/fusel.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/func/fusel.cxx Fri Sep 13 12:52:57 2013 @@ -403,12 +403,6 @@ bool FuSelection::MouseButtonDown(const } } - // refresh mbMoveAllowedOnSelection when selection has changed - if(mpView->isSelectionChangePending()) - { - mpView->forceSelectionChange(); - } - if( !bDeactivateOLE ) { if ( !bReadOnly && @@ -505,7 +499,7 @@ bool FuSelection::MouseButtonDown(const mpView->MarkPoints(0, true); // update all SdrHdl before getting one - mpView->forceSelectionChange(); + // mpView->forceSelectionChange(); TTTT: Should be done in PickHandle // get one pHdl = mpView->PickHandle(aMDPos); @@ -531,14 +525,14 @@ bool FuSelection::MouseButtonDown(const if ( ! rMEvt.IsRight()) { - if(mpView->isSelectionChangePending()) - { + //if(mpView->isSelectionChangePending()) + //{ // trigger evtl. outstanding selection change // to get a valid SdrHdl with the next call - mpView->forceSelectionChange(); + // mpView->forceSelectionChange(); TTTT: Should be done in PickHandle pHdl = mpView->PickHandle(aMDPos); - } + //} if(pHdl) { @@ -708,7 +702,7 @@ bool FuSelection::MouseButtonUp(const Mo // force trigger selection change to get bSelectionChanged // set in FuSelection::SelectionHasChanged() call eventually - mpView->forceSelectionChange(); + // mpView->forceSelectionChange(); TTTT: Should be done in HasMarkablePoints const double fHitLog(basegfx::B2DVector(mpWindow->GetInverseViewTransformation() * basegfx::B2DVector(HITPIX, 0.0)).getLength()); const double fDrgLog(basegfx::B2DVector(mpWindow->GetInverseViewTransformation() * basegfx::B2DVector(DRGPIX, 0.0)).getLength()); Modified: openoffice/branches/alg/aw080/main/sd/source/ui/func/futext.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/func/futext.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/func/futext.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/func/futext.cxx Fri Sep 13 12:52:57 2013 @@ -780,7 +780,7 @@ bool FuText::MouseButtonUp(const MouseEv ImpSetAttributesFitCommon(GetTextObj()); // adapt handles - mpView->SetMarkHandles(); + mpView->RecreateAllMarkHandles(); mpView->PickHandle(aLogicPos); SetInEditMode(rMEvt, false); } Modified: openoffice/branches/alg/aw080/main/sd/source/ui/func/smarttag.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/func/smarttag.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/func/smarttag.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/func/smarttag.cxx Fri Sep 13 12:52:57 2013 @@ -220,7 +220,7 @@ void SmartTagSet::select( const SmartTag if( mrView.areSdrObjectsSelected() ) mrView.UnmarkAllObj(); else - mrView.SetMarkHandles(); + mrView.RecreateAllMarkHandles(); } } @@ -233,7 +233,7 @@ void SmartTagSet::deselect() mxSelectedTag->deselect(); mxSelectedTag.clear(); mrView.SetPossibilitiesDirty(); - mrView.SetMarkHandles(); + mrView.RecreateAllMarkHandles(); } } Modified: openoffice/branches/alg/aw080/main/sd/source/ui/table/tableobjectbar.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/table/tableobjectbar.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/table/tableobjectbar.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/table/tableobjectbar.cxx Fri Sep 13 12:52:57 2013 @@ -199,7 +199,7 @@ void TableObjectBar::Execute( SfxRequest case SID_TABLE_INSERT_ROW: case SID_TABLE_INSERT_COL: { - pView->SetMarkHandles(); + pView->RecreateAllMarkHandles(); pBindings->Invalidate( SID_TABLE_DELETE_ROW ); pBindings->Invalidate( SID_TABLE_DELETE_COL ); pBindings->Invalidate( SID_FRAME_LINESTYLE ); Modified: openoffice/branches/alg/aw080/main/sd/source/ui/unoidl/unopage.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/unoidl/unopage.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/unoidl/unopage.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/unoidl/unopage.cxx Fri Sep 13 12:52:57 2013 @@ -1586,7 +1586,7 @@ Reference< drawing::XShape > SAL_CALL Sd mpView->ShowSdrPage( *GetPage() ); _SelectObjectsInView( xShapes ); mpView->CombineMarkedObjects( sal_False ); - mpView->SetMarkHandles(); + mpView->RecreateAllMarkHandles(); SdrObject* pSelected = mpView->getSelectedIfSingle(); @@ -1636,7 +1636,7 @@ Reference< drawing::XShape > SAL_CALL Sd mpView->ShowSdrPage( *GetPage() ); _SelectObjectsInView( xShapes ); mpView->CombineMarkedObjects( sal_True ); - mpView->SetMarkHandles(); + mpView->RecreateAllMarkHandles(); SdrObject* pSelected = mpView->getSelectedIfSingle(); Modified: openoffice/branches/alg/aw080/main/sd/source/ui/view/drviews1.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/view/drviews1.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/view/drviews1.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/view/drviews1.cxx Fri Sep 13 12:52:57 2013 @@ -1233,7 +1233,7 @@ bool DrawViewShell::SwitchPage(sal_uInt3 rBindings.Invalidate(SID_INSERTPAGE,true,false); UpdatePreview( mpActualPage ); - mpDrawView->SetMarkHandles(); + mpDrawView->RecreateAllMarkHandles(); } return (bOK); Modified: openoffice/branches/alg/aw080/main/sd/source/ui/view/sdwindow.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/view/sdwindow.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/view/sdwindow.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/view/sdwindow.cxx Fri Sep 13 12:52:57 2013 @@ -990,7 +990,7 @@ void Window::DataChanged( const DataChan // #101928# re-create handles to show new outfit if(dynamic_cast< DrawViewShell* >(mpViewShell)) { - mpViewShell->GetView()->SetMarkHandles(); + mpViewShell->GetView()->RecreateAllMarkHandles(); } } } Modified: openoffice/branches/alg/aw080/main/sd/source/ui/view/viewoverlaymanager.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sd/source/ui/view/viewoverlaymanager.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sd/source/ui/view/viewoverlaymanager.cxx (original) +++ openoffice/branches/alg/aw080/main/sd/source/ui/view/viewoverlaymanager.cxx Fri Sep 13 12:52:57 2013 @@ -510,7 +510,7 @@ IMPL_LINK(ViewOverlayManager,UpdateTagsH bChanges |= CreateTags(); if( bChanges && mrBase.GetDrawView() ) - static_cast< ::sd::View* >( mrBase.GetDrawView() )->SetMarkHandles(); + static_cast< ::sd::View* >( mrBase.GetDrawView() )->RecreateAllMarkHandles(); return 0; } Modified: openoffice/branches/alg/aw080/main/svx/inc/svx/sdrselection.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/inc/svx/sdrselection.hxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/inc/svx/sdrselection.hxx (original) +++ openoffice/branches/alg/aw080/main/svx/inc/svx/sdrselection.hxx Fri Sep 13 12:52:57 2013 @@ -63,7 +63,7 @@ namespace sdr typedef ::std::set< SdrObject*, SelectionComparator > SelectionSet; // basic selection calss with minimal interface - class SVX_DLLPUBLIC Selection : private boost::noncopyable, public SfxListener, public Timer + class SVX_DLLPUBLIC Selection : private boost::noncopyable, public SfxListener { private: // view this incarnation belongs to exclusively @@ -87,7 +87,6 @@ namespace sdr basegfx::B2DRange maSnapRange; // local tooling - void delayedSelectionChanged(); void createIndexDescription(bool bPoints); void checkPointIndexCorrection(); void checkGlueIndexCorrection(); @@ -98,20 +97,14 @@ namespace sdr // derived from SfxListener virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint); - // derived from Timer - virtual void Timeout(); + // handle change + void handleChange(); public: /// constructor Selection(SdrView& rSdrView); virtual ~Selection(); - /// test if selection change is pending - bool isSelectionChangePending() const; - - /// force evtl. delayed SelectionChange to be broadcasted - void forceSelectionChange(); - /// const accesses const SdrObjectVector& getVector() const; SdrObject* getSingle() const; Modified: openoffice/branches/alg/aw080/main/svx/inc/svx/svddrgv.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/inc/svx/svddrgv.hxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/inc/svx/svddrgv.hxx (original) +++ openoffice/branches/alg/aw080/main/svx/inc/svx/svddrgv.hxx Fri Sep 13 12:52:57 2013 @@ -37,7 +37,6 @@ class ImpSdrDragViewExtraData; class SVX_DLLPUBLIC SdrDragView: public SdrExchangeView { -private: protected: SdrHdl* mpDragHdl; SdrDragMethod* mpCurrentSdrDragMethod; @@ -69,7 +68,7 @@ protected: virtual ~SdrDragView(); public: - virtual void SetMarkHandles(); + virtual void RecreateAllMarkHandles(); virtual bool IsAction() const; virtual void MovAction(const basegfx::B2DPoint& rPnt); Modified: openoffice/branches/alg/aw080/main/svx/inc/svx/svdhdl.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/inc/svx/svdhdl.hxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/inc/svx/svdhdl.hxx (original) +++ openoffice/branches/alg/aw080/main/svx/inc/svx/svdhdl.hxx Fri Sep 13 12:52:57 2013 @@ -158,6 +158,8 @@ enum BitmapMarkerKind // SwSdrHdl // +typedef ::std::vector< SdrHdl* > SdrHdlContainerType; + class SVX_DLLPUBLIC SdrHdl : private boost::noncopyable { private: @@ -276,7 +278,6 @@ public: class SVX_DLLPUBLIC SdrHdlList : private boost::noncopyable { private: - typedef ::std::vector< SdrHdl* > SdrHdlContainerType; friend class SdrHdl; SVX_DLLPRIVATE bool operator==(const SdrHdlList&); Modified: openoffice/branches/alg/aw080/main/svx/inc/svx/svdmrkv.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/inc/svx/svdmrkv.hxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/inc/svx/svdmrkv.hxx (original) +++ openoffice/branches/alg/aw080/main/svx/inc/svx/svdmrkv.hxx Fri Sep 13 12:52:57 2013 @@ -99,7 +99,7 @@ void sortSdrObjectSelection(SdrObjectVec //////////////////////////////////////////////////////////////////////////////////////////////////// -class SVX_DLLPUBLIC SdrMarkView : public SdrSnapView +class SVX_DLLPUBLIC SdrMarkView : public SdrSnapView, public Timer { private: ImplMarkingOverlay* mpMarkObjOverlay; @@ -115,13 +115,18 @@ protected: private: // make private; access should be limited since it is dependent of selection and thus from - // the selection to be up-to-date. Before using a call to isSelectionChangePending() and - // evtl. to forceSelectionChange() may be done which will potentially recreate all SdrHdl objects - SdrHdlList maViewHandleList; + // the selection to be up-to-date + SdrHdlList maViewSdrHandleList; // new selection abstraction. Private to guarantee isolation sdr::selection::Selection maSelection; + // stuff to save focus during SdrHdl recreation + sal_uInt32 mnSavePolyNum; + sal_uInt32 mnSavePointNum; + SdrHdlKind meSaveKind; + const SdrObject* mpSaveObj; + protected: basegfx::B2DRange maMarkedPointRange; basegfx::B2DRange maMarkedGluePointRange; @@ -135,8 +140,9 @@ protected: bool mbForceFrameHandles : 1; // Persistent - FrameDrag auch bei Einzelobjekten bool mbPlusHdlAlways : 1; // Persistent bool mbInsPolyPoint : 1; // z.Zt InsPolyPointDragging - - virtual void AddDragModeHdl(SdrDragMode eMode); + bool mbSaveOldFocus : 1; + + virtual void AddDragModeHdl(SdrHdlList& rTarget, SdrDragMode eMode); virtual bool MouseMove(const MouseEvent& rMEvt, Window* pWin); // add custom handles (used by other apps, e.g. AnchorPos) @@ -147,8 +153,8 @@ protected: virtual SdrObject* CheckSingleSdrObjectHit(const basegfx::B2DPoint& rPnt, double fTol, SdrObjList* pOL, sal_uInt32 nOptions, const SetOfByte* pMVisLay, SdrObject*& rpRootObj) const; bool ImpIsFrameHandles() const; - // Macht aus einer Winkelangabe in 1/100deg einen String inkl. Grad-Zeichen - bool ImpMarkPoint(SdrHdl* pHdl, bool bUnmark); + // select or deselect points associated with given SdrHdl vector + bool ImpMarkPoints(const SdrHdlContainerType& rHdls, bool bUnmark); void SetMoveOutside(bool bOn); bool IsMoveOutside() const; @@ -157,8 +163,20 @@ protected: SdrMarkView(SdrModel& rModel1, OutputDevice* pOut = 0); virtual ~SdrMarkView(); + // helper stuff for the complete RecreateAllMarkHandles implementation + void OnDemandCreate(SdrHdlList& rTarget); + void SaveMarkHandleFocus(const SdrHdlList& rTarget); + virtual void CreateMarkHandles(SdrHdlList& rTarget); + void RestoreMarkHandleFocus(SdrHdlList& rTarget); + public: - void SetMarkHandles(); + // completely recreate all SdrHdl based controller objects for all views + virtual void RecreateAllMarkHandles(); + + // from time derivation; used for automatic on-demand SdrHdl creation after + // RecreateAllMarkHandles calls; either triggered from timer or by hand from + // GetHdlList() to ensure a new, correct SdrHdl list + virtual void Timeout(); void MarkGluePoints(const basegfx::B2DRange* pRange, bool bUnmark); virtual void MarkPoints(const basegfx::B2DRange* pRange, bool bUnmark); @@ -212,10 +230,6 @@ public: //////////////////////////////////////////////////////////////////////////////////////////////////// // new interface to selection, a direct wrapper to sdr::selection::Selection - // validity of selection check and force - bool isSelectionChangePending() const { return maSelection.isSelectionChangePending(); } - void forceSelectionChange() { maSelection.forceSelectionChange(); } - // selection const accesses SdrObjectVector getSelectedSdrObjectVectorFromSdrMarkView() const { return maSelection.getVector(); } SdrObject* getSelectedIfSingle() const { return maSelection.getSingle(); } Modified: openoffice/branches/alg/aw080/main/svx/source/engine3d/view3d.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/engine3d/view3d.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/engine3d/view3d.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/engine3d/view3d.cxx Fri Sep 13 12:52:57 2013 @@ -1539,7 +1539,7 @@ void E3dView::Start3DCreation() SetRef2(basegfx::B2DPoint(GetRef1().getX(), nY2)); // force re-creation of SdrHdls TTTT needed? - SetMarkHandles(); + RecreateAllMarkHandles(); // SpiegelPolygone SOFORT zeigen const SdrHdlList &aHdlList = GetHdlList(); Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/sdrselection.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/sdrselection.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/svdraw/sdrselection.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/svdraw/sdrselection.cxx Fri Sep 13 12:52:57 2013 @@ -156,31 +156,7 @@ namespace sdr } } - void Selection::delayedSelectionChanged() - { - // trigger a delayed selection change - if(!IsActive()) - { - SetTimeout(1); - Start(); - } - } - - bool Selection::isSelectionChangePending() const - { - return IsActive(); - } - - void Selection::forceSelectionChange() - { - if(IsActive()) - { - Stop(); - Timeout(); - } - } - - void Selection::Timeout() + void Selection::handleChange() { // check if marked points need to be corrected if(!maPointIndices.empty()) @@ -273,7 +249,6 @@ namespace sdr Selection::Selection(SdrView& rSdrView) : boost::noncopyable(), SfxListener(), - Timer(), mrSdrView(rSdrView), maSet(), maPointIndices(), @@ -287,7 +262,6 @@ namespace sdr Selection::~Selection() { - Stop(); } void Selection::Notify(SfxBroadcaster& /*rBC*/, const SfxHint& rHint) @@ -307,15 +281,12 @@ namespace sdr case HINT_OBJCHG_RESIZE: case HINT_OBJCHG_ATTR: { - // the BoundRange/SnapRange of a selected SdrObject - // may have changed. Since this may happen often and - // mainly based on the selection, do not trigger a - // selection change immediately, but start a timer - // to do so later - delayedSelectionChanged(); - // reset buffered SnapRange resetBufferedSelectionInformation(); + + // the BoundRange/SnapRange of a selected SdrObject + // may have changed + handleChange(); break; } case HINT_OBJINSERTED: @@ -330,7 +301,7 @@ namespace sdr { // a selected SdrObject was removed from SdrObjList, thus is no // longer active in the SdrModel. Remove from selection, too. - // This also triggers a delayedSelectionChanged() + // This also triggers handleChange() if(pSdrHint->GetSdrHintObject()) { removeSdrObject(*pSdrHint->GetSdrHintObject()); @@ -350,7 +321,7 @@ namespace sdr This should be avoided by managing the selection before calling changing methods (!)"); // remove the deleted SdrObject from the selection. This will trigger - // a delayedSelectionChanged to react. All selection + // handleChange() to react. All selection // users have to forget the deleted SdrObject ASAP removeSdrObject(*pSdrHint->GetSdrHintObject()); } @@ -452,7 +423,7 @@ namespace sdr } resetBufferedSelectionInformation(); - delayedSelectionChanged(); + handleChange(); } } } @@ -470,7 +441,7 @@ namespace sdr resetBufferedSelectionInformation(); resetBufferedPointInformation(); resetBufferedGlueInformation(); - delayedSelectionChanged(); + handleChange(); } } @@ -489,7 +460,7 @@ namespace sdr resetBufferedSelectionInformation(); resetBufferedPointInformation(); resetBufferedGlueInformation(); - delayedSelectionChanged(); + handleChange(); } } @@ -524,7 +495,7 @@ namespace sdr StartListening(const_cast< SdrObject& >(**aIter)); } - delayedSelectionChanged(); + handleChange(); } } } @@ -581,7 +552,7 @@ namespace sdr resetBufferedGlueInformation(); } - delayedSelectionChanged(); + handleChange(); } } else @@ -618,7 +589,7 @@ namespace sdr resetBufferedGlueInformation(); } - delayedSelectionChanged(); + handleChange(); } } } Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svddrgv.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svddrgv.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/svdraw/svddrgv.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svddrgv.cxx Fri Sep 13 12:52:57 2013 @@ -653,7 +653,8 @@ bool SdrDragView::EndDragObj(bool bCopy) if(mbInsPolyPoint) { - SetMarkHandles(); + RecreateAllMarkHandles(); + mbInsPolyPoint = false; if( bUndo ) @@ -691,7 +692,7 @@ void SdrDragView::BrkDragObj() mpInsPointUndo->Undo(); // Den eingefuegten Punkt wieder raus delete mpInsPointUndo; mpInsPointUndo = 0; - SetMarkHandles(); + RecreateAllMarkHandles(); mbInsPolyPoint = false; } @@ -767,7 +768,7 @@ bool SdrDragView::ImpBegInsObjPoint(bool { mbInsPolyPoint = true; MarkPoints(0, true); // unmarkall - // SetMarkHandles(); TTTT should be triggered by GetHdlList() below + // RecreateAllMarkHandles(); TTTT should be triggered by GetHdlList() below bRetval = BegDragObj(rPnt, GetHdlList().GetHdlByIndex(mnInsPointNum), 0.0); @@ -980,14 +981,14 @@ bool SdrDragView::IsOrthoDesired() const //////////////////////////////////////////////////////////////////////////////////////////////////// -void SdrDragView::SetMarkHandles() +void SdrDragView::RecreateAllMarkHandles() { if(GetDragHdl()) { mpDragHdl = 0; } - SdrExchangeView::SetMarkHandles(); + SdrExchangeView::RecreateAllMarkHandles(); } bool SdrDragView::IsSolidDragging() const Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svdedxv.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svdedxv.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/svdraw/svdedxv.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svdedxv.cxx Fri Sep 13 12:52:57 2013 @@ -809,7 +809,7 @@ bool SdrObjEditView::SdrBeginTextEdit( mpTextEditCursorMerker = pWin->GetCursor(); SetMoveOutside(true); - // SetMarkHandles(); TTTT: Should be triggered by SetMoveOutside directly + // RecreateAllMarkHandles(); TTTT: Should be triggered by SetMoveOutside directly mpTextEditOutlinerView = ImpMakeOutlinerView(pWin, !bEmpty, pGivenOutlinerView); @@ -1166,7 +1166,7 @@ SdrEndTextEditKind SdrObjEditView::SdrEn // #111096# // Switch on evtl. TextAnimation again after TextEdit pTEObj->SetTextAnimationAllowed(true); - SetMarkHandles(); + RecreateAllMarkHandles(); } // alle OutlinerViews loeschen Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svdglev.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svdglev.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/svdraw/svdglev.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svdglev.cxx Fri Sep 13 12:52:57 2013 @@ -501,7 +501,7 @@ void SdrGlueEditView::MoveMarkedGluePoin ImpTransformMarkedGluePoints(ImpMove, &rDelta); EndUndo(); - SetMarkHandles(); + RecreateAllMarkHandles(); } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -532,7 +532,7 @@ void SdrGlueEditView::ResizeMarkedGluePo ImpTransformMarkedGluePoints(ImpResize, &rRef, &rScale); EndUndo(); - SetMarkHandles(); + RecreateAllMarkHandles(); } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -570,7 +570,7 @@ void SdrGlueEditView::RotateMarkedGluePo ImpTransformMarkedGluePoints(ImpRotate, &rRef, &fAngle, &fSin, &fCos); EndUndo(); - SetMarkHandles(); + RecreateAllMarkHandles(); } //////////////////////////////////////////////////////////////////////////////////////////////////// Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svdhdl.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svdhdl.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/svdraw/svdhdl.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svdhdl.cxx Fri Sep 13 12:52:57 2013 @@ -376,7 +376,7 @@ void SdrHdl::Touch() // force update of graphic representation, but only when not empty. When // it is empty, the finishing call to CreateVisualizations() is not yet // done but can be expected. If not empty, attributes are changed outside - // handle creation (SdrMarkView::SetMarkHandles()), e.g. blinking or MouseOver + // handle creation (SdrMarkView::RecreateAllMarkHandles()), e.g. blinking or MouseOver if(!getOverlayObjectList().isEmpty()) { CreateB2dIAObject(); Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svdmrkv.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svdmrkv.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/svdraw/svdmrkv.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svdmrkv.cxx Fri Sep 13 12:52:57 2013 @@ -228,15 +228,20 @@ void sortSdrObjectSelection(SdrObjectVec //////////////////////////////////////////////////////////////////////////////////////////////////// SdrMarkView::SdrMarkView(SdrModel& rModel1, OutputDevice* pOut) -: SdrSnapView(rModel1, pOut), +: SdrSnapView(rModel1, pOut), + Timer(), mpMarkObjOverlay(0), mpMarkPointsOverlay(0), mpMarkGluePointsOverlay(0), maRef1(), maRef2(), maLastCrookCenter(), - maViewHandleList(*this), + maViewSdrHandleList(*this), maSelection(*getAsSdrView()), + mnSavePolyNum(0), + mnSavePointNum(0), + meSaveKind(HDL_MOVE), + mpSaveObj(0), maMarkedPointRange(), maMarkedGluePointRange(), mnInsPointNum(0), @@ -245,13 +250,15 @@ SdrMarkView::SdrMarkView(SdrModel& rMode mbDesignMode(false), mbForceFrameHandles(false), mbPlusHdlAlways(false), - mbInsPolyPoint(false) + mbInsPolyPoint(false), + mbSaveOldFocus(false) { BrkMarkObj(); BrkMarkPoints(); BrkMarkGluePoints(); StartListening(rModel1); + SetTimeout(1); } SdrMarkView::~SdrMarkView() @@ -400,30 +407,6 @@ void SdrMarkView::BrkMarkObj() //////////////////////////////////////////////////////////////////////////////////////////////////// -sal_uInt32 SdrMarkView::GetHdlNum(SdrHdl* pHdl) const -{ - return GetHdlList().GetHdlNum(pHdl); -} - -SdrHdl* SdrMarkView::GetHdlByIndex(sal_uInt32 nHdlNum) const -{ - const SdrHdlList& rHdlList = GetHdlList(); - - if(nHdlNum < rHdlList.GetHdlCount()) - { - return rHdlList.GetHdlByIndex(nHdlNum); - } - - return 0; -} - -const SdrHdlList& SdrMarkView::GetHdlList() const -{ - return maViewHandleList; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////// - bool SdrMarkView::BegMarkPoints(const basegfx::B2DPoint& rPnt, bool bUnmark) { if(HasMarkablePoints()) @@ -637,34 +620,122 @@ bool SdrMarkView::ImpIsFrameHandles() co return bFrmHdl; } -void SdrMarkView::SetMarkHandles() +//////////////////////////////////////////////////////////////////////////////////////////////////// + +sal_uInt32 SdrMarkView::GetHdlNum(SdrHdl* pHdl) const { - // #105722# remember old focus handle values to search for it again - const SdrHdl* pSaveOldFocusHdl = maViewHandleList.GetFocusHdl(); - bool bSaveOldFocus(false); - sal_uInt32 nSavePolyNum(0); - sal_uInt32 nSavePointNum(0); - SdrHdlKind eSaveKind(HDL_MOVE); - const SdrObject* pSaveObj = 0; - - if(pSaveOldFocusHdl - && dynamic_cast< const SdrPathObj* >(pSaveOldFocusHdl->GetObj()) - && (HDL_POLY == pSaveOldFocusHdl->GetKind() || HDL_BWGT == pSaveOldFocusHdl->GetKind())) - { - bSaveOldFocus = true; - nSavePolyNum = pSaveOldFocusHdl->GetPolyNum(); - nSavePointNum = pSaveOldFocusHdl->GetPointNum(); - pSaveObj = pSaveOldFocusHdl->GetObj(); - eSaveKind = pSaveOldFocusHdl->GetKind(); - } - - // delete/clear all handles. This will always be done - maViewHandleList.Clear(); - maViewHandleList.SetRotateShear(SDRDRAG_ROTATE == GetDragMode()); - maViewHandleList.SetDistortShear(SDRDRAG_SHEAR == GetDragMode()); - const SdrObjectVector aSelection(getSelectedSdrObjectVectorFromSdrMarkView()); - const bool bStdDrag(SDRDRAG_MOVE == GetDragMode()); - bool bFrmHdl(ImpIsFrameHandles()); + return maViewSdrHandleList.GetHdlNum(pHdl); +} + +SdrHdl* SdrMarkView::GetHdlByIndex(sal_uInt32 nHdlNum) const +{ + if(nHdlNum < maViewSdrHandleList.GetHdlCount()) + { + return maViewSdrHandleList.GetHdlByIndex(nHdlNum); + } + + return 0; +} + +const SdrHdlList& SdrMarkView::GetHdlList() const +{ + if(IsActive()) + { + const_cast< SdrMarkView* >(this)->Timeout(); + } + + return maViewSdrHandleList; +} + +void SdrMarkView::Timeout() +{ + Stop(); + + if(maViewSdrHandleList.GetHdlCount()) + { + SaveMarkHandleFocus(maViewSdrHandleList); + maViewSdrHandleList.Clear(); + } + + if(!maViewSdrHandleList.GetHdlCount()) + { + CreateMarkHandles(maViewSdrHandleList); + RestoreMarkHandleFocus(maViewSdrHandleList); + + if(maViewSdrHandleList.GetHdlCount()) + { + // create overlay objects + maViewSdrHandleList.CreateVisualizations(); + } + } +} + +void SdrMarkView::RecreateAllMarkHandles() +{ + if(!IsActive()) + { + SetTimeout(1); + Start(); + } +} + +void SdrMarkView::SaveMarkHandleFocus(const SdrHdlList& rTarget) +{ + mbSaveOldFocus = false; + + if(rTarget.GetHdlCount()) + { + // #105722# remember old focus handle values to search for it again + const SdrHdl* pSaveOldFocusHdl = rTarget.GetFocusHdl(); + + if(pSaveOldFocusHdl + && dynamic_cast< const SdrPathObj* >(pSaveOldFocusHdl->GetObj()) + && (HDL_POLY == pSaveOldFocusHdl->GetKind() || HDL_BWGT == pSaveOldFocusHdl->GetKind())) + { + mbSaveOldFocus = true; + mnSavePolyNum = pSaveOldFocusHdl->GetPolyNum(); + mnSavePointNum = pSaveOldFocusHdl->GetPointNum(); + mpSaveObj = pSaveOldFocusHdl->GetObj(); + meSaveKind = pSaveOldFocusHdl->GetKind(); + } + } +} + +void SdrMarkView::RestoreMarkHandleFocus(SdrHdlList& rTarget) +{ + // #105722# try to restore focus handle index from remembered values + if(mbSaveOldFocus) + { + for(sal_uInt32 a(0); a < rTarget.GetHdlCount(); a++) + { + SdrHdl* pCandidate = rTarget.GetHdlByIndex(a); + + if(pCandidate->GetObj() + && pCandidate->GetObj() == mpSaveObj + && pCandidate->GetKind() == meSaveKind + && pCandidate->GetPolyNum() == mnSavePolyNum + && pCandidate->GetPointNum() == mnSavePointNum) + { + rTarget.SetFocusHdl(pCandidate); + break; + } + } + } +} + +void SdrMarkView::CreateMarkHandles(SdrHdlList& rTarget) +{ + if(rTarget.GetHdlCount()) + { + OSL_ENSURE(false, "CreateMarkHandles should only be called when there are no SdrHdl yet, delete them before recreation (!)"); + return; + } + + rTarget.SetRotateShear(SDRDRAG_ROTATE == GetDragMode()); + rTarget.SetDistortShear(SDRDRAG_SHEAR == GetDragMode()); + const SdrObjectVector aSelection(getSelectedSdrObjectVectorFromSdrMarkView()); + const bool bStdDrag(SDRDRAG_MOVE == GetDragMode()); + bool bFrmHdl(ImpIsFrameHandles()); const SdrObject* pSingleSelected = getSelectedIfSingle(); const SdrTextObj* pSingleTextObj = dynamic_cast< const SdrTextObj* >(pSingleSelected); const bool bSingleTextObjMark(pSingleTextObj && pSingleTextObj->IsTextFrame()); @@ -675,10 +746,10 @@ void SdrMarkView::SetMarkHandles() bFrmHdl = true; } - if(bFrmHdl) - { - const basegfx::B2DRange& rSnapRange(getMarkedObjectSnapRange()); - const bool bHideHandlesWhenInTextEdit(getAsSdrView()->IsTextEdit() && pSingleTextObj && pSingleTextObj->IsInEditMode()); + if(bFrmHdl) + { + const basegfx::B2DRange& rSnapRange(getMarkedObjectSnapRange()); + const bool bHideHandlesWhenInTextEdit(getAsSdrView()->IsTextEdit() && pSingleTextObj && pSingleTextObj->IsInEditMode()); // #i118524# if inplace activated OLE is selected, // suppress handles @@ -691,16 +762,16 @@ void SdrMarkView::SetMarkHandles() } if(!rSnapRange.isEmpty() && !bHideHandlesWhenInTextEdit && !bHideHandlesWhenOleActive) - { + { if(bSingleTextObjMark) { - const sal_uInt32 nSiz0(maViewHandleList.GetHdlCount()); - pSingleTextObj->AddToHdlList(maViewHandleList); - const sal_uInt32 nSiz1(maViewHandleList.GetHdlCount()); - - for(sal_uInt32 i(nSiz0); i < nSiz1; i++) + const sal_uInt32 nSiz0(rTarget.GetHdlCount()); + pSingleTextObj->AddToHdlList(rTarget); + const sal_uInt32 nSiz1(rTarget.GetHdlCount()); + + for(sal_uInt32 i(nSiz0); i < nSiz1; i++) { - SdrHdl* pHdl = maViewHandleList.GetHdlByIndex(i); + SdrHdl* pHdl = rTarget.GetHdlByIndex(i); pHdl->SetObjHdlNum(i - nSiz0); } } @@ -740,7 +811,7 @@ void SdrMarkView::SetMarkHandles() const double fCropBottom(rCrop.GetBottom() * aCropScaleFactor.getY()); new SdrCropViewHdl( - maViewHandleList, + rTarget, *pSingleSelected, aMatrix, pSdrGrafObj->GetGraphicObject().GetGraphic(), @@ -754,177 +825,157 @@ void SdrMarkView::SetMarkHandles() const basegfx::B2DPoint aCenter(rSnapRange.getCenter()); - new SdrCropHdl(maViewHandleList, *pSingleSelected, HDL_UPLFT, rSnapRange.getMinimum()); - new SdrCropHdl(maViewHandleList, *pSingleSelected, HDL_UPPER, basegfx::B2DTuple(aCenter.getX(), rSnapRange.getMinY())); - new SdrCropHdl(maViewHandleList, *pSingleSelected, HDL_UPRGT, basegfx::B2DTuple(rSnapRange.getMaxX(), rSnapRange.getMinY())); - new SdrCropHdl(maViewHandleList, *pSingleSelected, HDL_LEFT, basegfx::B2DTuple(rSnapRange.getMinX(), aCenter.getY())); - new SdrCropHdl(maViewHandleList, *pSingleSelected, HDL_RIGHT, basegfx::B2DTuple(rSnapRange.getMaxX(), aCenter.getY())); - new SdrCropHdl(maViewHandleList, *pSingleSelected, HDL_LWLFT, basegfx::B2DTuple(rSnapRange.getMinX(), rSnapRange.getMaxY())); - new SdrCropHdl(maViewHandleList, *pSingleSelected, HDL_LOWER, basegfx::B2DTuple(aCenter.getX(), rSnapRange.getMaxY())); - new SdrCropHdl(maViewHandleList, *pSingleSelected, HDL_LWRGT, rSnapRange.getMaximum()); + new SdrCropHdl(rTarget, *pSingleSelected, HDL_UPLFT, rSnapRange.getMinimum()); + new SdrCropHdl(rTarget, *pSingleSelected, HDL_UPPER, basegfx::B2DTuple(aCenter.getX(), rSnapRange.getMinY())); + new SdrCropHdl(rTarget, *pSingleSelected, HDL_UPRGT, basegfx::B2DTuple(rSnapRange.getMaxX(), rSnapRange.getMinY())); + new SdrCropHdl(rTarget, *pSingleSelected, HDL_LEFT, basegfx::B2DTuple(rSnapRange.getMinX(), aCenter.getY())); + new SdrCropHdl(rTarget, *pSingleSelected, HDL_RIGHT, basegfx::B2DTuple(rSnapRange.getMaxX(), aCenter.getY())); + new SdrCropHdl(rTarget, *pSingleSelected, HDL_LWLFT, basegfx::B2DTuple(rSnapRange.getMinX(), rSnapRange.getMaxY())); + new SdrCropHdl(rTarget, *pSingleSelected, HDL_LOWER, basegfx::B2DTuple(aCenter.getX(), rSnapRange.getMaxY())); + new SdrCropHdl(rTarget, *pSingleSelected, HDL_LWRGT, rSnapRange.getMaximum()); } - else - { - const bool bNoWidth(basegfx::fTools::equalZero(rSnapRange.getWidth())); - const bool bNoHeight(basegfx::fTools::equalZero(rSnapRange.getHeight())); - - if (bNoWidth && bNoHeight) - { - new SdrHdl(maViewHandleList, pSingleSelected, HDL_UPLFT, rSnapRange.getMinimum(), true); - } - else if (!bStdDrag && (bNoWidth || bNoHeight)) - { - new SdrHdl(maViewHandleList, pSingleSelected, HDL_UPLFT, rSnapRange.getMinimum(), true); - new SdrHdl(maViewHandleList, pSingleSelected, HDL_LWRGT, rSnapRange.getMaximum(), true); - } - else - { - const basegfx::B2DPoint aCenter(rSnapRange.getCenter()); - - if(!bNoWidth && !bNoHeight) - { - new SdrHdl(maViewHandleList, pSingleSelected, HDL_UPLFT, rSnapRange.getMinimum(), true); - } - - if(!bNoHeight) - { - new SdrHdl(maViewHandleList, pSingleSelected, HDL_UPPER, basegfx::B2DTuple(aCenter.getX(), rSnapRange.getMinY()), true); - } + else + { + const bool bNoWidth(basegfx::fTools::equalZero(rSnapRange.getWidth())); + const bool bNoHeight(basegfx::fTools::equalZero(rSnapRange.getHeight())); + + if (bNoWidth && bNoHeight) + { + new SdrHdl(rTarget, pSingleSelected, HDL_UPLFT, rSnapRange.getMinimum(), true); + } + else if (!bStdDrag && (bNoWidth || bNoHeight)) + { + new SdrHdl(rTarget, pSingleSelected, HDL_UPLFT, rSnapRange.getMinimum(), true); + new SdrHdl(rTarget, pSingleSelected, HDL_LWRGT, rSnapRange.getMaximum(), true); + } + else + { + const basegfx::B2DPoint aCenter(rSnapRange.getCenter()); - if(!bNoWidth && !bNoHeight) - { - new SdrHdl(maViewHandleList, pSingleSelected, HDL_UPRGT, basegfx::B2DTuple(rSnapRange.getMaxX(), rSnapRange.getMinY()), true); - } - - if(!bNoWidth) + if(!bNoWidth && !bNoHeight) { - new SdrHdl(maViewHandleList, pSingleSelected, HDL_LEFT, basegfx::B2DTuple(rSnapRange.getMinX(), aCenter.getY()), true); - } - - if(!bNoWidth) - { - new SdrHdl(maViewHandleList, pSingleSelected, HDL_RIGHT, basegfx::B2DTuple(rSnapRange.getMaxX(), aCenter.getY()), true); - } + new SdrHdl(rTarget, pSingleSelected, HDL_UPLFT, rSnapRange.getMinimum(), true); + } - if(!bNoWidth && !bNoHeight) - { - new SdrHdl(maViewHandleList, pSingleSelected, HDL_LWLFT, basegfx::B2DTuple(rSnapRange.getMinX(), rSnapRange.getMaxY()), true); - } + if(!bNoHeight) + { + new SdrHdl(rTarget, pSingleSelected, HDL_UPPER, basegfx::B2DTuple(aCenter.getX(), rSnapRange.getMinY()), true); + } - if(!bNoHeight) - { - new SdrHdl(maViewHandleList, pSingleSelected, HDL_LOWER, basegfx::B2DTuple(aCenter.getX(), rSnapRange.getMaxY()), true); - } + if(!bNoWidth && !bNoHeight) + { + new SdrHdl(rTarget, pSingleSelected, HDL_UPRGT, basegfx::B2DTuple(rSnapRange.getMaxX(), rSnapRange.getMinY()), true); + } + + if(!bNoWidth) + { + new SdrHdl(rTarget, pSingleSelected, HDL_LEFT, basegfx::B2DTuple(rSnapRange.getMinX(), aCenter.getY()), true); + } - if(!bNoWidth && !bNoHeight) - { - new SdrHdl(maViewHandleList, pSingleSelected, HDL_LWRGT, rSnapRange.getMaximum(), true); - } - } - } - } - } - else - { - for (sal_uInt32 nMarkNum(0); nMarkNum < aSelection.size(); nMarkNum++) - { - SdrObject* pObj = aSelection[nMarkNum]; - const sal_uInt32 nSiz0(maViewHandleList.GetHdlCount()); - pObj->AddToHdlList(maViewHandleList); - const sal_uInt32 nSiz1(maViewHandleList.GetHdlCount()); - const bool bPoly(pObj->IsPolygonObject()); - const sdr::selection::Indices aMarkedPoints(bPoly ? getSelectedPointsForSelectedSdrObject(*pObj) : sdr::selection::Indices()); + if(!bNoWidth) + { + new SdrHdl(rTarget, pSingleSelected, HDL_RIGHT, basegfx::B2DTuple(rSnapRange.getMaxX(), aCenter.getY()), true); + } - for(sal_uInt32 i(nSiz0); i < nSiz1; i++) - { - SdrHdl* pHdl = maViewHandleList.GetHdlByIndex(i); - pHdl->SetObjHdlNum(i - nSiz0); - - if (bPoly) - { - const bool bSelected(0 != aMarkedPoints.count(i - nSiz0)); + if(!bNoWidth && !bNoHeight) + { + new SdrHdl(rTarget, pSingleSelected, HDL_LWLFT, basegfx::B2DTuple(rSnapRange.getMinX(), rSnapRange.getMaxY()), true); + } - pHdl->SetSelected(bSelected); + if(!bNoHeight) + { + new SdrHdl(rTarget, pSingleSelected, HDL_LOWER, basegfx::B2DTuple(aCenter.getX(), rSnapRange.getMaxY()), true); + } - if(IsPlusHandlesAlwaysVisible() || bSelected) - { - const sal_uInt32 nPlusAnz(pObj->GetPlusHdlCount(*pHdl)); - - for(sal_uInt32 nPlusNum(0); nPlusNum < nPlusAnz; nPlusNum++) - { - pObj->GetPlusHdl(maViewHandleList, *pObj, *pHdl, nPlusNum); - } - } - } - } - } - } + if(!bNoWidth && !bNoHeight) + { + new SdrHdl(rTarget, pSingleSelected, HDL_LWRGT, rSnapRange.getMaximum(), true); + } + } + } + } + } + else + { + for (sal_uInt32 nMarkNum(0); nMarkNum < aSelection.size(); nMarkNum++) + { + SdrObject* pObj = aSelection[nMarkNum]; + const sal_uInt32 nSiz0(rTarget.GetHdlCount()); + pObj->AddToHdlList(rTarget); + const sal_uInt32 nSiz1(rTarget.GetHdlCount()); + const bool bPoly(pObj->IsPolygonObject()); + const sdr::selection::Indices aMarkedPoints(bPoly ? getSelectedPointsForSelectedSdrObject(*pObj) : sdr::selection::Indices()); - // GluePoint-Handles - for(sal_uInt32 nMarkNum(0); nMarkNum < aSelection.size(); nMarkNum++) - { - SdrObject* pObj = aSelection[nMarkNum]; - const sdr::selection::Indices aMarkedGluePoints(getSelectedGluesForSelectedSdrObject(*pObj)); + for(sal_uInt32 i(nSiz0); i < nSiz1; i++) + { + SdrHdl* pHdl = rTarget.GetHdlByIndex(i); + pHdl->SetObjHdlNum(i - nSiz0); + + if (bPoly) + { + const bool bSelected(0 != aMarkedPoints.count(i - nSiz0)); - if(!aMarkedGluePoints.empty()) - { - const SdrGluePointList* pGPL=pObj->GetGluePointList(); + pHdl->SetSelected(bSelected); - if(pGPL) - { - const basegfx::B2DRange aObjSnapRange(sdr::legacy::GetSnapRange(*pObj)); + if(IsPlusHandlesAlwaysVisible() || bSelected) + { + const sal_uInt32 nPlusAnz(pObj->GetPlusHdlCount(*pHdl)); + + for(sal_uInt32 nPlusNum(0); nPlusNum < nPlusAnz; nPlusNum++) + { + pObj->GetPlusHdl(rTarget, *pObj, *pHdl, nPlusNum); + } + } + } + } + } + } - for(sdr::selection::Indices::const_iterator aCurrent(aMarkedGluePoints.begin()); - aCurrent != aMarkedGluePoints.end(); aCurrent++) - { - const sal_uInt32 nId(*aCurrent); - const sal_uInt32 nNumGP(pGPL->FindGluePoint(nId)); - - if(SDRGLUEPOINT_NOTFOUND != nNumGP) - { - const SdrGluePoint& rGP=(*pGPL)[nNumGP]; - basegfx::B2DPoint aPos(rGP.GetAbsolutePos(aObjSnapRange)); - SdrHdl* pGlueHdl = new SdrHdl(maViewHandleList, pObj, HDL_GLUE, aPos); - pGlueHdl->SetObjHdlNum(nId); - } - } - } - } - } + // GluePoint-Handles + for(sal_uInt32 nMarkNum(0); nMarkNum < aSelection.size(); nMarkNum++) + { + SdrObject* pObj = aSelection[nMarkNum]; + const sdr::selection::Indices aMarkedGluePoints(getSelectedGluesForSelectedSdrObject(*pObj)); - // Drehpunkt/Spiegelachse - AddDragModeHdl(GetDragMode()); + if(!aMarkedGluePoints.empty()) + { + const SdrGluePointList* pGPL=pObj->GetGluePointList(); - // add custom handles (used by other apps, e.g. AnchorPos) - AddCustomHdl(maViewHandleList); + if(pGPL) + { + const basegfx::B2DRange aObjSnapRange(sdr::legacy::GetSnapRange(*pObj)); - // sort handles - maViewHandleList.Sort(); + for(sdr::selection::Indices::const_iterator aCurrent(aMarkedGluePoints.begin()); + aCurrent != aMarkedGluePoints.end(); aCurrent++) + { + const sal_uInt32 nId(*aCurrent); + const sal_uInt32 nNumGP(pGPL->FindGluePoint(nId)); + + if(SDRGLUEPOINT_NOTFOUND != nNumGP) + { + const SdrGluePoint& rGP=(*pGPL)[nNumGP]; + basegfx::B2DPoint aPos(rGP.GetAbsolutePos(aObjSnapRange)); + SdrHdl* pGlueHdl = new SdrHdl(rTarget, pObj, HDL_GLUE, aPos); + pGlueHdl->SetObjHdlNum(nId); + } + } + } + } + } - // #105722# try to restore focus handle index from remembered values - if(bSaveOldFocus) - { - for(sal_uInt32 a(0); a < maViewHandleList.GetHdlCount(); a++) - { - SdrHdl* pCandidate = maViewHandleList.GetHdlByIndex(a); + // Drehpunkt/Spiegelachse + AddDragModeHdl(rTarget, GetDragMode()); - if(pCandidate->GetObj() - && pCandidate->GetObj() == pSaveObj - && pCandidate->GetKind() == eSaveKind - && pCandidate->GetPolyNum() == nSavePolyNum - && pCandidate->GetPointNum() == nSavePointNum) - { - maViewHandleList.SetFocusHdl(pCandidate); - break; - } - } - } + // add custom handles (used by other apps, e.g. AnchorPos) + AddCustomHdl(rTarget); - // create overlay objects - maViewHandleList.CreateVisualizations(); + // sort handles + rTarget.Sort(); } +//////////////////////////////////////////////////////////////////////////////////////////////////// + void SdrMarkView::AddCustomHdl(SdrHdlList& /*rTarget*/) { // add custom handles (used by other apps, e.g. AnchorPos) @@ -945,22 +996,22 @@ void SdrMarkView::SetDragMode(SdrDragMod } } -void SdrMarkView::AddDragModeHdl(SdrDragMode eMode) +void SdrMarkView::AddDragModeHdl(SdrHdlList& rTarget, SdrDragMode eMode) { switch(eMode) { case SDRDRAG_ROTATE: { // add rotation center - new SdrHdl(maViewHandleList, 0, HDL_REF1, GetRef1()); + new SdrHdl(rTarget, 0, HDL_REF1, GetRef1()); break; } case SDRDRAG_MIRROR: { // add mirror axis - SdrHdlLine* pHdl1 = new SdrHdlLine(maViewHandleList, HDL_MIRX); - SdrHdl* pHdl2 = new SdrHdl(maViewHandleList, 0, HDL_REF1, GetRef1()); - SdrHdl* pHdl3 = new SdrHdl(maViewHandleList, 0, HDL_REF2, GetRef2()); + SdrHdlLine* pHdl1 = new SdrHdlLine(rTarget, HDL_MIRX); + SdrHdl* pHdl2 = new SdrHdl(rTarget, 0, HDL_REF1, GetRef1()); + SdrHdl* pHdl3 = new SdrHdl(rTarget, 0, HDL_REF2, GetRef2()); pHdl1->SetHandles(pHdl2, pHdl3); pHdl1->SetObjHdlNum(1); @@ -1012,9 +1063,9 @@ void SdrMarkView::AddDragModeHdl(SdrDrag aGradTransformer.GradToVec(aGradTransGradient, aGradTransVector, pSingleSelected); // build handles - SdrHdlColor* pColHdl1 = new SdrHdlColor(maViewHandleList, *pSingleSelected, aGradTransVector.maPositionA, aGradTransVector.aCol1, SDR_HANDLE_COLOR_SIZE_NORMAL, true); - SdrHdlColor* pColHdl2 = new SdrHdlColor(maViewHandleList, *pSingleSelected, aGradTransVector.maPositionB, aGradTransVector.aCol2, SDR_HANDLE_COLOR_SIZE_NORMAL, true); - SdrHdlGradient* pGradHdl = new SdrHdlGradient(maViewHandleList, *pSingleSelected, *pColHdl1, *pColHdl2, false); + SdrHdlColor* pColHdl1 = new SdrHdlColor(rTarget, *pSingleSelected, aGradTransVector.maPositionA, aGradTransVector.aCol1, SDR_HANDLE_COLOR_SIZE_NORMAL, true); + SdrHdlColor* pColHdl2 = new SdrHdlColor(rTarget, *pSingleSelected, aGradTransVector.maPositionB, aGradTransVector.aCol2, SDR_HANDLE_COLOR_SIZE_NORMAL, true); + SdrHdlGradient* pGradHdl = new SdrHdlGradient(rTarget, *pSingleSelected, *pColHdl1, *pColHdl2, false); // link them pColHdl1->SetColorChangeHdl(LINK(pGradHdl, SdrHdlGradient, ColorChangeHdl)); @@ -1044,9 +1095,9 @@ void SdrMarkView::AddDragModeHdl(SdrDrag aGradTransformer.GradToVec(aGradTransGradient, aGradTransVector, pSingleSelected); // build handles - SdrHdlColor* pColHdl1 = new SdrHdlColor(maViewHandleList, *pSingleSelected, aGradTransVector.maPositionA, aGradTransVector.aCol1, aHdlSize, false); - SdrHdlColor* pColHdl2 = new SdrHdlColor(maViewHandleList, *pSingleSelected, aGradTransVector.maPositionB, aGradTransVector.aCol2, aHdlSize, false); - SdrHdlGradient* pGradHdl = new SdrHdlGradient(maViewHandleList, *pSingleSelected, *pColHdl1, *pColHdl2, true); + SdrHdlColor* pColHdl1 = new SdrHdlColor(rTarget, *pSingleSelected, aGradTransVector.maPositionA, aGradTransVector.aCol1, aHdlSize, false); + SdrHdlColor* pColHdl2 = new SdrHdlColor(rTarget, *pSingleSelected, aGradTransVector.maPositionB, aGradTransVector.aCol2, aHdlSize, false); + SdrHdlGradient* pGradHdl = new SdrHdlGradient(rTarget, *pSingleSelected, *pColHdl1, *pColHdl2, true); // link them pColHdl1->SetColorChangeHdl(LINK(pGradHdl, SdrHdlGradient, ColorChangeHdl)); @@ -1229,7 +1280,7 @@ void SdrMarkView::ForceRefToMarked() } // force recreation of SdrHdls TTTT needed? - SetMarkHandles(); + RecreateAllMarkHandles(); } void SdrMarkView::SetRef1(const basegfx::B2DPoint& rPt) @@ -1271,7 +1322,7 @@ void SdrMarkView::SetFrameHandles(bool b if(bNew != bOld) { // force recreation of SdrHdls - SetMarkHandles(); + RecreateAllMarkHandles(); } } } @@ -1628,20 +1679,20 @@ bool SdrMarkView::IsObjMarked(const SdrO sal_uInt16 SdrMarkView::GetMarkHdlSizePixel() const { - return maViewHandleList.GetHdlSize()*2+1; + return maViewSdrHandleList.GetHdlSize()*2+1; } bool SdrMarkView::IsSolidMarkHdl() const { - return maViewHandleList.IsFineHdl(); + return maViewSdrHandleList.IsFineHdl(); } void SdrMarkView::SetSolidMarkHdl(bool bOn) { - if(bOn != maViewHandleList.IsFineHdl()) + if(bOn != maViewSdrHandleList.IsFineHdl()) { - maViewHandleList.SetFineHdl(bOn); - SetMarkHandles(); + maViewSdrHandleList.SetFineHdl(bOn); + RecreateAllMarkHandles(); } } @@ -1649,10 +1700,10 @@ void SdrMarkView::SetMarkHdlSizePixel(sa { if (nSiz<3) nSiz=3; nSiz/=2; - if (nSiz!=maViewHandleList.GetHdlSize()) + if (nSiz!=maViewSdrHandleList.GetHdlSize()) { - maViewHandleList.SetHdlSize(nSiz); - SetMarkHandles(); + maViewSdrHandleList.SetHdlSize(nSiz); + RecreateAllMarkHandles(); } } @@ -2176,18 +2227,18 @@ void SdrMarkView::handleSelectionChange( ImpSetGlueVisible4(0 != dynamic_cast< SdrEdgeObj* >(getSelectedIfSingle())); // visualize new selection - SetMarkHandles(); + RecreateAllMarkHandles(); } void SdrMarkView::SetMoveOutside(bool bOn) { - maViewHandleList.SetMoveOutside(bOn); - SetMarkHandles(); + maViewSdrHandleList.SetMoveOutside(bOn); + RecreateAllMarkHandles(); } bool SdrMarkView::IsMoveOutside() const { - return maViewHandleList.IsMoveOutside(); + return maViewSdrHandleList.IsMoveOutside(); } void SdrMarkView::SetDesignMode( bool _bOn ) Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svdmrkv1.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svdmrkv1.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/svdraw/svdmrkv1.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svdmrkv1.cxx Fri Sep 13 12:52:57 2013 @@ -120,96 +120,149 @@ bool SdrMarkView::IsPointMarkable(const bool SdrMarkView::MarkPointHelper(SdrHdl* pHdl, bool bUnmark) { - return ImpMarkPoint(pHdl, bUnmark); + SdrHdlContainerType aHdl; + + if(pHdl) + { + aHdl.push_back(pHdl); + } + + return ImpMarkPoints(aHdl, bUnmark); } -bool SdrMarkView::ImpMarkPoint(SdrHdl* pHdl, bool bUnmark) +bool SdrMarkView::ImpMarkPoints(const SdrHdlContainerType& rHdls, bool bUnmark) { - if(!pHdl || pHdl->IsPlusHdl() || HDL_GLUE == pHdl->GetKind()) - { - return false; - } - - if(pHdl->IsSelected() != bUnmark) - { - return false; - } + sdr::selection::Indices aMarkedPoints; + bool bRetval(true); + bool bChanged(false); + const SdrObject* pLastObj = 0; - const SdrObject* pObj = pHdl->GetObj(); + for(sal_uInt32 a(0); a < rHdls.size(); a++) + { + const SdrHdl* pCandidate = rHdls[a]; - if(!pObj || !pObj->IsPolygonObject()) - { - return false; - } + if(!pCandidate) + { + OSL_ENSURE(false, "OOps, null-ptr in SdhHdl list (!)"); + continue; + } - sdr::selection::Indices aMarkedPoints(getSelectedPointsForSelectedSdrObject(*pObj)); - const sal_uInt32 nHdlNum(pHdl->GetObjHdlNum()); + if(!pCandidate || pCandidate->IsPlusHdl() || HDL_GLUE == pCandidate->GetKind()) + { + continue; + } - if (!bUnmark) - { - aMarkedPoints.insert(nHdlNum); - } - else - { - if(!aMarkedPoints.erase(nHdlNum)) - { - return false; - } - } + if(pCandidate->IsSelected() != bUnmark) + { + continue; + } + + const SdrObject* pObj = pCandidate->GetObj(); + + if(!pObj || !pObj->IsPolygonObject()) + { + continue; + } + + if(!pLastObj || pLastObj != pObj) + { + if(pLastObj && bChanged) + { + setSelectedPointsForSelectedSdrObject(*pLastObj, aMarkedPoints); + } + + bChanged = false; + pLastObj = pObj; + aMarkedPoints = getSelectedPointsForSelectedSdrObject(*pObj); + } + + const sal_uInt32 nHdlNum(pCandidate->GetObjHdlNum()); + + if (!bUnmark) + { + aMarkedPoints.insert(nHdlNum); + bChanged = true; + } + else + { + if(aMarkedPoints.erase(nHdlNum)) + { + bChanged = true; + } + else + { + bRetval = false; + } + } + + // TTTT: should not be needed, setSelectedPointsForSelectedSdrObject already triggers selection change and starts recreation + // pCandidate->SetSelected(!bUnmark); + } - setSelectedPointsForSelectedSdrObject(*pObj, aMarkedPoints); - // pHdl->SetSelected(!bUnmark); TTTT: not needed, setSelectedPointsForSelectedSdrObject already triggers selection change and starts recreation + if(pLastObj && bChanged) + { + setSelectedPointsForSelectedSdrObject(*pLastObj, aMarkedPoints); + } - return true; + return bRetval; } bool SdrMarkView::MarkPoint(SdrHdl& rHdl, bool bUnmark) { - if(!(&rHdl)) - { - return false; + if(!(&rHdl)) + { + OSL_ENSURE(false, "OOps, a null-pointer to a SdrHdl as reference was handed over (!)"); + return false; } - bool bRet(false); + bool bRet(false); - if(IsPointMarkable(rHdl) && rHdl.IsSelected() == bUnmark) + if(IsPointMarkable(rHdl) && rHdl.IsSelected() == bUnmark) { const SdrObject* pObj = rHdl.GetObj(); - if(isSdrObjectSelected(*pObj)) - { - if(ImpMarkPoint(&rHdl, bUnmark)) - { - bRet = true; - } - } - } + if(isSdrObjectSelected(*pObj)) + { + SdrHdlContainerType aHdl; - return bRet; + aHdl.push_back(&rHdl); + + if(ImpMarkPoints(aHdl, bUnmark)) + { + bRet = true; + } + } + } + + return bRet; } void SdrMarkView::MarkPoints(const basegfx::B2DRange* pRange, bool bUnmark) { - const SdrObject* pObj0 = 0; + const SdrObject* pObj0 = 0; const SdrHdlList& rHdlList = GetHdlList(); - const sal_uInt32 nHdlAnz(rHdlList.GetHdlCount()); + const sal_uInt32 nHdlAnz(rHdlList.GetHdlCount()); + SdrHdlContainerType aHdl; - maViewHandleList.Sort(); - - for(sal_uInt32 nHdlNum(nHdlAnz); nHdlNum > 0;) + for(sal_uInt32 nHdlNum(nHdlAnz); nHdlNum > 0;) { - nHdlNum--; - SdrHdl* pHdl = rHdlList.GetHdlByIndex(nHdlNum); + nHdlNum--; + SdrHdl* pHdl = rHdlList.GetHdlByIndex(nHdlNum); - if(IsPointMarkable(*pHdl) && pHdl->IsSelected() == bUnmark) + if(pHdl && IsPointMarkable(*pHdl) && pHdl->IsSelected() == bUnmark) { - if(!pRange || pRange->isInside(pHdl->getPosition())) - { - ImpMarkPoint(pHdl, bUnmark); - } - } - } + if(!pRange || pRange->isInside(pHdl->getPosition())) + { + aHdl.push_back(pHdl); + } + } + } + + if(aHdl.size()) + { + ImpMarkPoints(aHdl, bUnmark); + } } const basegfx::B2DRange& SdrMarkView::getMarkedPointRange() const @@ -227,7 +280,7 @@ void SdrMarkView::SetPlusHandlesAlwaysVi if(bOn != IsPlusHandlesAlwaysVisible()) { mbPlusHdlAlways = bOn; - SetMarkHandles(); + RecreateAllMarkHandles(); } } Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpagv.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpagv.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpagv.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpagv.cxx Fri Sep 13 12:52:57 2013 @@ -680,7 +680,7 @@ void SdrPageView::DrawPageViewGrid(Outpu void SdrPageView::AdjHdl() { - GetView().SetMarkHandles(); + GetView().RecreateAllMarkHandles(); } void SdrPageView::SetLayer(const XubString& rName, SetOfByte& rBS, bool bJa) @@ -959,7 +959,7 @@ bool SdrPageView::EnterGroup(SdrObject* } // build new handles - GetView().SetMarkHandles(); + GetView().RecreateAllMarkHandles(); // invalidate only when view wants to visualize group entering if(GetView().DoVisualizeEnteredGroup()) @@ -1013,7 +1013,7 @@ void SdrPageView::LeaveOneGroup() } } - GetView().SetMarkHandles(); + GetView().RecreateAllMarkHandles(); // invalidate only when view wants to visualize group entering if(GetView().DoVisualizeEnteredGroup()) @@ -1061,7 +1061,7 @@ void SdrPageView::LeaveAllGroup() } } - GetView().SetMarkHandles(); + GetView().RecreateAllMarkHandles(); // invalidate only when view wants to visualize group entering if(GetView().DoVisualizeEnteredGroup()) Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpoev.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpoev.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpoev.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpoev.cxx Fri Sep 13 12:52:57 2013 @@ -757,7 +757,7 @@ void SdrPolyEditView::TransformMarkedPoi EndUndo(); } - SetMarkHandles(); + RecreateAllMarkHandles(); } } Modified: openoffice/branches/alg/aw080/main/svx/source/toolbars/fontworkbar.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/toolbars/fontworkbar.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/toolbars/fontworkbar.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/toolbars/fontworkbar.cxx Fri Sep 13 12:52:57 2013 @@ -540,7 +540,7 @@ void FontworkBar::execute( SdrView* pSdr if( bUndo ) pSdrView->EndUndo(); - pSdrView->SetMarkHandles(); + pSdrView->RecreateAllMarkHandles(); rBindings.Invalidate( SID_FONTWORK_SHAPE_TYPE ); } } Modified: openoffice/branches/alg/aw080/main/svx/source/unodraw/unopage.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/unodraw/unopage.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/svx/source/unodraw/unopage.cxx (original) +++ openoffice/branches/alg/aw080/main/svx/source/unodraw/unopage.cxx Fri Sep 13 12:52:57 2013 @@ -495,7 +495,7 @@ Reference< drawing::XShapeGroup > SAL_CA mpView->ShowSdrPage( *mpPage ); _SelectObjectsInView( xShapes ); mpView->GroupMarked(); - mpView->SetMarkHandles(); + mpView->RecreateAllMarkHandles(); SdrObject* pObj = mpView->getSelectedIfSingle(); if( pObj ) Modified: openoffice/branches/alg/aw080/main/sw/inc/dcontact.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sw/inc/dcontact.hxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sw/inc/dcontact.hxx (original) +++ openoffice/branches/alg/aw080/main/sw/inc/dcontact.hxx Fri Sep 13 12:52:57 2013 @@ -329,7 +329,7 @@ public: // All overloaded methods which need to use the offset virtual ::basegfx::B2DPolyPolygon TakeXorPoly() const; virtual void AddToHdlList(SdrHdlList& rHdlList) const; - virtual void GetPlusHdl(SdrHdlList& rHdlList, SdrObject& rSdrObject, const SdrHdl& rHdl, sal_uInt32 nPlNum) const; + virtual void GetPlusHdl(SdrHdlList& rHdlList, const SdrObject& rSdrObject, const SdrHdl& rHdl, sal_uInt32 nPlNum) const; virtual basegfx::B2DPoint GetSnapPoint(sal_uInt32 i) const; virtual basegfx::B2DPoint GetObjectPoint(sal_uInt32 i) const; virtual void SetObjectPoint(const basegfx::B2DPoint& rPnt, sal_uInt32 i); Modified: openoffice/branches/alg/aw080/main/sw/source/core/draw/dcontact.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sw/source/core/draw/dcontact.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sw/source/core/draw/dcontact.cxx (original) +++ openoffice/branches/alg/aw080/main/sw/source/core/draw/dcontact.cxx Fri Sep 13 12:52:57 2013 @@ -2585,7 +2585,7 @@ basegfx::B2DPolyPolygon SwDrawVirtObj::T return aRetval; } -void SwDrawVirtObj::GetPlusHdl(SdrHdlList& rHdlList, SdrObject& rSdrObject, const SdrHdl& rHdl, sal_uInt32 nPlNum) const +void SwDrawVirtObj::GetPlusHdl(SdrHdlList& rHdlList, const SdrObject& rSdrObject, const SdrHdl& rHdl, sal_uInt32 nPlNum) const { rRefObj.GetPlusHdl(rHdlList, rSdrObject, rHdl, nPlNum); OSL_ENSURE(rHdlList.GetHdlCount(), "No PlusHdl added (!)"); Modified: openoffice/branches/alg/aw080/main/sw/source/core/draw/dflyobj.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sw/source/core/draw/dflyobj.cxx?rev=1522906&r1=1522905&r2=1522906&view=diff ============================================================================== --- openoffice/branches/alg/aw080/main/sw/source/core/draw/dflyobj.cxx (original) +++ openoffice/branches/alg/aw080/main/sw/source/core/draw/dflyobj.cxx Fri Sep 13 12:52:57 2013 @@ -971,7 +971,7 @@ sal_uInt32 SwVirtFlyDrawObj::GetPlusHdlC return rRefObj.GetPlusHdlCount(rHdl); } -void SwVirtFlyDrawObj::GetPlusHdl(SdrHdlList& rHdlList, SdrObject& rSdrObject, const SdrHdl& rHdl, sal_uInt32 nPlNum) const +void SwVirtFlyDrawObj::GetPlusHdl(SdrHdlList& rHdlList, const SdrObject& rSdrObject, const SdrHdl& rHdl, sal_uInt32 nPlNum) const { rRefObj.GetPlusHdl(rHdlList, rSdrObject, rHdl, nPlNum); OSL_ENSURE(rHdlList.GetHdlCount(), "No PlusHdl added (!)");