Kaydet (Commit) ff1b4730 authored tarafından Ivo Hinkelmann's avatar Ivo Hinkelmann

INTEGRATION: CWS aw024 (1.14.138); FILE MERGED

2006/11/10 03:46:27 aw 1.14.138.11: RESYNC: (1.18-1.19); FILE MERGED
2006/10/27 12:14:15 aw 1.14.138.10: #i39528# ::basegfx -> basegfx adaption
2006/09/21 19:34:42 aw 1.14.138.9: RESYNC: (1.17-1.18); FILE MERGED
2006/07/07 16:03:20 aw 1.14.138.8: adaptions after resync SRC680m171->SRC680m174
2006/07/04 13:21:04 aw 1.14.138.7: RESYNC: (1.15-1.16); FILE MERGED
2005/09/18 05:11:25 aw 1.14.138.6: RESYNC: (1.14-1.15); FILE MERGED
2005/05/26 11:28:07 aw 1.14.138.5: #i39531#
2005/05/19 12:31:43 aw 1.14.138.4: #i39529#
2005/05/12 16:39:41 aw 1.14.138.3: #i39529#
2005/04/26 15:04:33 aw 1.14.138.2: #i39528#
2004/12/23 16:52:54 aw 1.14.138.1: #i39525
üst 192d8bfc
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
* *
* $RCSfile: svdview.cxx,v $ * $RCSfile: svdview.cxx,v $
* *
* $Revision: 1.19 $ * $Revision: 1.20 $
* *
* last change: $Author: obo $ $Date: 2006-10-12 13:17:05 $ * last change: $Author: ihi $ $Date: 2006-11-14 13:50:54 $
* *
* The Contents of this file are made available subject to * The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1. * the terms of GNU Lesser General Public License Version 2.1.
...@@ -50,7 +50,11 @@ ...@@ -50,7 +50,11 @@
#include "svdograf.hxx" // fuer GetContext #include "svdograf.hxx" // fuer GetContext
#include "svdomedia.hxx" // fuer GetContext #include "svdomedia.hxx" // fuer GetContext
#include "svdetc.hxx" // Fuer SdrEngineDefaults #include "svdetc.hxx" // Fuer SdrEngineDefaults
#include "svdibrow.hxx"
#ifdef DBG_UTIL
#include <svdibrow.hxx>
#endif
#include "svdoutl.hxx" #include "svdoutl.hxx"
#include "svdview.hxx" #include "svdview.hxx"
#include "editview.hxx" // fuer GetField #include "editview.hxx" // fuer GetField
...@@ -65,6 +69,22 @@ ...@@ -65,6 +69,22 @@
#include <tools/tenccvt.hxx> #include <tools/tenccvt.hxx>
#endif #endif
#ifndef _SDR_OVERLAY_OVERLAYPOLYPOLYGON_HXX
#include <svx/sdr/overlay/overlaypolypolygon.hxx>
#endif
#ifndef _SDR_OVERLAY_OVERLAYMANAGER_HXX
#include <svx/sdr/overlay/overlaymanager.hxx>
#endif
#ifndef _SDRPAINTWINDOW_HXX
#include <sdrpaintwindow.hxx>
#endif
#ifndef _SDRPAGEWINDOW_HXX
#include <sdrpagewindow.hxx>
#endif
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
SdrViewEvent::SdrViewEvent() SdrViewEvent::SdrViewEvent()
...@@ -103,6 +123,66 @@ SdrViewEvent::~SdrViewEvent() ...@@ -103,6 +123,66 @@ SdrViewEvent::~SdrViewEvent()
{ {
} }
////////////////////////////////////////////////////////////////////////////////////////////////////
// helper class for all D&D overlays
void SdrDropMarkerOverlay::ImplCreateOverlays(const SdrView& rView, const basegfx::B2DPolyPolygon& rPolyPolygon)
{
for(sal_uInt32 a(0L); a < rView.PaintWindowCount(); a++)
{
SdrPaintWindow* pCandidate = rView.GetPaintWindow(a);
::sdr::overlay::OverlayManager* pTargetOverlay = pCandidate->GetOverlayManager();
if(pTargetOverlay)
{
::sdr::overlay::OverlayPolyPolygonStriped* pNew = new ::sdr::overlay::OverlayPolyPolygonStriped(
rPolyPolygon);
pTargetOverlay->add(*pNew);
maObjects.append(*pNew);
}
}
}
SdrDropMarkerOverlay::SdrDropMarkerOverlay(const SdrView& rView, const SdrObject& rObject)
{
ImplCreateOverlays(rView, rObject.TakeXorPoly(true));
}
SdrDropMarkerOverlay::SdrDropMarkerOverlay(const SdrView& rView, const Rectangle& rRectangle)
{
basegfx::B2DPolygon aB2DPolygon;
aB2DPolygon.append(basegfx::B2DPoint(rRectangle.Left(), rRectangle.Top()));
aB2DPolygon.append(basegfx::B2DPoint(rRectangle.Right(), rRectangle.Top()));
aB2DPolygon.append(basegfx::B2DPoint(rRectangle.Right(), rRectangle.Bottom()));
aB2DPolygon.append(basegfx::B2DPoint(rRectangle.Left(), rRectangle.Bottom()));
aB2DPolygon.setClosed(true);
basegfx::B2DPolyPolygon aB2DPolyPolygon;
aB2DPolyPolygon.append(aB2DPolygon);
ImplCreateOverlays(rView, aB2DPolyPolygon);
}
SdrDropMarkerOverlay::SdrDropMarkerOverlay(const SdrView& rView, const Point& rStart, const Point& rEnd)
{
basegfx::B2DPolygon aB2DPolygon;
aB2DPolygon.append(basegfx::B2DPoint(rStart.X(), rStart.Y()));
aB2DPolygon.append(basegfx::B2DPoint(rEnd.X(), rEnd.Y()));
aB2DPolygon.setClosed(true);
basegfx::B2DPolyPolygon aB2DPolyPolygon;
aB2DPolyPolygon.append(aB2DPolygon);
ImplCreateOverlays(rView, aB2DPolyPolygon);
}
SdrDropMarkerOverlay::~SdrDropMarkerOverlay()
{
// The OverlayObjects are cleared using the destructor of OverlayObjectList.
// That destructor calls clear() at the list which removes all objects from the
// OverlayManager and deletes them.
}
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
// //
...@@ -119,36 +199,8 @@ SdrViewEvent::~SdrViewEvent() ...@@ -119,36 +199,8 @@ SdrViewEvent::~SdrViewEvent()
TYPEINIT1(SdrView,SdrCreateView); TYPEINIT1(SdrView,SdrCreateView);
SdrView::SdrView(SdrModel* pModel1, OutputDevice* pOut): SdrView::SdrView(SdrModel* pModel1, OutputDevice* pOut)
SdrCreateView(pModel1,pOut), : SdrCreateView(pModel1,pOut),
bNoExtendedMouseDispatcher(FALSE),
bNoExtendedKeyDispatcher(FALSE),
bNoExtendedCommandDispatcher(FALSE),
mbMasterPagePaintCaching(sal_False)
{
bTextEditOnObjectsWithoutTextIfTextTool=FALSE;
StartListening( maAccessibilityOptions );
onAccessibilityOptionsChanged();
}
SdrView::SdrView(SdrModel* pModel1, XOutputDevice* _pXOut):
SdrCreateView(pModel1,_pXOut),
bNoExtendedMouseDispatcher(FALSE),
bNoExtendedKeyDispatcher(FALSE),
bNoExtendedCommandDispatcher(FALSE),
mbMasterPagePaintCaching(sal_False)
{
bTextEditOnObjectsWithoutTextIfTextTool=FALSE;
StartListening( maAccessibilityOptions );
onAccessibilityOptionsChanged();
}
SdrView::SdrView(SdrModel* pModel1):
SdrCreateView(pModel1,(OutputDevice*)NULL),
bNoExtendedMouseDispatcher(FALSE), bNoExtendedMouseDispatcher(FALSE),
bNoExtendedKeyDispatcher(FALSE), bNoExtendedKeyDispatcher(FALSE),
bNoExtendedCommandDispatcher(FALSE), bNoExtendedCommandDispatcher(FALSE),
...@@ -183,7 +235,7 @@ BOOL SdrView::KeyInput(const KeyEvent& rKEvt, Window* pWin) ...@@ -183,7 +235,7 @@ BOOL SdrView::KeyInput(const KeyEvent& rKEvt, Window* pWin)
default: { default: {
switch (rKEvt.GetKeyCode().GetFullCode()) { switch (rKEvt.GetKeyCode().GetFullCode()) {
case KEY_ESCAPE: { case KEY_ESCAPE: {
if (IsTextEdit()) EndTextEdit(); if (IsTextEdit()) SdrEndTextEdit();
if (IsAction()) BrkAction(); if (IsAction()) BrkAction();
if (pWin!=NULL) pWin->ReleaseMouse(); if (pWin!=NULL) pWin->ReleaseMouse();
} break; } break;
...@@ -280,7 +332,11 @@ SdrHitKind SdrView::PickAnything(const MouseEvent& rMEvt, USHORT nEventKind, Sdr ...@@ -280,7 +332,11 @@ SdrHitKind SdrView::PickAnything(const MouseEvent& rMEvt, USHORT nEventKind, Sdr
rVEvt.nMouseMode=rMEvt.GetMode(); rVEvt.nMouseMode=rMEvt.GetMode();
rVEvt.nMouseCode=rMEvt.GetButtons() | rMEvt.GetModifier(); rVEvt.nMouseCode=rMEvt.GetButtons() | rMEvt.GetModifier();
const OutputDevice* pOut=pActualOutDev; const OutputDevice* pOut=pActualOutDev;
if (pOut==NULL) pOut=GetWin(0); if (pOut==NULL)
{
pOut = GetFirstOutputDevice();
//pOut=GetWin(0);
}
Point aPnt(rMEvt.GetPosPixel()); Point aPnt(rMEvt.GetPosPixel());
if (pOut!=NULL) aPnt=pOut->PixelToLogic(aPnt); if (pOut!=NULL) aPnt=pOut->PixelToLogic(aPnt);
rVEvt.aLogicPos=aPnt; rVEvt.aLogicPos=aPnt;
...@@ -299,7 +355,6 @@ SdrHitKind SdrView::PickAnything(const MouseEvent& rMEvt, USHORT nEventKind, Sdr ...@@ -299,7 +355,6 @@ SdrHitKind SdrView::PickAnything(const MouseEvent& rMEvt, USHORT nEventKind, Sdr
#define MODKEY_NoSnap bCtrl /* Fang temporaer aus */ #define MODKEY_NoSnap bCtrl /* Fang temporaer aus */
#define MODKEY_Ortho bShift /* na eben ortho */ #define MODKEY_Ortho bShift /* na eben ortho */
#define MODKEY_Center bAlt /* Zentrisch erzeugen/resizen */ #define MODKEY_Center bAlt /* Zentrisch erzeugen/resizen */
//#define MODKEY_BigOrtho bAlt
#define MODKEY_AngleSnap bShift #define MODKEY_AngleSnap bShift
#define MODKEY_CopyDrag bCtrl /* Draggen mit kopieren */ #define MODKEY_CopyDrag bCtrl /* Draggen mit kopieren */
...@@ -314,7 +369,11 @@ SdrHitKind SdrView::PickAnything(const MouseEvent& rMEvt, USHORT nEventKind, Sdr ...@@ -314,7 +369,11 @@ SdrHitKind SdrView::PickAnything(const MouseEvent& rMEvt, USHORT nEventKind, Sdr
SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) const SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) const
{ {
const OutputDevice* pOut=pActualOutDev; const OutputDevice* pOut=pActualOutDev;
if (pOut==NULL) pOut=GetWin(0); if (pOut==NULL)
{
pOut = GetFirstOutputDevice();
//pOut=GetWin(0);
}
Point aPnt(rLogicPos); Point aPnt(rLogicPos);
BOOL bEditMode=IsEditMode(); BOOL bEditMode=IsEditMode();
BOOL bPointMode=bEditMode && HasMarkablePoints(); BOOL bPointMode=bEditMode && HasMarkablePoints();
...@@ -328,7 +387,7 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co ...@@ -328,7 +387,7 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co
BOOL bCtrl=(rVEvt.nMouseCode & KEY_MOD1) !=0; BOOL bCtrl=(rVEvt.nMouseCode & KEY_MOD1) !=0;
BOOL bAlt=(rVEvt.nMouseCode & KEY_MOD2) !=0; BOOL bAlt=(rVEvt.nMouseCode & KEY_MOD2) !=0;
SdrHitKind eHit=SDRHIT_NONE; SdrHitKind eHit=SDRHIT_NONE;
SdrHdl* pHdl=pOut!=NULL && !bTextEditSel ? HitHandle(aPnt,*pActualOutDev) : NULL; SdrHdl* pHdl=pOut!=NULL && !bTextEditSel ? PickHandle(aPnt) : NULL;
SdrPageView* pPV=NULL; SdrPageView* pPV=NULL;
SdrObject* pObj=NULL; SdrObject* pObj=NULL;
SdrObject* pHitObj=NULL; SdrObject* pHitObj=NULL;
...@@ -374,11 +433,9 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co ...@@ -374,11 +433,9 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co
} }
if (bDeep || bMid || bRoot) { if (bDeep || bMid || bRoot) {
Point aP(aPnt);
aP-=pPV->GetOffset();
SdrObjMacroHitRec aHitRec; SdrObjMacroHitRec aHitRec;
aHitRec.aPos=aP; aHitRec.aPos=aPnt;
aHitRec.aDownPos=aP; aHitRec.aDownPos=aPnt;
aHitRec.nTol=nHitTolLog; aHitRec.nTol=nHitTolLog;
aHitRec.pVisiLayer=&pPV->GetVisibleLayers(); aHitRec.pVisiLayer=&pPV->GetVisibleLayers();
aHitRec.pPageView=pPV; aHitRec.pPageView=pPV;
...@@ -398,9 +455,7 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co ...@@ -398,9 +455,7 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co
if (IsMacroMode() && eHit==SDRHIT_UNMARKEDOBJECT) { if (IsMacroMode() && eHit==SDRHIT_UNMARKEDOBJECT) {
SdrTextObj* pTextObj=PTR_CAST(SdrTextObj,pHitObj); SdrTextObj* pTextObj=PTR_CAST(SdrTextObj,pHitObj);
if (pTextObj!=NULL && pTextObj->HasText()) { if (pTextObj!=NULL && pTextObj->HasText()) {
Point aP(aPnt); BOOL bTEHit=pTextObj->IsTextEditHit(aPnt,0/*nHitTolLog*/,&pPV->GetVisibleLayers());
aP-=pPV->GetOffset();
BOOL bTEHit=pTextObj->IsTextEditHit(aP,0/*nHitTolLog*/,&pPV->GetVisibleLayers());
if (bTEHit) { if (bTEHit) {
Rectangle aTextRect; Rectangle aTextRect;
Rectangle aAnchor; Rectangle aAnchor;
...@@ -409,24 +464,24 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co ...@@ -409,24 +464,24 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co
pOutliner = &pTextObj->GetModel()->GetHitTestOutliner(); pOutliner = &pTextObj->GetModel()->GetHitTestOutliner();
pTextObj->TakeTextRect( *pOutliner, aTextRect, FALSE, &aAnchor, FALSE ); pTextObj->TakeTextRect( *pOutliner, aTextRect, FALSE, &aAnchor, FALSE );
aP-=aTextRect.TopLeft(); aPnt-=aTextRect.TopLeft();
// FitToSize berueksichtigen // FitToSize berueksichtigen
SdrFitToSizeType eFit=pTextObj->GetFitToSize(); SdrFitToSizeType eFit=pTextObj->GetFitToSize();
BOOL bFitToSize=(eFit==SDRTEXTFIT_PROPORTIONAL || eFit==SDRTEXTFIT_ALLLINES); BOOL bFitToSize=(eFit==SDRTEXTFIT_PROPORTIONAL || eFit==SDRTEXTFIT_ALLLINES);
if (bFitToSize) { if (bFitToSize) {
Fraction aX(aTextRect.GetWidth()-1,aAnchor.GetWidth()-1); Fraction aX(aTextRect.GetWidth()-1,aAnchor.GetWidth()-1);
Fraction aY(aTextRect.GetHeight()-1,aAnchor.GetHeight()-1); Fraction aY(aTextRect.GetHeight()-1,aAnchor.GetHeight()-1);
ResizePoint(aP,Point(),aX,aY); ResizePoint(aPnt,Point(),aX,aY);
} }
// Drehung berueksichtigen // Drehung berueksichtigen
const GeoStat& rGeo=pTextObj->GetGeoStat(); const GeoStat& rGeo=pTextObj->GetGeoStat();
if (rGeo.nDrehWink!=0) RotatePoint(aP,Point(),-rGeo.nSin,rGeo.nCos); // -sin fuer Unrotate if (rGeo.nDrehWink!=0) RotatePoint(aPnt,Point(),-rGeo.nSin,rGeo.nCos); // -sin fuer Unrotate
// Laufschrift berueksichtigen fehlt noch ... // Laufschrift berueksichtigen fehlt noch ...
if(pActualOutDev && pActualOutDev->GetOutDevType() == OUTDEV_WINDOW) if(pActualOutDev && pActualOutDev->GetOutDevType() == OUTDEV_WINDOW)
{ {
OutlinerView aOLV(pOutliner, (Window*)pActualOutDev); OutlinerView aOLV(pOutliner, (Window*)pActualOutDev);
const EditView& aEV=aOLV.GetEditView(); const EditView& aEV=aOLV.GetEditView();
const SvxFieldItem* pItem=aEV.GetField(aP); const SvxFieldItem* pItem=aEV.GetField(aPnt);
if (pItem!=NULL) { if (pItem!=NULL) {
const SvxFieldData* pFld=pItem->GetField(); const SvxFieldData* pFld=pItem->GetField();
const SvxURLField* pURL=PTR_CAST(SvxURLField,pFld); const SvxURLField* pURL=PTR_CAST(SvxURLField,pFld);
...@@ -444,8 +499,6 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co ...@@ -444,8 +499,6 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co
(eHit==SDRHIT_MARKEDOBJECT || eHit==SDRHIT_UNMARKEDOBJECT) && (eHit==SDRHIT_MARKEDOBJECT || eHit==SDRHIT_UNMARKEDOBJECT) &&
(IsTextTool() || (IsEditMode() && IsQuickTextEditMode())) && pHitObj->HasTextEdit()) (IsTextTool() || (IsEditMode() && IsQuickTextEditMode())) && pHitObj->HasTextEdit())
{ {
Point aP(aPnt);
aP-=pPV->GetOffset();
// Ringsum die TextEditArea ein Rand zum Selektieren ohne Textedit // Ringsum die TextEditArea ein Rand zum Selektieren ohne Textedit
Rectangle aBoundRect(pHitObj->GetCurrentBoundRect()); Rectangle aBoundRect(pHitObj->GetCurrentBoundRect());
...@@ -465,17 +518,17 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co ...@@ -465,17 +518,17 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co
nTolerance = pOut->PixelToLogic(Size(2, 0)).Width(); nTolerance = pOut->PixelToLogic(Size(2, 0)).Width();
} }
if( (aP.X() >= aBoundRect.Left() - nTolerance && aP.X() <= aBoundRect.Left() + nTolerance) if( (aPnt.X() >= aBoundRect.Left() - nTolerance && aPnt.X() <= aBoundRect.Left() + nTolerance)
|| (aP.X() >= aBoundRect.Right() - nTolerance && aP.X() <= aBoundRect.Right() + nTolerance) || (aPnt.X() >= aBoundRect.Right() - nTolerance && aPnt.X() <= aBoundRect.Right() + nTolerance)
|| (aP.Y() >= aBoundRect.Top() - nTolerance && aP.Y() <= aBoundRect.Top() + nTolerance) || (aPnt.Y() >= aBoundRect.Top() - nTolerance && aPnt.Y() <= aBoundRect.Top() + nTolerance)
|| (aP.Y() >= aBoundRect.Bottom() - nTolerance && aP.Y() <= aBoundRect.Bottom() + nTolerance)) || (aPnt.Y() >= aBoundRect.Bottom() - nTolerance && aPnt.Y() <= aBoundRect.Bottom() + nTolerance))
{ {
bBoundRectHit = sal_True; bBoundRectHit = sal_True;
} }
if(!bBoundRectHit) if(!bBoundRectHit)
{ {
BOOL bTEHit=pHitObj->IsTextEditHit(aP,0,&pPV->GetVisibleLayers()); BOOL bTEHit=pHitObj->IsTextEditHit(aPnt,0,&pPV->GetVisibleLayers());
// TextEdit an Objekten im gesperrten Layer // TextEdit an Objekten im gesperrten Layer
if (pPV->GetLockedLayers().IsSet(pHitObj->GetLayer())) bTEHit=FALSE; if (pPV->GetLockedLayers().IsSet(pHitObj->GetLayer())) bTEHit=FALSE;
...@@ -555,7 +608,7 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co ...@@ -555,7 +608,7 @@ SdrHitKind SdrView::PickAnything(const Point& rLogicPos, SdrViewEvent& rVEvt) co
rVEvt.bUnmark=bMarked; // Toggle rVEvt.bUnmark=bMarked; // Toggle
if (bGlue) { if (bGlue) {
pObj=pHdl->GetObj(); pObj=pHdl->GetObj();
nGlueId=pHdl->GetObjHdlNum(); nGlueId=(sal_uInt16)pHdl->GetObjHdlNum();
} }
} else if (bMarked) eEvent=SDREVENT_BEGDRAGOBJ; // MarkState nicht aendern, nur Drag } else if (bMarked) eEvent=SDREVENT_BEGDRAGOBJ; // MarkState nicht aendern, nur Drag
} }
...@@ -666,7 +719,7 @@ BOOL SdrView::DoMouseEvent(const SdrViewEvent& rVEvt) ...@@ -666,7 +719,7 @@ BOOL SdrView::DoMouseEvent(const SdrViewEvent& rVEvt)
SetCrookAtCenter(MODKEY_Center); SetCrookAtCenter(MODKEY_Center);
#endif #endif
if (bMouseLeft && bMouseDown && rVEvt.bIsTextEdit && (eHit==SDRHIT_UNMARKEDOBJECT || eHit==SDRHIT_NONE)) { if (bMouseLeft && bMouseDown && rVEvt.bIsTextEdit && (eHit==SDRHIT_UNMARKEDOBJECT || eHit==SDRHIT_NONE)) {
EndTextEdit(); // Danebengeklickt, Ende mit Edit SdrEndTextEdit(); // Danebengeklickt, Ende mit Edit
// pHdl ist dann ungueltig. Sollte aber egal sein, wein pHdl==NULL // pHdl ist dann ungueltig. Sollte aber egal sein, wein pHdl==NULL
// sein muesste (wg. eHit). // sein muesste (wg. eHit).
} }
...@@ -696,12 +749,16 @@ BOOL SdrView::DoMouseEvent(const SdrViewEvent& rVEvt) ...@@ -696,12 +749,16 @@ BOOL SdrView::DoMouseEvent(const SdrViewEvent& rVEvt)
if (!EndCreateObj(eCmd)) { // Event fuer Create nicht ausgewerten? -> Markieren if (!EndCreateObj(eCmd)) { // Event fuer Create nicht ausgewerten? -> Markieren
if (eHit==SDRHIT_UNMARKEDOBJECT || eHit==SDRHIT_TEXTEDIT) { if (eHit==SDRHIT_UNMARKEDOBJECT || eHit==SDRHIT_TEXTEDIT) {
MarkObj(rVEvt.pRootObj,rVEvt.pPV); MarkObj(rVEvt.pRootObj,rVEvt.pPV);
if (eHit==SDRHIT_TEXTEDIT) { if (eHit==SDRHIT_TEXTEDIT)
BOOL bRet2=pActualOutDev!=NULL && pActualOutDev->GetOutDevType()==OUTDEV_WINDOW && {
BegTextEdit(rVEvt.pObj,rVEvt.pPV,(Window*)pActualOutDev,(SdrOutliner*)NULL); BOOL bRet2(pActualOutDev && OUTDEV_WINDOW == pActualOutDev->GetOutDevType() &&
if (bRet2) { SdrBeginTextEdit(rVEvt.pObj, rVEvt.pPV, (Window*)pActualOutDev, sal_False, (SdrOutliner*)0L));
if(bRet2)
{
MouseEvent aMEvt(pActualOutDev->LogicToPixel(aLogicPos), MouseEvent aMEvt(pActualOutDev->LogicToPixel(aLogicPos),
1,rVEvt.nMouseMode,rVEvt.nMouseCode,rVEvt.nMouseCode); 1,rVEvt.nMouseMode,rVEvt.nMouseCode,rVEvt.nMouseCode);
OutlinerView* pOLV=GetTextEditOutlinerView(); OutlinerView* pOLV=GetTextEditOutlinerView();
if (pOLV!=NULL) { if (pOLV!=NULL) {
pOLV->MouseButtonDown(aMEvt); // Event an den Outliner, aber ohne Doppelklick pOLV->MouseButtonDown(aMEvt); // Event an den Outliner, aber ohne Doppelklick
...@@ -761,7 +818,7 @@ BOOL SdrView::DoMouseEvent(const SdrViewEvent& rVEvt) ...@@ -761,7 +818,7 @@ BOOL SdrView::DoMouseEvent(const SdrViewEvent& rVEvt)
} }
} break; } break;
case SDREVENT_BEGMARK: bRet=BegMark(aLogicPos,rVEvt.bAddMark,rVEvt.bUnmark); break; case SDREVENT_BEGMARK: bRet=BegMark(aLogicPos,rVEvt.bAddMark,rVEvt.bUnmark); break;
case SDREVENT_BEGINSOBJPOINT: bRet=BegInsObjPoint(aLogicPos,MODKEY_PolyPoly); break; case SDREVENT_BEGINSOBJPOINT: bRet = BegInsObjPoint(aLogicPos, MODKEY_PolyPoly); break;
case SDREVENT_ENDINSOBJPOINT: { case SDREVENT_ENDINSOBJPOINT: {
SdrCreateCmd eCmd=SDRCREATE_NEXTPOINT; SdrCreateCmd eCmd=SDRCREATE_NEXTPOINT;
if (MODKEY_PolyPoly) eCmd=SDRCREATE_NEXTOBJECT; if (MODKEY_PolyPoly) eCmd=SDRCREATE_NEXTOBJECT;
...@@ -784,9 +841,12 @@ BOOL SdrView::DoMouseEvent(const SdrViewEvent& rVEvt) ...@@ -784,9 +841,12 @@ BOOL SdrView::DoMouseEvent(const SdrViewEvent& rVEvt)
UnmarkAllObj(); UnmarkAllObj();
MarkObj(rVEvt.pRootObj,rVEvt.pPV); MarkObj(rVEvt.pRootObj,rVEvt.pPV);
} }
bRet=pActualOutDev!=NULL && pActualOutDev->GetOutDevType()==OUTDEV_WINDOW &&
BegTextEdit(rVEvt.pObj,rVEvt.pPV,(Window*)pActualOutDev,(SdrOutliner*)NULL); bRet = pActualOutDev && OUTDEV_WINDOW == pActualOutDev->GetOutDevType()&&
if (bRet) { SdrBeginTextEdit(rVEvt.pObj, rVEvt.pPV, (Window*)pActualOutDev, sal_False, (SdrOutliner*)0L);
if(bRet)
{
MouseEvent aMEvt(pActualOutDev->LogicToPixel(aLogicPos), MouseEvent aMEvt(pActualOutDev->LogicToPixel(aLogicPos),
1,rVEvt.nMouseMode,rVEvt.nMouseCode,rVEvt.nMouseCode); 1,rVEvt.nMouseMode,rVEvt.nMouseCode,rVEvt.nMouseCode);
OutlinerView* pOLV=GetTextEditOutlinerView(); OutlinerView* pOLV=GetTextEditOutlinerView();
...@@ -819,19 +879,16 @@ BOOL SdrView::DoMouseEvent(const SdrViewEvent& rVEvt) ...@@ -819,19 +879,16 @@ BOOL SdrView::DoMouseEvent(const SdrViewEvent& rVEvt)
Pointer SdrView::GetPreferedPointer(const Point& rMousePos, const OutputDevice* pOut, USHORT nModifier, BOOL bLeftDown) const Pointer SdrView::GetPreferedPointer(const Point& rMousePos, const OutputDevice* pOut, USHORT nModifier, BOOL bLeftDown) const
{ {
// Actions // Actions
if (IsCreateObj()) { if (IsCreateObj())
if (pLibObjDragMeth!=NULL) { {
return Pointer(POINTER_CROSS); return pAktCreate->GetCreatePointer();
} else {
return pAktCreate->GetCreatePointer();
}
} }
if (pDragBla!=NULL) { if (pDragBla!=NULL) {
if ((IsDraggingPoints() || IsDraggingGluePoints()) && IsMouseHideWhileDraggingPoints()) return Pointer(POINTER_NULL); if ((IsDraggingPoints() || IsDraggingGluePoints()) && IsMouseHideWhileDraggingPoints()) return Pointer(POINTER_NULL);
return pDragBla->GetPointer(); return pDragBla->GetPointer();
} }
if (IsMarkObj() || IsMarkPoints() || IsMarkGluePoints() || IsEncirclement() || IsSetPageOrg()) return Pointer(POINTER_ARROW); if (IsMarkObj() || IsMarkPoints() || IsMarkGluePoints() || IsEncirclement() || IsSetPageOrg()) return Pointer(POINTER_ARROW);
if (IsDragHelpLine()) return GetDraggedHelpLine().GetPointer(); if (IsDragHelpLine()) return GetDraggedHelpLinePointer();
if (IsMacroObj()) { if (IsMacroObj()) {
SdrObjMacroHitRec aHitRec; SdrObjMacroHitRec aHitRec;
aHitRec.aPos=pOut->LogicToPixel(rMousePos); aHitRec.aPos=pOut->LogicToPixel(rMousePos);
...@@ -1045,25 +1102,40 @@ XubString SdrView::GetStatusText() ...@@ -1045,25 +1102,40 @@ XubString SdrView::GetStatusText()
pDragBla->TakeComment(aStr); pDragBla->TakeComment(aStr);
} }
} }
} else if (bMarking) { }
if (AreObjectsMarked()) { else if(IsMarkObj())
aStr=ImpGetResStr(STR_ViewMarkMoreObjs); {
} else { if(AreObjectsMarked())
aStr=ImpGetResStr(STR_ViewMarkObjs); {
aStr = ImpGetResStr(STR_ViewMarkMoreObjs);
} }
} else if (bMarkingPoints) { else
if (HasMarkedPoints()) { {
aStr=ImpGetResStr(STR_ViewMarkMorePoints); aStr = ImpGetResStr(STR_ViewMarkObjs);
} else {
aStr=ImpGetResStr(STR_ViewMarkPoints);
} }
} else if (bMarkingGluePoints) { }
if (HasMarkedGluePoints()) { else if(IsMarkPoints())
aStr=ImpGetResStr(STR_ViewMarkMoreGluePoints); {
} else { if(HasMarkedPoints())
aStr=ImpGetResStr(STR_ViewMarkGluePoints); {
aStr = ImpGetResStr(STR_ViewMarkMorePoints);
}
else
{
aStr = ImpGetResStr(STR_ViewMarkPoints);
} }
} else if (IsTextEdit() && pTextEditOutlinerView!=NULL) { } else if (IsMarkGluePoints())
{
if(HasMarkedGluePoints())
{
aStr = ImpGetResStr(STR_ViewMarkMoreGluePoints);
}
else
{
aStr = ImpGetResStr(STR_ViewMarkGluePoints);
}
}
else if (IsTextEdit() && pTextEditOutlinerView!=NULL) {
aStr=ImpGetResStr(STR_ViewTextEdit); // "TextEdit - Zeile y Spalte x"; aStr=ImpGetResStr(STR_ViewTextEdit); // "TextEdit - Zeile y Spalte x";
ESelection aSel(pTextEditOutlinerView->GetSelection()); ESelection aSel(pTextEditOutlinerView->GetSelection());
long nPar=aSel.nEndPara,nLin=0,nCol=aSel.nEndPos; long nPar=aSel.nEndPara,nLin=0,nCol=aSel.nEndPos;
...@@ -1176,7 +1248,7 @@ void SdrView::MarkAll() ...@@ -1176,7 +1248,7 @@ void SdrView::MarkAll()
{ {
if (IsTextEdit()) { if (IsTextEdit()) {
GetTextEditOutlinerView()->SetSelection(ESelection(0,0,0xFFFF,0xFFFF)); GetTextEditOutlinerView()->SetSelection(ESelection(0,0,0xFFFF,0xFFFF));
#ifndef SVX_LIGHT #ifdef DBG_UTIL
if (pItemBrowser!=NULL) pItemBrowser->SetDirty(); if (pItemBrowser!=NULL) pItemBrowser->SetDirty();
#endif #endif
} else if (IsGluePointEditMode()) MarkAllGluePoints(); } else if (IsGluePointEditMode()) MarkAllGluePoints();
...@@ -1191,7 +1263,7 @@ void SdrView::UnmarkAll() ...@@ -1191,7 +1263,7 @@ void SdrView::UnmarkAll()
eSel.nStartPara=eSel.nEndPara; eSel.nStartPara=eSel.nEndPara;
eSel.nStartPos=eSel.nEndPos; eSel.nStartPos=eSel.nEndPos;
GetTextEditOutlinerView()->SetSelection(eSel); GetTextEditOutlinerView()->SetSelection(eSel);
#ifndef SVX_LIGHT #ifdef DBG_UTIL
if (pItemBrowser!=NULL) pItemBrowser->SetDirty(); if (pItemBrowser!=NULL) pItemBrowser->SetDirty();
#endif #endif
} else if (HasMarkedGluePoints()) UnmarkAllGluePoints(); } else if (HasMarkedGluePoints()) UnmarkAllGluePoints();
...@@ -1341,74 +1413,6 @@ BOOL SdrView::IsDeleteMarkedPossible() const ...@@ -1341,74 +1413,6 @@ BOOL SdrView::IsDeleteMarkedPossible() const
return IsDeleteMarkedObjPossible(); return IsDeleteMarkedObjPossible();
} }
//BFS01void SdrView::WriteRecords(SvStream& rOut) const
//BFS01{
//BFS01 {
//BFS01 // Der CharSet muss! als erstes rausgestreamt werden
//BFS01 SdrNamedSubRecord aSubRecord(rOut,STREAM_WRITE,SdrInventor,SDRIORECNAME_VIEWCHARSET);
//BFS01
//BFS01 // UNICODE:
//BFS01 // rtl_TextEncoding eOutCharSet=rOut.GetStreamCharSet();
//BFS01 rtl_TextEncoding eOutCharSet = gsl_getSystemTextEncoding();
//BFS01
//BFS01 // #90477# rOut << UINT16( GetStoreCharSet( eOutCharSet ) );
//BFS01 rOut << (UINT16)GetSOStoreTextEncoding(eOutCharSet, (sal_uInt16)rOut.GetVersion());
//BFS01 }
//BFS01 SdrCreateView::WriteRecords(rOut);
//BFS01}
//BFS01BOOL SdrView::ReadRecord(const SdrIOHeader& rViewHead,
//BFS01 const SdrNamedSubRecord& rSubHead,
//BFS01 SvStream& rIn)
//BFS01{
//BFS01 BOOL bRet=FALSE;
//BFS01 if (rSubHead.GetInventor()==SdrInventor) {
//BFS01 bRet=TRUE;
//BFS01 switch (rSubHead.GetIdentifier()) {
//BFS01 case SDRIORECNAME_VIEWCHARSET: {
//BFS01 UINT16 nCharSet;
//BFS01 // #90477# rIn>>nCharSet;
//BFS01 // rIn.SetStreamCharSet(rtl_TextEncoding(nCharSet));
//BFS01 rIn >> nCharSet;
//BFS01 rIn.SetStreamCharSet(GetSOLoadTextEncoding((rtl_TextEncoding)nCharSet, (sal_uInt16)rIn.GetVersion()));
//BFS01 } break;
//BFS01 default: bRet=FALSE;
//BFS01 }
//BFS01 }
//BFS01 if (!bRet) bRet=SdrCreateView::ReadRecord(rViewHead,rSubHead,rIn);
//BFS01 return bRet;
//BFS01}
//BFS01SvStream& operator<<(SvStream& rOut, const SdrView& rView)
//BFS01{
//BFS01 SdrIOHeader aHead(rOut,STREAM_WRITE,SdrIOViewID);
//BFS01 rView.WriteRecords(rOut);
//BFS01 return rOut;
//BFS01}
//BFS01SvStream& operator>>(SvStream& rIn, SdrView& rView)
//BFS01{
//BFS01 if (rIn.GetError()!=0) return rIn;
//BFS01 rView.BrkAction();
//BFS01 rView.Clear();
//BFS01 SdrIOHeader aHead(rIn,STREAM_READ);
//BFS01 if (!aHead.IsMagic()) {
//BFS01 rIn.SetError(SVSTREAM_FILEFORMAT_ERROR); // Format-Fehler
//BFS01 return rIn;
//BFS01 }
//BFS01 rtl_TextEncoding eStreamCharSetMerker=rIn.GetStreamCharSet(); // Der StreamCharSet wird von SdrView::ReadRecord() gesetzt
//BFS01 while (aHead.GetBytesLeft()>0 && rIn.GetError()==0 && !rIn.IsEof()) {
//BFS01 SdrNamedSubRecord aSubRecord(rIn,STREAM_READ);
//BFS01 rView.ReadRecord(aHead,aSubRecord,rIn);
//BFS01 }
//BFS01
//BFS01 rIn.SetStreamCharSet(eStreamCharSetMerker); // StreamCharSet wieder restaurieren
//BFS01
//BFS01 rView.InvalidateAllWin();
//BFS01 return rIn;
//BFS01}
void SdrView::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType) void SdrView::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType)
{ {
if( rHint.ISA( SfxSimpleHint ) && ( (SfxSimpleHint&) rHint ).GetId() == SFX_HINT_ACCESSIBILITY_CHANGED ) if( rHint.ISA( SfxSimpleHint ) && ( (SfxSimpleHint&) rHint ).GetId() == SFX_HINT_ACCESSIBILITY_CHANGED )
...@@ -1435,20 +1439,19 @@ void SdrView::SetMasterPagePaintCaching(sal_Bool bOn) ...@@ -1435,20 +1439,19 @@ void SdrView::SetMasterPagePaintCaching(sal_Bool bOn)
{ {
mbMasterPagePaintCaching = bOn; mbMasterPagePaintCaching = bOn;
// reset at all SdrPageViewWindow's // reset at all SdrPageWindow's
for(sal_uInt16 a(0); a < GetPageViewCount(); a++) SdrPageView* pPageView = GetSdrPageView();
{
SdrPageView* pPageView = GetPageViewPvNum(a);
DBG_ASSERT(pPageView, "SdrView::SetMasterPagePaintCaching: Corrupt SdrPageView list (!)");
for(sal_uInt32 b(0L); b < pPageView->WindowCount(); b++) if(pPageView)
{
for(sal_uInt32 b(0L); b < pPageView->PageWindowCount(); b++)
{ {
SdrPageViewWindow* pPageViewWindow = pPageView->GetWindow(a); SdrPageWindow* pPageWindow = pPageView->GetPageWindow(b);
DBG_ASSERT(pPageViewWindow, "SdrView::SetMasterPagePaintCaching: Corrupt SdrPageViewWindow list (!)"); DBG_ASSERT(pPageWindow, "SdrView::SetMasterPagePaintCaching: Corrupt SdrPageWindow list (!)");
// force deletion of ObjectContact, so at re-display all VOCs // force deletion of ObjectContact, so at re-display all VOCs
// will be re-created with updated flag setting // will be re-created with updated flag setting
pPageViewWindow->ResetObjectContact(); pPageWindow->ResetObjectContact();
} }
// force redraw of this view // force redraw of this view
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment