move backing component dnd support into the large thumbnail areas
of the backing window Change-Id: Icf399a8834a25de43909769be08854134991885a
This commit is contained in:
@@ -73,9 +73,6 @@ class BackingComp : public css::lang::XTypeProvider
|
||||
/** the owner frame of this component. */
|
||||
css::uno::Reference< css::frame::XFrame > m_xFrame;
|
||||
|
||||
/** helper for drag&drop. */
|
||||
css::uno::Reference< css::datatransfer::dnd::XDropTargetListener > m_xDropTargetListener;
|
||||
|
||||
//______________________________________
|
||||
// interface
|
||||
|
||||
|
@@ -21,8 +21,6 @@
|
||||
|
||||
#include "backingwindow.hxx"
|
||||
|
||||
#include <svtools/openfiledroptargetlistener.hxx>
|
||||
|
||||
#include <helpid.hrc>
|
||||
|
||||
#include <com/sun/star/beans/NamedValue.hpp>
|
||||
@@ -31,7 +29,6 @@
|
||||
#include <com/sun/star/beans/XPropertySet.hpp>
|
||||
#include <com/sun/star/awt/Toolkit.hpp>
|
||||
#include <com/sun/star/awt/XDataTransferProviderAccess.hpp>
|
||||
#include <com/sun/star/datatransfer/dnd/XDropTarget.hpp>
|
||||
#include <com/sun/star/awt/KeyEvent.hpp>
|
||||
#include <com/sun/star/awt/KeyModifier.hpp>
|
||||
#include <com/sun/star/frame/XLayoutManager.hpp>
|
||||
@@ -453,18 +450,6 @@ void SAL_CALL BackingComp::attachFrame( /*IN*/ const css::uno::Reference< css::f
|
||||
// safe the frame reference
|
||||
m_xFrame = xFrame;
|
||||
|
||||
// establish drag&drop mode
|
||||
OpenFileDropTargetListener* pDropListener = new OpenFileDropTargetListener( m_xContext, m_xFrame);
|
||||
m_xDropTargetListener = css::uno::Reference< css::datatransfer::dnd::XDropTargetListener >(static_cast< ::cppu::OWeakObject* >(pDropListener), css::uno::UNO_QUERY);
|
||||
|
||||
css::uno::Reference< css::awt::XToolkit2 > xToolkit = css::awt::Toolkit::create( m_xContext );
|
||||
css::uno::Reference< css::datatransfer::dnd::XDropTarget > xDropTarget = xToolkit->getDropTarget(m_xWindow);
|
||||
if (xDropTarget.is())
|
||||
{
|
||||
xDropTarget->addDropTargetListener(m_xDropTargetListener);
|
||||
xDropTarget->setActive(sal_True);
|
||||
}
|
||||
|
||||
// initialize the component and it's parent window
|
||||
css::uno::Reference< css::awt::XWindow > xParentWindow = xFrame->getContainerWindow();
|
||||
WorkWindow* pParent = (WorkWindow*)VCLUnoHelper::GetWindow(xParentWindow);
|
||||
@@ -668,19 +653,6 @@ void SAL_CALL BackingComp::dispose()
|
||||
xDispatch->dispatch(aURL, css::uno::Sequence< css::beans::PropertyValue>());
|
||||
}
|
||||
|
||||
// deregister drag&drop helper
|
||||
if (m_xDropTargetListener.is())
|
||||
{
|
||||
css::uno::Reference< css::awt::XToolkit2 > xToolkit = css::awt::Toolkit::create( m_xContext );
|
||||
css::uno::Reference< css::datatransfer::dnd::XDropTarget > xDropTarget = xToolkit->getDropTarget(m_xWindow);
|
||||
if (xDropTarget.is())
|
||||
{
|
||||
xDropTarget->removeDropTargetListener(m_xDropTargetListener);
|
||||
xDropTarget->setActive(sal_False);
|
||||
}
|
||||
m_xDropTargetListener = css::uno::Reference< css::datatransfer::dnd::XDropTargetListener >();
|
||||
}
|
||||
|
||||
// stop listening at the window
|
||||
if (m_xWindow.is())
|
||||
{
|
||||
|
@@ -24,6 +24,7 @@
|
||||
|
||||
#include <unotools/dynamicmenuoptions.hxx>
|
||||
#include <svtools/langhelp.hxx>
|
||||
#include <svtools/openfiledroptargetlistener.hxx>
|
||||
#include <svtools/colorcfg.hxx>
|
||||
|
||||
#include <comphelper/processfactory.hxx>
|
||||
@@ -127,6 +128,18 @@ BackingWindow::BackingWindow( Window* i_pParent ) :
|
||||
get( mpImpressTemplateThumbnails, "impress_templates");
|
||||
get( mpDrawTemplateThumbnails, "draw_templates");
|
||||
|
||||
maDndWindows.push_back(mpAllRecentThumbnails);
|
||||
maDndWindows.push_back(mpWriterRecentThumbnails);
|
||||
maDndWindows.push_back(mpCalcRecentThumbnails);
|
||||
maDndWindows.push_back(mpImpressRecentThumbnails);
|
||||
maDndWindows.push_back(mpDrawRecentThumbnails);
|
||||
maDndWindows.push_back(mpDatabaseRecentThumbnails);
|
||||
maDndWindows.push_back(mpMathRecentThumbnails);
|
||||
maDndWindows.push_back(mpWriterTemplateThumbnails);
|
||||
maDndWindows.push_back(mpCalcTemplateThumbnails);
|
||||
maDndWindows.push_back(mpImpressTemplateThumbnails);
|
||||
maDndWindows.push_back(mpDrawTemplateThumbnails);
|
||||
|
||||
try
|
||||
{
|
||||
mxContext.set( ::comphelper::getProcessComponentContext(), uno::UNO_SET_THROW );
|
||||
@@ -188,6 +201,25 @@ BackingWindow::~BackingWindow()
|
||||
mpCalcTemplateThumbnails ->setOpenTemplateHdl(Link());
|
||||
mpImpressTemplateThumbnails ->setOpenTemplateHdl(Link());
|
||||
mpDrawTemplateThumbnails ->setOpenTemplateHdl(Link());
|
||||
|
||||
// deregister drag&drop helper
|
||||
if (mxDropTargetListener.is())
|
||||
{
|
||||
for (std::vector<Window*>::iterator aI = maDndWindows.begin(),
|
||||
aEnd = maDndWindows.end(); aI != aEnd; ++aI)
|
||||
{
|
||||
Window *pDndWin = *aI;
|
||||
css::uno::Reference< css::datatransfer::dnd::XDropTarget > xDropTarget =
|
||||
pDndWin->GetDropTarget();
|
||||
if (xDropTarget.is())
|
||||
{
|
||||
xDropTarget->removeDropTargetListener(mxDropTargetListener);
|
||||
xDropTarget->setActive(false);
|
||||
}
|
||||
}
|
||||
mxDropTargetListener = css::uno::Reference< css::datatransfer::dnd::XDropTargetListener >();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
IMPL_LINK( BackingWindow, WindowEventListener, VclSimpleEvent*, pEvent )
|
||||
@@ -416,6 +448,22 @@ void BackingWindow::setOwningFrame( const com::sun::star::uno::Reference< com::s
|
||||
mxFrame = xFrame;
|
||||
if( ! mbInitControls )
|
||||
initControls();
|
||||
|
||||
// establish drag&drop mode
|
||||
mxDropTargetListener.set(new OpenFileDropTargetListener(mxContext, mxFrame));
|
||||
|
||||
for (std::vector<Window*>::iterator aI = maDndWindows.begin(),
|
||||
aEnd = maDndWindows.end(); aI != aEnd; ++aI)
|
||||
{
|
||||
Window *pDndWin = *aI;
|
||||
css::uno::Reference< css::datatransfer::dnd::XDropTarget > xDropTarget =
|
||||
pDndWin->GetDropTarget();
|
||||
if (xDropTarget.is())
|
||||
{
|
||||
xDropTarget->addDropTargetListener(mxDropTargetListener);
|
||||
xDropTarget->setActive(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BackingWindow::Resize()
|
||||
|
@@ -34,6 +34,7 @@
|
||||
#include <svtools/acceleratorexecute.hxx>
|
||||
#include <unotools/moduleoptions.hxx>
|
||||
|
||||
#include <com/sun/star/datatransfer/dnd/XDropTarget.hpp>
|
||||
#include <com/sun/star/uno/XComponentContext.hpp>
|
||||
#include <com/sun/star/frame/XDispatchProvider.hpp>
|
||||
#include <com/sun/star/frame/XDesktop.hpp>
|
||||
@@ -50,6 +51,8 @@ class BackingWindow
|
||||
com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider > mxDesktopDispatchProvider;
|
||||
com::sun::star::uno::Reference<com::sun::star::frame::XFrame> mxFrame;
|
||||
com::sun::star::uno::Reference< com::sun::star::frame::XDesktop2 > mxDesktop;
|
||||
/** helper for drag&drop. */
|
||||
com::sun::star::uno::Reference< com::sun::star::datatransfer::dnd::XDropTargetListener > mxDropTargetListener;
|
||||
|
||||
PushButton* mpOpenButton;
|
||||
PushButton* mpTemplateButton;
|
||||
@@ -97,6 +100,8 @@ class BackingWindow
|
||||
TemplateLocalView* mpImpressTemplateThumbnails;
|
||||
TemplateLocalView* mpDrawTemplateThumbnails;
|
||||
|
||||
std::vector<Window*> maDndWindows;
|
||||
|
||||
Rectangle maStartCentButtons;
|
||||
|
||||
bool mbInitControls;
|
||||
|
Reference in New Issue
Block a user