21#include <config_feature_desktop.h>
22#include <config_vclplug.h>
26#include <LibreOfficeKit/LibreOfficeKitEnums.h>
47#include <com/sun/star/datatransfer/dnd/XDragSource.hpp>
48#include <com/sun/star/datatransfer/dnd/XDropTarget.hpp>
49#include <com/sun/star/uno/XComponentContext.hpp>
59 Point aFramePos( rFramePos );
69 Point aTempPos = aFramePos;
132 return ePointerStyle;
143 sal_uInt16 nCode = nMouseCode;
147 bLeave = ((nX < 0) || (nY < 0) ||
148 (nX >=
mpWindowImpl->mpFrameWindow->GetOutDev()->mnOutWidth) ||
149 (nY >=
mpWindowImpl->mpFrameWindow->GetOutDev()->mnOutHeight)) &&
166 mpWindowImpl->mpFrameData->mnMouseMoveId =
nullptr;
172 ImplCallMouseMove( mpWindowImpl->mpFrameData->mnMouseCode );
253 bool bAsyncFocusWaiting =
false;
259 bAsyncFocusWaiting =
true;
262 pFrame = pFrame->
mpWindowImpl->mpFrameData->mpNextFrame;
267 bool bMustNotGrabFocus =
false;
275 bMustNotGrabFocus =
true;
285 ( bAsyncFocusWaiting && !bHasFocus && !bMustNotGrabFocus )) )
303 if( bMustNotGrabFocus )
327 if ( pOldFocusWindow )
332 if ( pOldOverlapWindow != pNewOverlapWindow )
338 if ( pNewOverlapWindow && pNewOverlapWindow->
mpWindowImpl )
343 if ( pNewRealWindow != pNewOverlapWindow && pNewRealWindow && pNewRealWindow->
mpWindowImpl )
352 if ( pOldFocusWindow && ! pOldFocusWindow->
isDisposed() )
378 if( pOldFocusWindow &&
438 mpWindowImpl->mpBorderWindow->SetMouseTransparent( bTransparent );
441 mpWindowImpl->mpSysObj->SetMouseTransparent( bTransparent );
524 else if(
GetOutDev()->ImplIsAntiparallel() )
640 mpWindowImpl->mpFrameData->mxDropTargetListener.clear();
654 return Reference< css::datatransfer::dnd::XDropTarget >();
670 nDefaultActions =
mpWindowImpl->mpFrameData->mxDropTarget->getDefaultActions();
672 if( !
mpWindowImpl->mpFrameData->mxDropTargetListener.is() )
681 Reference< css::datatransfer::dnd::XDragGestureRecognizer > xDragGestureRecognizer(
684 if( xDragGestureRecognizer.is() )
686 xDragGestureRecognizer->addDragGestureListener(
687 Reference< css::datatransfer::dnd::XDragGestureListener > (
mpWindowImpl->mpFrameData->mxDropTargetListener, UNO_QUERY));
690 mpWindowImpl->mpFrameData->mbInternalDragGestureRecognizer =
true;
708 return Reference< css::datatransfer::dnd::XDropTarget > (
mpWindowImpl->mxDNDListenerContainer, UNO_QUERY );
713#if HAVE_FEATURE_DESKTOP
716 return Reference<css::datatransfer::dnd::XDragSource>();
733 return Reference< css::datatransfer::dnd::XDragSource > ();
739 return Reference< css::datatransfer::dnd::XDragGestureRecognizer > (
GetDropTarget(), UNO_QUERY );
static ImplSVEvent * PostUserEvent(const Link< void *, void > &rLink, void *pCaller=nullptr, bool bReferenceLink=false)
Post a user event to the default window.
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
SAL_DLLPRIVATE void ReMirror(Point &rPoint) const
virtual bool HasMirroredGraphics() const
constexpr tools::Long Y() const
void setX(tools::Long nX)
tools::Long AdjustY(tools::Long nVertMove)
tools::Long AdjustX(tools::Long nHorzMove)
constexpr tools::Long X() const
css::uno::Reference< css::uno::XInterface > CreateDropTarget(const SystemEnvData *=nullptr)
css::uno::Reference< css::uno::XInterface > CreateDragSource(const SystemEnvData *=nullptr)
reference_type * get() const
Get the body.
ImplFrameData * mpFrameData
void EnableChildPointerOverwrite(bool bOverwrite)
Point OutputToScreenPixel(const Point &rPos) const
SAL_DLLPRIVATE void ImplInvertFocus(const tools::Rectangle &rRect)
void SetLastMousePos(const Point &rPos)
Similar to SetPointerPosPixel(), but sets the frame data's last mouse position instead.
static SAL_DLLPRIVATE void ImplNewInputContext()
SAL_DLLPRIVATE void ImplGrabFocus(GetFocusFlags nFlags)
vcl::Window * GetParent() const
bool IsInputEnabled() const
bool IsMouseCaptured() const
void ShowPointer(bool bVisible)
SAL_DLLPRIVATE void ImplCallDeactivateListeners(vcl::Window *)
void EndTracking(TrackingEventFlags nFlags=TrackingEventFlags::NONE)
SAL_DLLPRIVATE void ImplGenerateMouseMove()
SAL_DLLPRIVATE bool ImplIsOverlapWindow() const
vcl::Window * GetWindow(GetWindowType nType) const
PointerState GetPointerState()
virtual void MouseButtonDown(const MouseEvent &rMEvt)
Point GetLastPointerPosPixel()
static SAL_DLLPRIVATE void ImplCallFocusChangeActivate(vcl::Window *pNewOverlapWindow, vcl::Window *pOldOverlapWindow)
SAL_DLLPRIVATE bool ImplTestMousePointerSet()
virtual void MouseButtonUp(const MouseEvent &rMEvt)
SAL_DLLPRIVATE bool ImplStopDnd()
SAL_DLLPRIVATE vcl::Window * ImplGetParent() const
SAL_DLLPRIVATE void ImplCallMouseMove(sal_uInt16 nMouseCode, bool bModChanged=false)
void SetMouseTransparent(bool bTransparent)
SAL_DLLPRIVATE vcl::Window * ImplGetFirstOverlapWindow()
SAL_DLLPRIVATE void ImplCallActivateListeners(vcl::Window *)
::OutputDevice const * GetOutDev() const
SAL_DLLPRIVATE void ImplStartDnd()
bool IsInModalMode() const
A window is in modal mode if one of its children or subchildren is a running modal window (a modal di...
void SetPointerPosPixel(const Point &rPos)
SAL_DLLPRIVATE ImplWinData * ImplGetWinData() const
virtual void MouseMove(const MouseEvent &rMEvt)
SAL_DLLPRIVATE void CompatLoseFocus()
std::unique_ptr< WindowImpl > mpWindowImpl
bool IsRTLEnabled() const
Size GetOutputSizePixel() const
Point GetPointerPosPixel()
DialogControlFlags GetDialogControlFlags() const
virtual void SetPointer(PointerStyle)
SAL_DLLPRIVATE ImplFrameData * ImplGetFrameData()
virtual WindowHitTest ImplHitTest(const Point &rFramePos)
css::uno::Reference< css::datatransfer::dnd::XDragSource > GetDragSource()
tools::Rectangle GetOutputRectPixel() const
css::uno::Reference< css::datatransfer::dnd::XDropTarget > GetDropTarget()
void InvertTracking(const tools::Rectangle &rRect, ShowTrackFlags nFlags)
vcl::Window * ImplGetWindow() const
if this is a proxy return the client, otherwise itself
Point ScreenToOutputPixel(const Point &rPos) const
virtual bool EventNotify(NotifyEvent &rNEvt)
SAL_DLLPRIVATE PointerStyle ImplGetMousePointer() const
css::uno::Reference< css::datatransfer::dnd::XDragGestureRecognizer > GetDragGestureRecognizer()
SAL_DLLPRIVATE vcl::Window * ImplGetFrameWindow() const
PointerStyle GetPointer() const
SAL_DLLPRIVATE void ImplGrabFocusToDocument(GetFocusFlags nFlags)
virtual const SystemEnvData * GetSystemData() const
SAL_DLLPRIVATE void CompatGetFocus()
GraphicsSharedPtr mpGraphics
#define LINK(Instance, Class, Member)
static bool IsWindowFocused(const WindowImpl &rWinImpl)
IMPL_LINK_NOARG(QuickSelectionEngine_Data, SearchStringTimeout, Timer *, void)
ImplSVFrameData maFrameData
ImplSVWinData * mpWinData
VclPtr< vcl::Window > mpFirstFrame
VclPtr< vcl::Window > mpFocusWin
VclPtr< vcl::Window > mpCaptureWin
VclPtr< vcl::Window > mpTrackWin
VclPtr< vcl::Window > mpExtTextInputWin
ImplSVData * ImplGetSVData()
@ FloatWinPopupModeEndCancel
@ FloatWinPopupModeEndCancel
bool ImplHandleMouseEvent(const VclPtr< vcl::Window > &xWindow, NotifyEventType nSVEvent, bool bMouseLeave, tools::Long nX, tools::Long nY, sal_uInt64 nMsgTime, sal_uInt16 nCode, MouseEventModifiers nMode)
bool ImplCallPreNotify(NotifyEvent &rEvt)
WinBits const WB_MOVEABLE
WinBits const WB_SYSTEMFLOATWIN