diff options
Diffstat (limited to 'sd')
-rw-r--r-- | sd/inc/sdmod.hxx | 12 | ||||
-rw-r--r-- | sd/source/ui/app/sdmod.cxx | 8 | ||||
-rw-r--r-- | sd/source/ui/app/sdxfer.cxx | 39 | ||||
-rw-r--r-- | sd/source/ui/dlg/makefile.mk | 11 | ||||
-rw-r--r-- | sd/source/ui/dlg/sdtreelb.cxx | 102 | ||||
-rw-r--r-- | sd/source/ui/func/sdundogr.cxx | 6 | ||||
-rw-r--r-- | sd/source/ui/inc/sdtreelb.hxx | 39 | ||||
-rw-r--r-- | sd/source/ui/inc/sdxfer.hxx | 7 | ||||
-rw-r--r-- | sd/source/ui/view/sdview2.cxx | 33 |
9 files changed, 182 insertions, 75 deletions
diff --git a/sd/inc/sdmod.hxx b/sd/inc/sdmod.hxx index 049e1024ed52..49410d36b42d 100644 --- a/sd/inc/sdmod.hxx +++ b/sd/inc/sdmod.hxx @@ -2,9 +2,9 @@ * * $RCSfile: sdmod.hxx,v $ * - * $Revision: 1.16 $ + * $Revision: 1.17 $ * - * last change: $Author: af $ $Date: 2002-11-28 10:48:49 $ + * last change: $Author: ka $ $Date: 2002-12-11 14:54:56 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -129,8 +129,6 @@ protected: SvxSearchItem* pSearchItem; SvNumberFormatter* pNumberFormatter; SvStorageRef xOptionStorage; - const SdDrawDocShell* pCurrentNavigatorDragDocShell; - NavigatorDragType eCurrentNavigatorDragType; BOOL bAutoSave; BOOL bWaterCan; SfxErrorHandler* mpErrorHdl; @@ -162,12 +160,6 @@ public: SdOptions* GetSdOptions(DocumentType eDocType); SvStorageStreamRef GetOptionStream( const String& rOptionName, SdOptionStreamMode eMode ); - const SdDrawDocShell* GetCurrentNavigatorDragDocShell() const { return pCurrentNavigatorDragDocShell; } - void SetCurrentNavigatorDragDocShell( const SdDrawDocShell* pDocShell ) { pCurrentNavigatorDragDocShell = pDocShell; } - - NavigatorDragType GetCurrentNavigatorDragType() const { return eCurrentNavigatorDragType; } - void SetCurrentNavigatorDragType( NavigatorDragType eDragType ) { eCurrentNavigatorDragType = eDragType; } - BOOL GetWaterCan() const { return bWaterCan; } void SetWaterCan( BOOL bWC ) { bWaterCan = bWC; } diff --git a/sd/source/ui/app/sdmod.cxx b/sd/source/ui/app/sdmod.cxx index ec532eb1ae69..09d499947dbb 100644 --- a/sd/source/ui/app/sdmod.cxx +++ b/sd/source/ui/app/sdmod.cxx @@ -2,9 +2,9 @@ * * $RCSfile: sdmod.cxx,v $ * - * $Revision: 1.17 $ + * $Revision: 1.18 $ * - * last change: $Author: cl $ $Date: 2002-09-12 15:25:07 $ + * last change: $Author: ka $ $Date: 2002-12-11 14:54:56 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -163,9 +163,7 @@ SdModule::SdModule(SvFactory* pDrawObjFact, SvFactory* pGraphicObjFact) pImpressOptions(NULL), pDrawOptions(NULL), pSearchItem(NULL), - pNumberFormatter( NULL ), - eCurrentNavigatorDragType( NAVIGATOR_DRAGTYPE_NONE ), - pCurrentNavigatorDragDocShell( NULL ) + pNumberFormatter( NULL ) { SetName( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "StarDraw" ) ) ); // Nicht uebersetzen! pSearchItem = new SvxSearchItem(ITEMID_SEARCH); diff --git a/sd/source/ui/app/sdxfer.cxx b/sd/source/ui/app/sdxfer.cxx index 1e682a6109dd..35ca228f8af2 100644 --- a/sd/source/ui/app/sdxfer.cxx +++ b/sd/source/ui/app/sdxfer.cxx @@ -2,9 +2,9 @@ * * $RCSfile: sdxfer.cxx,v $ * - * $Revision: 1.26 $ + * $Revision: 1.27 $ * - * last change: $Author: thb $ $Date: 2002-11-19 18:02:27 $ + * last change: $Author: ka $ $Date: 2002-12-11 14:54:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -715,6 +715,41 @@ void SdTransferable::SetPageBookmarks( const List& rPageBookmarks, BOOL bPersist // ----------------------------------------------------------------------------- +sal_Int64 SAL_CALL SdTransferable::getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw( ::com::sun::star::uno::RuntimeException ) +{ + sal_Int64 nRet; + + if( ( rId.getLength() == 16 ) && + ( 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) ) ) + { + nRet = (sal_Int64) this; + } + else + nRet = 0; + + return nRet; +} + +// ----------------------------------------------------------------------------- + +const ::com::sun::star::uno::Sequence< sal_Int8 >& SdTransferable::getUnoTunnelId() +{ + static ::com::sun::star::uno::Sequence< sal_Int8 > aSeq; + + if( !aSeq.getLength() ) + { + static osl::Mutex aCreateMutex; + osl::MutexGuard aGuard( aCreateMutex ); + + aSeq.realloc( 16 ); + rtl_createUuid( reinterpret_cast< sal_uInt8* >( aSeq.getArray() ), 0, sal_True ); + } + + return aSeq; +} + +// ----------------------------------------------------------------------------- + SdTransferable* SdTransferable::getImplementation( const Reference< XInterface >& rxData ) throw() { try diff --git a/sd/source/ui/dlg/makefile.mk b/sd/source/ui/dlg/makefile.mk index 17036e07170a..515776837ebd 100644 --- a/sd/source/ui/dlg/makefile.mk +++ b/sd/source/ui/dlg/makefile.mk @@ -2,9 +2,9 @@ # # $RCSfile: makefile.mk,v $ # -# $Revision: 1.14 $ +# $Revision: 1.15 $ # -# last change: $Author: af $ $Date: 2002-09-11 13:28:45 $ +# last change: $Author: ka $ $Date: 2002-12-11 14:54:57 $ # # The Contents of this file are made available subject to the terms of # either of the following licenses @@ -162,9 +162,10 @@ SLOFILES = \ $(SLO)$/TemplateScanner.obj EXCEPTIONSFILES= \ - $(SLO)$/filedlg.obj \ - $(SLO)$/dlgass.obj \ - $(SLO)$/TemplateScanner.obj + $(SLO)$/filedlg.obj \ + $(SLO)$/dlgass.obj \ + $(SLO)$/TemplateScanner.obj \ + $(SLO)$/sdtreelb.obj # --- Tagets ------------------------------------------------------- diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx index 0510526f6828..bc392f353d2a 100644 --- a/sd/source/ui/dlg/sdtreelb.cxx +++ b/sd/source/ui/dlg/sdtreelb.cxx @@ -2,9 +2,9 @@ * * $RCSfile: sdtreelb.cxx,v $ * - * $Revision: 1.15 $ + * $Revision: 1.16 $ * - * last change: $Author: ka $ $Date: 2002-12-06 16:51:17 $ + * last change: $Author: ka $ $Date: 2002-12-11 14:54:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -59,28 +59,24 @@ * ************************************************************************/ -#pragma hdrstop - -#include <tools/urlobj.hxx> - -#ifndef SVTOOLS_URIHELPER_HXX -#include <svtools/urihelper.hxx> +#ifndef _SOT_FORMATS_HXX //autogen +#include <sot/formats.hxx> +#endif +#ifndef _SVSTOR_HXX //autogen +#include <so3/svstor.hxx> #endif #ifndef _SV_MSGBOX_HXX //autogen #include <vcl/msgbox.hxx> #endif +#ifndef SVTOOLS_URIHELPER_HXX +#include <svtools/urihelper.hxx> +#endif #ifndef _SVDITER_HXX //autogen #include <svx/svditer.hxx> #endif -#ifndef _SVSTOR_HXX //autogen -#include <so3/svstor.hxx> -#endif #ifndef _SFXDOCFILE_HXX //autogen #include <sfx2/docfile.hxx> #endif -#ifndef _SOT_FORMATS_HXX //autogen -#include <sot/formats.hxx> -#endif #ifndef _SVDOOLE2_HXX //autogen #include <svx/svdoole2.hxx> #endif @@ -134,6 +130,74 @@ void SdPageObjsTLB::SdPageObjsTransferable::DragFinished( sal_Int8 nDropAction ) mrParent.DragFinished( nDropAction ); } +// ----------------------------------------------------------------------------- + +SdDrawDocShell& SdPageObjsTLB::SdPageObjsTransferable::GetDocShell() const +{ + return mrDocShell; +} + +// ----------------------------------------------------------------------------- + +NavigatorDragType SdPageObjsTLB::SdPageObjsTransferable::GetDragType() const +{ + return meDragType; +} + +// ----------------------------------------------------------------------------- + +sal_Int64 SAL_CALL SdPageObjsTLB::SdPageObjsTransferable::getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw( ::com::sun::star::uno::RuntimeException ) +{ + sal_Int64 nRet; + + if( ( rId.getLength() == 16 ) && + ( 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) ) ) + { + nRet = (sal_Int64) this; + } + else + nRet = 0; + + return nRet; +} + +// ----------------------------------------------------------------------------- + +const ::com::sun::star::uno::Sequence< sal_Int8 >& SdPageObjsTLB::SdPageObjsTransferable::getUnoTunnelId() +{ + static ::com::sun::star::uno::Sequence< sal_Int8 > aSeq; + + if( !aSeq.getLength() ) + { + static osl::Mutex aCreateMutex; + osl::MutexGuard aGuard( aCreateMutex ); + + aSeq.realloc( 16 ); + rtl_createUuid( reinterpret_cast< sal_uInt8* >( aSeq.getArray() ), 0, sal_True ); + } + + return aSeq; +} + +// ----------------------------------------------------------------------------- + +SdPageObjsTLB::SdPageObjsTransferable* SdPageObjsTLB::SdPageObjsTransferable::getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxData ) + throw() +{ + try + { + ::com::sun::star::uno::Reference< ::com::sun::star::lang::XUnoTunnel > xUnoTunnel( rxData, ::com::sun::star::uno::UNO_QUERY ); + + return( xUnoTunnel.is() ? + ( (SdPageObjsTLB::SdPageObjsTransferable*)(void*) xUnoTunnel->getSomething( SdPageObjsTLB::SdPageObjsTransferable::getUnoTunnelId() ) ) : + NULL ); + } + catch( const ::com::sun::star::uno::Exception& ) + { + return NULL; + } +} + /************************************************************************* |* |* Ctor1 SdPageObjsTLB @@ -583,7 +647,8 @@ List* SdPageObjsTLB::GetSelectEntryList( USHORT nDepth ) if( !pList ) pList = new List(); - pList->Insert( new String( GetEntryText( pEntry ) ), LIST_APPEND ); + const String aEntryText( GetEntryText( pEntry ) ); + pList->Insert( new String( aEntryText ), LIST_APPEND ); } pEntry = NextSelected( pEntry ); } @@ -957,11 +1022,9 @@ void SdPageObjsTLB::DoDrag() SvTreeListBox::ReleaseMouse(); bIsInDrag = TRUE; - SD_MOD()->SetCurrentNavigatorDragDocShell( pDocShell ); - SD_MOD()->SetCurrentNavigatorDragType( eDragType ); // object is destroyed by internal reference mechanism - ( new SdPageObjsTLB::SdPageObjsTransferable( *this, aBookmark ) )->StartDrag( this, nDNDActions ); + ( new SdPageObjsTLB::SdPageObjsTransferable( *this, aBookmark, *pDocShell, eDragType ) )->StartDrag( this, nDNDActions ); } } @@ -985,9 +1048,6 @@ void SdPageObjsTLB::DragFinished( sal_uInt8 nDropAction ) } pDropNavWin = NULL; - SD_MOD()->SetCurrentNavigatorDragType( NAVIGATOR_DRAGTYPE_NONE ); - SD_MOD()->SetCurrentNavigatorDragDocShell( NULL ); - bIsInDrag = FALSE; } diff --git a/sd/source/ui/func/sdundogr.cxx b/sd/source/ui/func/sdundogr.cxx index f65e90dc1197..fcd815a17f14 100644 --- a/sd/source/ui/func/sdundogr.cxx +++ b/sd/source/ui/func/sdundogr.cxx @@ -2,9 +2,9 @@ * * $RCSfile: sdundogr.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: ka $ $Date: 2001-10-22 13:36:53 $ + * last change: $Author: ka $ $Date: 2002-12-11 14:54:58 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -77,7 +77,7 @@ SdUndoGroup::~SdUndoGroup() ULONG nLast = aCtn.Count(); for (ULONG nAction = 0; nAction < nLast; nAction++) { - delete aCtn.GetObject(nAction); + delete (SdUndoAction*) aCtn.GetObject(nAction); } aCtn.Clear(); } diff --git a/sd/source/ui/inc/sdtreelb.hxx b/sd/source/ui/inc/sdtreelb.hxx index 356159850ba7..7a0da3e41bcf 100644 --- a/sd/source/ui/inc/sdtreelb.hxx +++ b/sd/source/ui/inc/sdtreelb.hxx @@ -2,9 +2,9 @@ * * $RCSfile: sdtreelb.hxx,v $ * - * $Revision: 1.6 $ + * $Revision: 1.7 $ * - * last change: $Author: ka $ $Date: 2002-12-06 16:51:18 $ + * last change: $Author: ka $ $Date: 2002-12-11 14:54:59 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -63,10 +63,15 @@ #ifndef _SDTREELB_HXX #define _SDTREELB_HXX +#ifndef _TRANSFER_HXX //autogen +#include <svtools/transfer.hxx> +#endif #ifndef _SD_SDRESID_HXX #include "sdresid.hxx" #endif - +#ifndef _PRESENTATION_HXX +#include "pres.hxx" +#endif #ifndef _STRING_HXX //autogen #include <tools/string.hxx> #endif @@ -76,9 +81,6 @@ #ifndef _URLBMK_HXX #include <svtools/urlbmk.hxx> #endif -#ifndef _TRANSFER_HXX //autogen -#include <svtools/transfer.hxx> -#endif #ifndef _REF_HXX //autogen #include <tools/ref.hxx> #endif @@ -89,6 +91,7 @@ SV_DECL_REF(SdDrawDocShell) #endif class SdDrawDocument; +class SdDrawDocShell; class SfxMedium; class SfxViewFrame; class SdNavigatorWin; @@ -107,7 +110,7 @@ private: static BOOL bIsInDrag; // static, falls der Navigator im ExecuteDrag geloescht wird -private: +public: // nested class to implement the TransferableHelper class SdPageObjsTransferable : public TransferableHelper @@ -116,6 +119,8 @@ private: SdPageObjsTLB& mrParent; INetBookmark maBookmark; + SdDrawDocShell& mrDocShell; + NavigatorDragType meDragType; virtual ~SdPageObjsTransferable(); @@ -123,10 +128,26 @@ private: virtual sal_Bool GetData( const ::com::sun::star::datatransfer::DataFlavor& rFlavor ); virtual void DragFinished( sal_Int8 nDropAction ); + virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw( ::com::sun::star::uno::RuntimeException ); + + public: + + SdPageObjsTransferable( SdPageObjsTLB& rParent, + const INetBookmark& rBookmark, + SdDrawDocShell& rDocShell, + NavigatorDragType eDragType ) : + mrParent( rParent ), + maBookmark( rBookmark ), + mrDocShell( rDocShell ), + meDragType( eDragType ) {} + + SdDrawDocShell& GetDocShell() const; + NavigatorDragType GetDragType() const; + public: - SdPageObjsTransferable( SdPageObjsTLB& rParent, const INetBookmark& rBookmark ) : - mrParent( rParent ), maBookmark( rBookmark ) {} + static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId(); + static SdPageObjsTransferable* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxData ) throw(); }; friend class SdPageObjsTLB::SdPageObjsTransferable; diff --git a/sd/source/ui/inc/sdxfer.hxx b/sd/source/ui/inc/sdxfer.hxx index 5ebb3d307219..792feb683b3f 100644 --- a/sd/source/ui/inc/sdxfer.hxx +++ b/sd/source/ui/inc/sdxfer.hxx @@ -2,9 +2,9 @@ * * $RCSfile: sdxfer.hxx,v $ * - * $Revision: 1.10 $ + * $Revision: 1.11 $ * - * last change: $Author: cl $ $Date: 2002-11-19 17:22:06 $ + * last change: $Author: ka $ $Date: 2002-12-11 14:54:59 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -127,6 +127,8 @@ protected: virtual void DragFinished( sal_Int8 nDropAction ); virtual void ObjectReleased(); + virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw( ::com::sun::star::uno::RuntimeException ); + public: SdTransferable( SdDrawDocument* pSrcDoc, SdView* pWorkView, BOOL bInitOnGetData ); @@ -159,6 +161,7 @@ public: public: + static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId(); static SdTransferable* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxData ) throw(); }; diff --git a/sd/source/ui/view/sdview2.cxx b/sd/source/ui/view/sdview2.cxx index d2c2b008f993..cd58deb99627 100644 --- a/sd/source/ui/view/sdview2.cxx +++ b/sd/source/ui/view/sdview2.cxx @@ -2,9 +2,9 @@ * * $RCSfile: sdview2.cxx,v $ * - * $Revision: 1.32 $ + * $Revision: 1.33 $ * - * last change: $Author: cl $ $Date: 2002-10-31 13:22:36 $ + * last change: $Author: ka $ $Date: 2002-12-11 14:54:59 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -173,16 +173,14 @@ struct SdNavigatorDropEvent : public ExecuteDropEvent SdWindow* mpTargetWindow; USHORT mnPage; USHORT mnLayer; - const SdDrawDocShell* mpNavigatorDragDocShell; SdNavigatorDropEvent( const ExecuteDropEvent& rEvt, DropTargetHelper& rTargetHelper, - SdWindow* pTargetWindow, USHORT nPage, USHORT nLayer, const SdDrawDocShell* pNavigatorDragDocShell ) : + SdWindow* pTargetWindow, USHORT nPage, USHORT nLayer ) : ExecuteDropEvent( rEvt ), mrTargetHelper( rTargetHelper ), mpTargetWindow( pTargetWindow ), mnPage( nPage ), - mnLayer( nLayer ), - mpNavigatorDragDocShell( pNavigatorDragDocShell ) {} + mnLayer( nLayer ) {} }; // ----------------------------------------------------------------------------- @@ -789,15 +787,16 @@ sal_Int8 SdView::ExecuteDrop( const ExecuteDropEvent& rEvt, DropTargetHelper& rT if( aDataHelper.HasFormat( SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK ) && aDataHelper.GetINetBookmark( SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK, aINetBookmark ) ) { - const NavigatorDragType eDragType = SD_MOD()->GetCurrentNavigatorDragType(); + SdPageObjsTLB::SdPageObjsTransferable* pPageObjsTransferable = SdPageObjsTLB::SdPageObjsTransferable::getImplementation( aDataHelper.GetXTransferable() ); - if( eDragType == NAVIGATOR_DRAGTYPE_LINK || eDragType == NAVIGATOR_DRAGTYPE_EMBEDDED ) + if( pPageObjsTransferable && + ( NAVIGATOR_DRAGTYPE_LINK == pPageObjsTransferable->GetDragType() || + NAVIGATOR_DRAGTYPE_EMBEDDED == pPageObjsTransferable->GetDragType() ) ) { // insert bookmark from own navigator (handled async. due to possible message box ) Application::PostUserEvent( LINK( this, SdView, ExecuteNavigatorDrop ), new SdNavigatorDropEvent( rEvt, rTargetHelper, pTargetWindow, - nPage, nLayer, - SD_MOD()->GetCurrentNavigatorDragDocShell() ) ); + nPage, nLayer ) ); nRet = nDropAction; } else @@ -884,11 +883,11 @@ sal_Int8 SdView::ExecuteDrop( const ExecuteDropEvent& rEvt, DropTargetHelper& rT IMPL_LINK( SdView, ExecuteNavigatorDrop, SdNavigatorDropEvent*, pSdNavigatorDropEvent ) { - TransferableDataHelper aDataHelper( pSdNavigatorDropEvent->maDropEvent.Transferable ); - INetBookmark aINetBookmark; + TransferableDataHelper aDataHelper( pSdNavigatorDropEvent->maDropEvent.Transferable ); + SdPageObjsTLB::SdPageObjsTransferable* pPageObjsTransferable = SdPageObjsTLB::SdPageObjsTransferable::getImplementation( aDataHelper.GetXTransferable() ); + INetBookmark aINetBookmark; - if( pSdNavigatorDropEvent->mpNavigatorDragDocShell && - aDataHelper.GetINetBookmark( SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK, aINetBookmark ) ) + if( pPageObjsTransferable && aDataHelper.GetINetBookmark( SOT_FORMATSTR_ID_NETSCAPE_BOOKMARK, aINetBookmark ) ) { Point aPos; List aBookmarkList; @@ -916,9 +915,7 @@ IMPL_LINK( SdView, ExecuteNavigatorDrop, SdNavigatorDropEvent*, pSdNavigatorDrop // die einzufuegenden geprueft und gegebenenfalls in einer Ersatzliste // aufgenommen (bNameOK == FALSE -> Benutzer hat abgebrochen) List* pExchangeList = NULL; - - // #93240# swapped order: GetExchangeList() ends drop, which in turn resets GetCurrentNavigatorDragType. - BOOL bLink = ( SD_MOD()->GetCurrentNavigatorDragType() == NAVIGATOR_DRAGTYPE_LINK ? TRUE : FALSE ); + BOOL bLink = ( NAVIGATOR_DRAGTYPE_LINK == pPageObjsTransferable->GetDragType() ? TRUE : FALSE ); BOOL bNameOK = GetExchangeList( pExchangeList, &aBookmarkList, 2 ); BOOL bReplace = FALSE; @@ -929,7 +926,7 @@ IMPL_LINK( SdView, ExecuteNavigatorDrop, SdNavigatorDropEvent*, pSdNavigatorDrop { pDoc->InsertBookmark( &aBookmarkList, pExchangeList, bLink, bReplace, nPgPos, FALSE, - (SdDrawDocShell*) pSdNavigatorDropEvent->mpNavigatorDragDocShell, + &pPageObjsTransferable->GetDocShell(), TRUE, &aPos ); } |