sc/source/ui/drawfunc/fusel.cxx | 28 ++++++++++++++++++++++++---- sc/source/ui/drawfunc/futext.cxx | 37 ++++++++++++++++++++++++++----------- 2 files changed, 50 insertions(+), 15 deletions(-)
New commits: commit ecfe151546e3c0bcea71c949b9fa35a327d71969 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Mar 10 14:48:37 2013 +0100 changing the note handling was an error, fdo#55430 Change-Id: I1c18f33af2a1199fd9c5e54c0b0c4b52702ca0f6 diff --git a/sc/source/ui/drawfunc/futext.cxx b/sc/source/ui/drawfunc/futext.cxx index 61fdf0a..02d086a 100644 --- a/sc/source/ui/drawfunc/futext.cxx +++ b/sc/source/ui/drawfunc/futext.cxx @@ -135,10 +135,6 @@ sal_Bool FuText::MouseButtonDown(const MouseEvent& rMEvt) if( !IsSizingOrMovingNote(rMEvt) ) { StopEditMode(); // Danebengeklickt, Ende mit Edit - pView->UnmarkAll(); - bStraightEnter = false; - ScViewData& rViewData = *pViewShell->GetViewData(); - rViewData.GetDispatcher().Execute(aSfxRequest.GetSlot(), SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD); } pView->SetCreateMode(); } commit e5e2405bbb81fe8700a11b015784649e29f8fe7f Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Mar 10 14:46:05 2013 +0100 reverts d2157548221e28d8f702cc81991f7aef198b523e diff --git a/sc/source/ui/drawfunc/fusel.cxx b/sc/source/ui/drawfunc/fusel.cxx index 4968f15..a3568b0 100644 --- a/sc/source/ui/drawfunc/fusel.cxx +++ b/sc/source/ui/drawfunc/fusel.cxx @@ -53,6 +53,8 @@ // Maximal erlaubte Mausbewegung um noch Drag&Drop zu starten //! fusel,fuconstr,futext - zusammenfassen! #define SC_MAXDRAGMOVE 3 +// Min necessary mouse motion for normal dragging +#define SC_MINDRAGMOVE 2 // ----------------------------------------------------------------------- @@ -381,11 +383,14 @@ sal_Bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt) sal_Bool bReturn = FuDraw::MouseButtonUp(rMEvt); sal_Bool bOle = pViewShell->GetViewFrame()->GetFrame().IsInPlace(); + SdrObject* pObj = NULL; + SdrPageView* pPV = NULL; if (aDragTimer.IsActive() ) { aDragTimer.Stop(); } + sal_uInt16 nDrgLog = sal_uInt16 ( pWindow->PixelToLogic(Size(SC_MINDRAGMOVE,0)).Width() ); Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) ); bool bCopy = false; @@ -416,7 +421,7 @@ sal_Bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt) for ( sal_uLong i = 0; i < nMarkCount; ++i ) { SdrMark* pMark = rSdrMarkList.GetMark( i ); - SdrObject* pObj = ( pMark ? pMark->GetMarkedSdrObj() : NULL ); + pObj = ( pMark ? pMark->GetMarkedSdrObj() : NULL ); if ( pObj ) { ScChartHelper::AddRangesIfProtectedChart( aProtectedChartRangesVector, pDocument, pObj ); @@ -426,6 +431,21 @@ sal_Bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt) bCopy = true; } + if (!rMEvt.IsShift() && !rMEvt.IsMod1() && !rMEvt.IsMod2() && + Abs(aPnt.X() - aMDPos.X()) < nDrgLog && + Abs(aPnt.Y() - aMDPos.Y()) < nDrgLog) + { + /************************************************************* + * If a user wants to click on an object in front of a marked + * one, he releases the mouse button immediately + **************************************************************/ + if (pView->PickObj(aMDPos, pView->getHitTolLog(), pObj, pPV, SDRSEARCH_ALSOONMASTER | SDRSEARCH_BEFOREMARK)) + { + pView->UnmarkAllObj(); + pView->MarkObj(pObj,pPV,false,false); + return (sal_True); + } + } pView->EndDragObj( rMEvt.IsMod1() ); pView->ForceMarkedToAnotherPage(); @@ -433,7 +453,7 @@ sal_Bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt) if (rMarkList.GetMarkCount() == 1) { SdrMark* pMark = rMarkList.GetMark(0); - SdrObject* pObj = pMark->GetMarkedSdrObj(); + pObj = pMark->GetMarkedSdrObj(); FuPoor* pPoor = pViewShell->GetViewData()->GetView()->GetDrawFuncPtr(); FuText* pText = static_cast<FuText*>(pPoor); pText->StopDragMode(pObj ); @@ -458,7 +478,7 @@ sal_Bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt) bool bFound = false; for( sal_uLong nIdx = 0; !bFound && (nIdx < nCount); ++nIdx ) { - SdrObject* pObj = rMarkList.GetMark( nIdx )->GetMarkedSdrObj(); + pObj = rMarkList.GetMark( nIdx )->GetMarkedSdrObj(); bFound = ScDrawLayer::IsNoteCaption( pObj ); if( bFound ) { @@ -494,7 +514,7 @@ sal_Bool FuSelection::MouseButtonUp(const MouseEvent& rMEvt) if (rMarkList.GetMarkCount() == 1) { SdrMark* pMark = rMarkList.GetMark(0); - SdrObject* pObj = pMark->GetMarkedSdrObj(); + pObj = pMark->GetMarkedSdrObj(); // aktivieren nur, wenn die Maus auch (noch) ueber dem // selektierten Objekt steht diff --git a/sc/source/ui/drawfunc/futext.cxx b/sc/source/ui/drawfunc/futext.cxx index 71e4561..61fdf0a 100644 --- a/sc/source/ui/drawfunc/futext.cxx +++ b/sc/source/ui/drawfunc/futext.cxx @@ -125,6 +125,7 @@ sal_Bool FuText::MouseButtonDown(const MouseEvent& rMEvt) { // remember button state for creation of own MouseEvents SetMouseButtonCode(rMEvt.GetButtons()); + sal_Bool bStraightEnter = true; if ( pView->MouseButtonDown(rMEvt, pWindow) ) return (sal_True); // Event von der SdrView ausgewertet @@ -132,7 +133,13 @@ sal_Bool FuText::MouseButtonDown(const MouseEvent& rMEvt) if ( pView->IsTextEdit() ) { if( !IsSizingOrMovingNote(rMEvt) ) + { StopEditMode(); // Danebengeklickt, Ende mit Edit + pView->UnmarkAll(); + bStraightEnter = false; + ScViewData& rViewData = *pViewShell->GetViewData(); + rViewData.GetDispatcher().Execute(aSfxRequest.GetSlot(), SFX_CALLMODE_SLOT | SFX_CALLMODE_RECORD); + } pView->SetCreateMode(); } @@ -301,18 +308,30 @@ sal_Bool FuText::MouseButtonDown(const MouseEvent& rMEvt) } else { - /********************************************************** - * Objekt erzeugen - **********************************************************/ - // Hack to align object to nearest grid position where object - // would be anchored ( if it were cell anchored ) - // Get grid offset for current position ( note: aPnt is - // also adjusted ) - Point aGridOff = CurrentGridSyncOffsetAndPos( aMDPos ); - - bool bRet = pView->BegCreateObj(aMDPos, (OutputDevice*) NULL); - if ( bRet ) + if (bStraightEnter)//Hack for that silly idea that creating text fields is inside the text routine + { + /********************************************************** + * Objekt erzeugen + **********************************************************/ + // Hack to align object to nearest grid position where object + // would be anchored ( if it were cell anchored ) + // Get grid offset for current position ( note: aPnt is + // also adjusted ) + Point aGridOff = CurrentGridSyncOffsetAndPos( aMDPos ); + + bool bRet = pView->BegCreateObj(aMDPos, (OutputDevice*) NULL); + if ( bRet ) pView->GetCreateObj()->SetGridOffset( aGridOff ); + } + else if (pView->PickObj(aMDPos, pView->getHitTolLog(), pObj, pPV, SDRSEARCH_ALSOONMASTER | SDRSEARCH_BEFOREMARK)) + { + pView->UnmarkAllObj(); + pView->MarkObj(pObj,pPV,false,false); + + pHdl=pView->PickHandle(aMDPos); + pView->BegDragObj(aMDPos, (OutputDevice*) NULL, pHdl); + return(sal_True); + } } } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits