61#include <com/sun/star/datatransfer/dnd/DNDConstants.hpp>
62#include <com/sun/star/datatransfer/dnd/XDragSource.hpp>
63#include <com/sun/star/awt/MouseEvent.hpp>
65#define IMPL_MIN_NEEDSYSWIN 49
85 bool bHitTestInsideRect =
false;
92 if ( !pFloat || bHitTestInsideRect )
112 else if ( bHitTestInsideRect )
122 if ( bHitTestInsideRect )
178 if ( !(
bool(nHelpMode)) )
183 HelpEvent aHelpEvent( rMousePos, nHelpMode );
204 bool bMouse =
false,
Point const * pPos =
nullptr )
249struct ContextMenuEvent
259 ContextMenuEvent* pEv =
static_cast<ContextMenuEvent*
>(pCEvent);
261 if( ! pEv->pWindow->isDisposed() )
274 "(NotifyEventType " <<
static_cast<sal_uInt16
>(nSVEvent) <<
") "
275 "(MouseLeave " << bMouseLeave <<
") "
276 "(X, Y " << nX <<
", " << nY <<
") "
277 "(Code " << nCode <<
") "
278 "(Modifiers " <<
static_cast<sal_uInt16
>(nMode) <<
")");
281 Point aMousePos( nX, nY );
284 sal_uInt16 nClicks(0);
345 "ImplHandleMouseEvent: TrackWin != CaptureWin");
360 "ImplHandleMouseEvent: mouse event is not sent to capture window" );
379 if ( !pChild && !bMouseLeave )
389 pChildWinOutDev->
ReMirror( aMousePos );
485 css::uno::Reference< css::datatransfer::dnd::XDragGestureRecognizer > xDragGestureRecognizer(
487 css::uno::UNO_QUERY );
489 if( xDragGestureRecognizer.is() )
497 css::awt::MouseEvent aMouseEvent(
static_cast < css::uno::XInterface *
> (
nullptr ),
512 css::uno::Reference< css::datatransfer::dnd::XDragSource > xDragSource = pMouseDownWin->
GetDragSource();
514 if( xDragSource.is() )
516 static_cast < DNDListenerContainer *
> ( xDragGestureRecognizer.get() )->fireDragGestureEvent( 0,
517 relLoc.
X(), relLoc.
Y(), xDragSource, css::uno::Any( aMouseEvent ) );
532 if ( pChild != pMouseMoveWin )
614 SAL_WARN_IF( !pChild,
"vcl",
"ImplHandleMouseEvent: pChild == NULL" );
621 MouseEvent aMEvt( aChildPos, nClicks, nMode, nCode, nCode );
642 bool bCallHelpRequest =
true;
643 SAL_WARN_IF( !pChild,
"vcl",
"ImplHandleMouseEvent: pChild is NULL" );
682 bCallHelpRequest =
false;
688 bCallHelpRequest =
false;
696 bCallHelpRequest =
false;
793 ContextMenuEvent* pEv =
new ContextMenuEvent;
794 pEv->pWindow = pChild;
795 pEv->aChildPos = aChildPos;
812 Point aMousePos(nX, nY);
837 css::uno::Reference<css::datatransfer::dnd::XDropTargetDragContext> xDropTargetDragContext =
839 css::uno::Reference<css::datatransfer::dnd::XDropTarget> xDropTarget(
842 if (!xDropTarget.is() ||
843 !xDropTargetDragContext.is() ||
852 xDropTargetDragContext,
853 css::datatransfer::dnd::DNDConstants::ACTION_MOVE,
856 (css::datatransfer::dnd::DNDConstants::ACTION_COPY |
857 css::datatransfer::dnd::DNDConstants::ACTION_MOVE |
858 css::datatransfer::dnd::DNDConstants::ACTION_LINK));
867 css::uno::Reference<css::datatransfer::XTransferable> xTransfer;
868 css::uno::Reference<css::datatransfer::dnd::XDropTargetDropContext> xDropTargetDropContext =
870 css::uno::Reference<css::datatransfer::dnd::XDropTarget> xDropTarget(
873 if (!xDropTarget.is() || !xDropTargetDropContext.is())
881 xDropTargetDropContext,
882 css::datatransfer::dnd::DNDConstants::ACTION_MOVE,
885 (css::datatransfer::dnd::DNDConstants::ACTION_COPY |
886 css::datatransfer::dnd::DNDConstants::ACTION_MOVE |
887 css::datatransfer::dnd::DNDConstants::ACTION_LINK),
925 css::uno::Reference< css::datatransfer::dnd::XDragGestureRecognizer > xDragGestureRecognizer(
927 css::uno::UNO_QUERY );
929 if (xDragGestureRecognizer.is())
932 css::awt::MouseEvent
aEvent(
933 static_cast < css::uno::XInterface *
> (
nullptr ),
944 css::uno::Reference< css::datatransfer::dnd::XDragSource > xDragSource =
947 if (xDragSource.is())
950 fireDragGestureEvent(
964 MouseEvent aMouseEvent(aWinPos, nClicks, nMode, nCode, nCode);
1068 sal_uInt16 nKeyCode, sal_uInt16 nCharCode, sal_uInt16 nRepeat,
bool bForward )
1072 sal_uInt16 nEvCode = aKeyCode.
GetCode();
1124 sal_uInt16 nOrigCode = aKeyCode.
GetCode();
1134 sal_uInt16 nEscCode = aKeyCode.
GetCode();
1157 sal_uInt16 nCode = aKeyCode.
GetCode();
1186 if (
auto pEdit =
dynamic_cast<Edit*
>(pChild.
get()))
1187 bPass = pEdit->IsPassword();
1191 nCharCode =
static_cast<sal_uInt16
>(aSep[0]);
1201 NotifyEvent aNotifyEvt( nSVEvent, pChild, &aKeyEvt );
1205 if ( !bKeyPreNotify && !pChild->
isDisposed() )
1216 pChild->
KeyUp( aKeyEvt );
1229 sal_uInt16 nCode = aKeyCode.
GetCode();
1232 bool bToolboxFocus=
false;
1240 bToolboxFocus =
true;
1253 ( (nCode ==
KEY_F1) && aKeyCode.
IsShift() && bToolboxFocus ) )
1281 else if ( aKeyCode.
IsShift() )
1320 pChild->
KeyUp( aKeyEvt );
1337 const OUString& rText,
1339 sal_Int32 nCursorPos, sal_uInt16 nCursorFlags )
1359 SAL_WARN(
"vcl",
"Failed to get ext text input context");
1382 bool bOnlyCursor =
false;
1383 sal_Int32 nMinLen = std::min( pWinData->
mpExtOldText->getLength(), rText.getLength() );
1384 sal_Int32 nDeltaStart = 0;
1385 while ( nDeltaStart < nMinLen )
1387 if ( (*pWinData->
mpExtOldText)[nDeltaStart] != rText[nDeltaStart] )
1398 while (
i < nDeltaStart )
1409 if ( (nDeltaStart >= nMinLen) &&
1410 (pWinData->
mpExtOldText->getLength() == rText.getLength()) )
1415 nCursorPos, nCursorFlags,
1476 if ( !aSize.
Width() )
1487 if (pVertical !=
nullptr)
1538class HandleGestureEventBase
1548 , m_pWindow(pWindow)
1549 , m_aMousePos(rMousePos)
1555 virtual bool CallCommand(
vcl::Window *pWindow,
const Point &rMousePos) = 0;
1556 virtual ~HandleGestureEventBase() {}
1561bool HandleGestureEventBase::Setup()
1564 if (m_pSVData->mpWinData->mpAutoScrollWin)
1565 m_pSVData->mpWinData->mpAutoScrollWin->EndAutoScroll();
1568 return !m_pWindow->isDisposed();
1576 if (m_pSVData->mpWinData->mpFirstFloat && !m_pSVData->mpWinData->mpCaptureWin &&
1577 !m_pSVData->mpWinData->mpFirstFloat->ImplIsFloatPopupModeWindow( m_pWindow ) )
1579 bool bHitTestInsideRect =
false;
1580 pMouseWindow = m_pSVData->mpWinData->mpFirstFloat->ImplFloatHitTest( m_pWindow, m_aMousePos, bHitTestInsideRect );
1582 pMouseWindow = m_pSVData->mpWinData->mpFirstFloat;
1595 m_pWindow->OutputToAbsoluteScreenPixel(
1596 m_pWindow->ScreenToOutputPixel( m_aMousePos ) ) ) ) );
1604 pMouseWindow = pMouseWindow->
GetParent();
1607 return pMouseWindow;
1619 m_pWindow->OutputToAbsoluteScreenPixel(
1620 m_pWindow->ScreenToOutputPixel( m_aMousePos ) ) ) ) );
1621 bool bPropagate = CallCommand(pMouseWindow, aRelMousePos);
1623 pDispatchedTo = pMouseWindow;
1630 if ( pFocusWindow && (pFocusWindow != pMouseWindow) &&
1631 (pFocusWindow == m_pSVData->mpWinData->mpFocusWin) )
1639 m_pWindow->OutputToAbsoluteScreenPixel(
1640 m_pWindow->ScreenToOutputPixel( m_aMousePos ) ) ) ) );
1641 bool bPropagate = CallCommand(pFocusWindow, aRelMousePos);
1643 pDispatchedTo = pMouseWindow;
1647 return pDispatchedTo;
1652class HandleWheelEvent :
public HandleGestureEventBase
1658 : HandleGestureEventBase(pWindow,
Point(rEvt.mnX, rEvt.mnY))
1661 sal_uInt16 nCode = rEvt.
mnCode;
1662 bool bHorz = rEvt.
mbHorz;
1679 virtual bool CallCommand(
vcl::Window *pWindow,
const Point &rMousePos)
override
1715class HandleGestureEvent :
public HandleGestureEventBase
1719 : HandleGestureEventBase(pWindow, rMousePos)
1727bool HandleGestureEvent::HandleEvent()
1734 bool bHandled = Dispatch(pTarget) !=
nullptr;
1740 HandleWheelEvent aHandler(pWindow, rEvt);
1741 return aHandler.HandleEvent(rEvt);
1746class HandleGestureSwipeEvent :
public HandleGestureEvent
1752 : HandleGestureEvent(pWindow,
Point(rEvt.mnX, rEvt.mnY)),
1753 m_aSwipeData(rEvt.mnVelocityX)
1766 HandleGestureSwipeEvent aHandler(pWindow, rEvt);
1767 return aHandler.HandleEvent();
1772class HandleGestureLongPressEvent :
public HandleGestureEvent
1778 : HandleGestureEvent(pWindow,
Point(rEvt.mnX, rEvt.mnY)),
1779 m_aLongPressData(rEvt.mnX, rEvt.mnY)
1792 HandleGestureLongPressEvent aHandler(pWindow, rEvt);
1793 return aHandler.HandleEvent();
1798class HandleGesturePanEvent :
public HandleGestureEvent
1805 : HandleGestureEvent(pWindow,
Point(rEvent.mnX, rEvent.mnY))
1806 , m_aGestureData(rEvent.mnX, rEvent.mnY, rEvent.meEventType, rEvent.mfOffset, rEvent.meOrientation)
1820 HandleGesturePanEvent aHandler(pWindow, rEvent);
1821 return aHandler.HandleEvent();
1826class HandleGestureZoomEvent :
public HandleGestureEvent
1833 : HandleGestureEvent(pWindow,
Point(rEvent.mnX, rEvent.mnY))
1834 , m_aGestureData(rEvent.mnX, rEvent.mnY, rEvent.meEventType, rEvent.mfScaleDelta)
1848 HandleGestureZoomEvent aHandler(pWindow, rEvent);
1849 return aHandler.HandleEvent();
1854class HandleGestureRotateEvent :
public HandleGestureEvent
1861 : HandleGestureEvent(pWindow,
Point(rEvent.mnX, rEvent.mnY))
1862 , m_aGestureData(rEvent.mnX, rEvent.mnY, rEvent.meEventType, rEvent.mfAngleDelta)
1876 HandleGestureRotateEvent aHandler(pWindow, rEvent);
1877 return aHandler.HandleEvent();
1888 if( bImmediateUpdate )
1923 (nNewWidth > 0 && nNewHeight > 0) ||
1937 bool bStartTimer =
true;
1950 bStartTimer =
false;
1956 bStartTimer =
false;
1960 bStartTimer =
false;
1980 bool bMinimized = (nNewWidth <= 0) || (nNewHeight <= 0);
2021 while ( pTempWindow )
2037 if (!ImplGetWindowImpl() || !ImplGetWindowImpl()->mpFrameData)
2040 ImplGetWindowImpl()->mpFrameData->mnFocusId =
nullptr;
2044 bool bHasFocus = ImplGetWindowImpl()->mpFrameData->mbHasFocus || ImplGetWindowImpl()->mpFrameData->mbSysObjFocus;
2050 if ( ImplGetWindowImpl()->mpFrameData->mbStartFocusState != bHasFocus )
2053 if ( ImplGetWindowImpl()->mpFrameData->mpFocusWin )
2055 bool bHandled =
false;
2056 if ( ImplGetWindowImpl()->mpFrameData->mpFocusWin->IsInputEnabled() &&
2057 ! ImplGetWindowImpl()->mpFrameData->mpFocusWin->IsInModalMode() )
2059 if ( ImplGetWindowImpl()->mpFrameData->mpFocusWin->IsEnabled() )
2061 ImplGetWindowImpl()->mpFrameData->mpFocusWin->GrabFocus();
2064 else if( ImplGetWindowImpl()->mpFrameData->mpFocusWin->ImplHasDlgCtrl() )
2068 ImplGetWindowImpl()->mpFrameData->mpFocusWin->ImplDlgCtrlNextWindow();
2089 vcl::Window* pFocusWin = ImplGetWindowImpl()->mpFrameData->mpFocusWin;
2114 if ( pOldRealWindow != pOldOverlapWindow )
2135 if ( ImplGetWindowImpl()->mpFrameData->mbStartFocusState != bHasFocus )
2205struct DelayedCloseEvent
2214 DelayedCloseEvent* pEv =
static_cast<DelayedCloseEvent*
>(pCEvent);
2216 if( ! pEv->pWindow->isDisposed() )
2219 if( pEv->pWindow->IsSystemWindow() )
2221 else if( pEv->pWindow->IsDockingWindow() )
2231 bool bWasPopup =
false;
2267 rLink.
Call(*pSysWin);
2275 DelayedCloseEvent* pEv =
new DelayedCloseEvent;
2276 pEv->pWindow = pWin;
2325 pEvent->
mnX, pEvent->
mnY,
2333 pEvent->
mnX, pEvent->
mnY,
2341 pEvent->
mnX, pEvent->
mnY,
2354 pEvent->
mnX, pEvent->
mnY,
2412 pWindow = pTrackWin;
2418 sal_uInt16 nNewCode = pEvent->
mnCode;
2419 if ( nOldCode != nNewCode )
2508 pEvt->
mnX = aCursorRect.
Left();
2509 pEvt->
mnY = aCursorRect.
Top();
2559 if( aSelRange.
Min() < 0 )
2561 else if( aSelRange.
Min() > pEvt->
maText.getLength() )
2566 if( aSelRange.
Max() < 0 )
2568 else if( aSelRange.
Max() > pEvt->
maText.getLength() )
2830 static bool bInQueryExit =
false;
2833 bInQueryExit =
true;
2842 bInQueryExit =
false;
2916 auto const * pGestureEvent =
static_cast<GestureEventPan const *
>(pEvent);
2919 aSalGestureEvent.
mfOffset = pGestureEvent->mnOffset;
2920 aSalGestureEvent.
mnX = pGestureEvent->mnX;
2921 aSalGestureEvent.
mnY = pGestureEvent->mnY;
2922 aSalGestureEvent.
meEventType = pGestureEvent->meEventType;
2923 aSalGestureEvent.
meOrientation = pGestureEvent->meOrientation;
2930 auto const * aSalGestureEvent =
static_cast<SalGestureEvent const *
>(pEvent);
2947 SAL_WARN(
"vcl.layout",
"ImplWindowFrameProc(): unknown event (" <<
static_cast<int>(nEvent) <<
")" );
const MouseSettings & GetMouseSettings() const
const StyleSettings & GetStyleSettings() const
static bool GetLayoutRTL()
const LocaleDataWrapper & GetLocaleDataWrapper() const
Base class used mainly for the LibreOffice Desktop class.
virtual void OverrideSystemSettings(AllSettings &rSettings)
Sets user settings in settings object to override system settings.
static bool HandleKey(VclEventId nEvent, vcl::Window *pWin, KeyEvent *pKeyEvent)
Handle keypress event.
static void Yield()
Process the next event.
static void MergeSystemSettings(AllSettings &rSettings)
Set the settings object to the platform/desktop environment system settings.
static void ImplCallEventListenersApplicationDataChanged(void *pData)
Send event to all VCL application event listeners.
static const AllSettings & GetSettings()
Gets the application's settings.
static ImplSVEvent * PostUserEvent(const Link< void *, void > &rLink, void *pCaller=nullptr, bool bReferenceLink=false)
Post a user event to the default window.
static void Quit()
Quit the program.
static void SetSettings(const AllSettings &rSettings)
Sets the application's settings and notifies all windows of the change.
static void NotifyAllWindows(DataChangedEvent &rDCEvt)
Notify all windows that the application has changed data.
SAL_DLLPRIVATE FloatingWindow * ImplFindLastLevelFloat()
SAL_DLLPRIVATE bool ImplIsFloatPopupModeWindow(const vcl::Window *pWindow)
SAL_DLLPRIVATE FloatingWindow * ImplFloatHitTest(vcl::Window *pReference, const Point &rPos, bool &rbHitTestInsideRect)
void EndPopupMode(FloatWinPopupEndFlags nFlags=FloatWinPopupEndFlags::NONE)
SAL_DLLPRIVATE void ImplSetMouseDown()
FloatWinPopupFlags GetPopupModeFlags() const
SAL_DLLPRIVATE bool ImplIsMouseDown() const
SAL_DLLPRIVATE bool ImplIsInPrivatePopupMode() const
void SetKeyboardActivated(bool bKeyboard)
static bool StartExtHelp()
virtual void Start(bool bStartTimer=true) override
Schedules the task for execution.
bool IsAccelKey(const vcl::KeyCode &rKeyCode)
const vcl::Font & GetFont() const
sal_Unicode GetCharCode() const
const vcl::KeyCode & GetKeyCode() const
sal_uInt16 GetRepeat() const
const OUString & getNumDecimalSep() const
sal_uInt16 GetModifier() const
sal_uInt16 GetButtons() const
const Point & GetPosPixel() const
MouseMiddleButtonAction GetMiddleButtonAction() const
sal_uInt64 GetDoubleClickTime() const
static sal_uInt16 GetStartDragCode()
sal_Int32 GetDoubleClickWidth() const
sal_Int32 GetDoubleClickHeight() const
sal_Int32 GetStartDragWidth() const
sal_Int32 GetStartDragHeight() const
static sal_uInt16 GetContextMenuClicks()
static sal_uInt16 GetContextMenuCode()
vcl::Window * GetWindow() const
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
Size GetOutputSize() const
static SAL_DLLPRIVATE void ImplUpdateAllFontData(bool bNewFontLists)
SAL_DLLPRIVATE bool ImplIsAntiparallel() const
SAL_DLLPRIVATE tools::Rectangle ImplLogicToDevicePixel(const tools::Rectangle &rLogicRect) const
Convert a logical rectangle to a rectangle in physical device pixel units.
tools::Long GetOutputHeightPixel() const
SAL_DLLPRIVATE tools::Long ImplLogicWidthToDevicePixel(tools::Long nWidth) const
Convert a logical width to a width in units of device pixels.
SAL_DLLPRIVATE void ReMirror(Point &rPoint) const
virtual bool HasMirroredGraphics() const
constexpr tools::Long Y() const
constexpr tools::Long X() const
A SalFrame is a system window (e.g. an X11 window).
SalFrameGeometry maGeometry
absolute, unmirrored values
virtual void GetClientSize(tools::Long &rWidth, tools::Long &rHeight)=0
virtual void SetPointer(PointerStyle ePointerStyle)=0
SalFrameGeometry GetGeometry() const
void setMin(tools::Long nMin)
void setMax(tools::Long nMax)
constexpr tools::Long getHeight() const
constexpr tools::Long getWidth() const
void setWidth(tools::Long nWidth)
constexpr tools::Long Width() const
A helper class that calls Application::ReleaseSolarMutex() in its constructor and restores the mutex ...
sal_Int32 GetCursorSize() const
const Link< SystemWindow &, void > & GetCloseHdl() const
static UITestLogger & getInstance()
void logKeyInput(VclPtr< vcl::Window > const &xUIElement, const KeyEvent &rEvent)
reference_type * get() const
Get the body.
bool SetOutputSizePixel(const Size &rNewSize, bool bErase=true, bool bAlphaMaskTransparent=false)
VclPtr< vcl::Window > mpNext
VclPtr< vcl::Window > mpFirstChild
css::uno::Reference< css::uno::XInterface > mxDNDListenerContainer
VclPtr< vcl::Window > mpFrameWindow
ImplFrameData * mpFrameData
ImplPaintFlags mnPaintFlags
VclPtr< vcl::Window > mpClientWindow
VclPtr< vcl::Window > mpLastFocusWindow
VclPtr< vcl::Window > mpFirstOverlap
bool IsPresentationMode() const
const Point & GetPos() const
SAL_DLLPRIVATE void ImplShow()
SAL_DLLPRIVATE void ImplHide()
const Size & GetSize() const
sal_uInt16 GetCode() const
sal_uInt16 GetModifier() const
sal_uInt16 GetFullCode() const
constexpr sal_Int32 height() const
constexpr sal_Int32 width() const
Point AbsoluteScreenToOutputPixel(const Point &rPos) const
Point OutputToScreenPixel(const Point &rPos) const
SAL_DLLPRIVATE bool ImplIsWindowOrChild(const vcl::Window *pWindow, bool bSystemWindow=false) const
bool IsReallyVisible() const
vcl::Window * GetParent() const
ActivateModeFlags GetActivateMode() const
virtual void RequestHelp(const HelpEvent &rHEvt)
SAL_DLLPRIVATE vcl::Window * ImplFindWindow(const Point &rFramePos)
virtual Selection GetSurroundingTextSelection() const
tools::Long GetOutOffXPixel() const
bool IsInputEnabled() const
const InputContext & GetInputContext() const
Point LogicToPixel(const Point &rLogicPt) const
SAL_DLLPRIVATE void ImplCallDeactivateListeners(vcl::Window *)
void EndTracking(TrackingEventFlags nFlags=TrackingEventFlags::NONE)
WindowType GetType() const
bool SupportsDoubleBuffering() const
Can the widget derived from this Window do the double-buffering via RenderContext properly?
virtual void Tracking(const TrackingEvent &rTEvt)
virtual void Command(const CommandEvent &rCEvt)
vcl::Window * GetWindow(GetWindowType nType) const
virtual void MouseButtonDown(const MouseEvent &rMEvt)
vcl::Cursor * GetCursor() const
SAL_DLLPRIVATE bool CompatPreNotify(NotifyEvent &rNEvt)
SAL_DLLPRIVATE void ImplNotifyIconifiedState(bool bIconified)
const AllSettings & GetSettings() const
virtual void MouseButtonUp(const MouseEvent &rMEvt)
SAL_DLLPRIVATE void ImplNotifyKeyMouseCommandEventListeners(NotifyEvent &rNEvt)
virtual void KeyInput(const KeyEvent &rKEvt)
SAL_DLLPRIVATE bool ImplSetClipFlag(bool bSysObjOnlySmaller=false)
tools::Long GetOutOffYPixel() const
virtual OUString GetSurroundingText() const
SAL_DLLPRIVATE void ImplCallMouseMove(sal_uInt16 nMouseCode, bool bModChanged=false)
void ToTop(ToTopFlags nFlags=ToTopFlags::NONE)
SAL_DLLPRIVATE vcl::Window * ImplGetFirstOverlapWindow()
::OutputDevice const * GetOutDev() const
bool IsInModalMode() const
A window is in modal mode if one of its children or subchildren is a running modal window (a modal di...
SAL_DLLPRIVATE void ImplCallMove()
SAL_DLLPRIVATE ImplWinData * ImplGetWinData() const
virtual bool DeleteSurroundingText(const Selection &rSelection)
SAL_DLLPRIVATE WindowImpl * ImplGetWindowImpl() const
virtual void MouseMove(const MouseEvent &rMEvt)
SAL_DLLPRIVATE void CompatLoseFocus()
SalFrame * ImplGetFrame() const
bool IsRTLEnabled() const
virtual Size GetSizePixel() const
Size GetOutputSizePixel() const
virtual void Deactivate()
Point GetPointerPosPixel()
SAL_DLLPRIVATE ImplFrameData * ImplGetFrameData()
const tools::Rectangle * GetCursorRect() const
SAL_DLLPRIVATE bool ImplIsFloatingWindow() const
css::uno::Reference< css::datatransfer::dnd::XDragSource > GetDragSource()
bool IsWindowOrChild(const vcl::Window *pWindow, bool bSystemWindow=false) const
SAL_DLLPRIVATE void ImplCallResize()
tools::Long GetCursorExtTextInputWidth() const
virtual void KeyUp(const KeyEvent &rKEvt)
Point OutputToAbsoluteScreenPixel(const Point &rPos) const
SAL_DLLPRIVATE void ImplInvalidateOverlapFrameRegion(const vcl::Region &rRegion)
vcl::Window * ImplGetWindow() const
if this is a proxy return the client, otherwise itself
Point ScreenToOutputPixel(const Point &rPos) const
bool IsMenuFloatingWindow() const
SAL_DLLPRIVATE PointerStyle ImplGetMousePointer() const
SAL_DLLPRIVATE vcl::Window * ImplGetFrameWindow() const
#define DBG_ASSERT(sCon, aError)
#define DBG_TESTSOLARMUTEX()
void ImplDestroyHelpWindow(bool bUpdateHideTime)
constexpr sal_uInt16 KEY_RETURN
constexpr sal_uInt16 KEY_F2
constexpr sal_uInt16 KEY_CONTEXTMENU
constexpr sal_uInt16 KEY_MOD2
constexpr sal_uInt16 KEY_ESCAPE
constexpr sal_uInt16 KEY_MOD1
constexpr sal_uInt16 KEY_LEFT
constexpr sal_uInt16 KEY_DECIMAL
constexpr sal_uInt16 KEY_F6
constexpr sal_uInt16 KEY_F10
constexpr sal_uInt16 KEY_F1
constexpr sal_uInt16 KEY_MOD3
constexpr sal_uInt16 KEY_RIGHT
constexpr sal_uInt16 KEY_HELP
constexpr sal_uInt16 KEY_SHIFT
#define LINK(Instance, Class, Member)
#define SAL_WARN_IF(condition, area, stream)
#define SAL_WARN(area, stream)
#define SAL_INFO(area, stream)
std::unique_ptr< sal_Int32[]> pData
constexpr OUStringLiteral aData
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
void ImplDeletePrnQueueList()
@ DeleteSurroundingTextRequest
@ SurroundingTextSelectionChange
@ ExternalMouseButtonDown
VclPtr< vcl::Window > mpTrackWin
tools::Long mnBeforeLastMouseX
sal_uInt64 mnMouseDownTime
MouseEventModifiers mnMouseMode
VclPtr< VirtualDevice > mpBuffer
Buffer for the double-buffering.
tools::Long mnFirstMouseY
VclPtr< vcl::Window > mpMouseMoveWin
tools::Long mnBeforeLastMouseY
tools::Long mnLastMouseWinY
VclPtr< vcl::Window > mpMouseDownWin
tools::Long mnFirstMouseX
VclPtr< vcl::Window > mpFocusWin
sal_uInt16 mnFirstMouseCode
bool mbInternalDragGestureRecognizer
tools::Long mnLastMouseWinX
sal_uInt64 mnLastInputTime
VclPtr< PopupMenu > mpActivePopupMenu
ImplAccelManager * mpAccelMgr
ImplSVWinData * mpWinData
Link< void *, void > maLink
VclPtr< HelpTextWindow > mpHelpWin
VclPtr< vcl::Window > mpLastWheelWindow
VclPtr< FloatingWindow > mpFirstFloat
std::unique_ptr< AutoTimer > mpTrackTimer
StartTrackingFlags mnTrackFlags
SalWheelMouseEvent maLastWheelEvent
VclPtr< vcl::Window > mpAutoScrollWin
VclPtr< vcl::Window > mpFocusWin
VclPtr< vcl::Window > mpCaptureWin
VclPtr< vcl::Window > mpTrackWin
VclPtr< vcl::Window > mpExtTextInputWin
std::vector< VclPtr< Dialog > > mpExecuteDialogs
Stack of dialogs that are Execute()'d - the last one is the top most one.
tools::Long mnCompositionCharRects
std::unique_ptr< tools::Rectangle[]> mpCompositionCharRects
std::optional< OUString > mpExtOldText
std::unique_ptr< ExtTextInputAttr[]> mpExtOldAttrAry
const ExtTextInputAttr * mpTextAttr
PanningOrientation meOrientation
GestureEventPanType meEventType
tools::Long mnBoundHeight
tools::Long mnCursorBoundHeight
tools::Long mnCursorBoundWidth
tools::Long mnCursorBoundX
tools::Long mnCursorBoundY
ImplSVData * ImplGetSVData()
ImplSVHelpData & ImplGetSVHelpData()
static void ImplHandleSurroundingTextRequest(vcl::Window *pWindow, OUString &rText, Selection &rSelRange)
static bool ImplHandleGestureRotateEvent(vcl::Window *pWindow, const SalGestureRotateEvent &rEvent)
IMPL_LINK_NOARG(vcl::Window, ImplAsyncFocusHdl, void *, void)
static void ImplHandleSalSettings(SalEvent nEvent)
static bool ImplHandleGestureEvent(vcl::Window *pWindow, const SalGestureEvent &rEvent)
static void DelayedCloseEventLink(void *pCEvent, void *)
static void ImplHandleSurroundingTextSelectionChange(vcl::Window *pWindow, sal_uLong nStart, sal_uLong nEnd)
MouseEventModifiers ImplGetMouseButtonMode(SalMouseEvent const *pEvent)
static bool ImplHandleMenuEvent(vcl::Window const *pWindow, SalMenuEvent *pEvent, SalEvent nEvent)
static bool ImplCallCommand(const VclPtr< vcl::Window > &pChild, CommandEventId nEvt, void const *pData=nullptr, bool bMouse=false, Point const *pPos=nullptr)
static void ImplSetMousePointer(vcl::Window const *pChild)
static void ImplHandleLoseFocus(vcl::Window *pWindow)
static bool ImplHandleSalMouseMove(vcl::Window *pWindow, SalMouseEvent const *pEvent)
static bool ImplHandleGestureZoomEvent(vcl::Window *pWindow, const SalGestureZoomEvent &rEvent)
static void ImplHandleMove(vcl::Window *pWindow)
static void ContextMenuEventLink(void *pCEvent, void *)
static void ImplHandleGetFocus(vcl::Window *pWindow)
static bool ImplHandleSalMouseButtonDown(vcl::Window *pWindow, SalMouseEvent const *pEvent)
static void ImplHandleMouseHelpRequest(vcl::Window *pChild, const Point &rMousePos)
static bool ImplHandleSwipe(vcl::Window *pWindow, const SalGestureSwipeEvent &rEvt)
static void ImplHandleSalKeyMod(vcl::Window *pWindow, SalKeyModEvent const *pEvent)
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)
static bool ImplHandleInputContextChange(vcl::Window *pWindow)
static bool shouldReusePreviousMouseWindow(const SalWheelMouseEvent &rPrevEvt, const SalWheelMouseEvent &rEvt)
static bool ImplHandleSalMouseLeave(vcl::Window *pWindow, SalMouseEvent const *pEvent)
static bool ImplHandleKey(vcl::Window *pWindow, NotifyEventType nSVEvent, sal_uInt16 nKeyCode, sal_uInt16 nCharCode, sal_uInt16 nRepeat, bool bForward)
static void ImplHandleExtTextInputPos(vcl::Window *pWindow, tools::Rectangle &rRect, tools::Long &rInputWidth, bool *pVertical)
#define IMPL_MIN_NEEDSYSWIN
static void ImplHandleInputLanguageChange(vcl::Window *pWindow)
static bool ImplHandleLongPress(vcl::Window *pWindow, const SalGestureLongPressEvent &rEvt)
static void ImplHandleSalQueryCharPosition(vcl::Window *pWindow, SalQueryCharPositionEvent *pEvt)
static bool ImplCallWheelCommand(const VclPtr< vcl::Window > &pWindow, const Point &rPos, const CommandWheelData *pWheelData)
static bool ImplHandleEndExtTextInput()
static void KillOwnPopups(vcl::Window const *pWindow)
static bool ImplHandleShowDialog(vcl::Window *pWindow, ShowDialogId nDialogId)
static bool acceptableWheelScrollTarget(const vcl::Window *pMouseWindow)
MouseEventModifiers ImplGetMouseMoveMode(SalMouseEvent const *pEvent)
bool ImplLOKHandleMouseEvent(const VclPtr< vcl::Window > &xWindow, NotifyEventType nEvent, bool, tools::Long nX, tools::Long nY, sal_uInt64, sal_uInt16 nCode, MouseEventModifiers nMode, sal_uInt16 nClicks)
static void ImplActivateFloatingWindows(vcl::Window const *pWindow, bool bActive)
static vcl::Window * ImplGetKeyInputWindow(vcl::Window *pWindow)
bool ImplCallPreNotify(NotifyEvent &rEvt)
static void ImplHandleStartReconversion(vcl::Window *pWindow)
static bool ImplHandleMouseFloatMode(vcl::Window *pChild, const Point &rMousePos, sal_uInt16 nCode, NotifyEventType nSVEvent, bool bMouseLeave)
static void ImplHandleSalDeleteSurroundingTextRequest(vcl::Window *pWindow, SalSurroundingTextSelectionChangeEvent *pEvt)
static void ImplHandleSalSurroundingTextRequest(vcl::Window *pWindow, SalSurroundingTextRequestEvent *pEvt)
static bool ImplHandleExtTextInput(vcl::Window *pWindow, const OUString &rText, const ExtTextInputAttr *pTextAttr, sal_Int32 nCursorPos, sal_uInt16 nCursorFlags)
static bool ImplHandleSalMouseButtonUp(vcl::Window *pWindow, SalMouseEvent const *pEvent)
static void ImplHandlePaint(vcl::Window *pWindow, const tools::Rectangle &rBoundRect, bool bImmediateUpdate)
static bool ImplHandleWheelEvent(vcl::Window *pWindow, const SalWheelMouseEvent &rEvt)
static void ImplHandleClose(const vcl::Window *pWindow)
bool ImplWindowFrameProc(vcl::Window *_pWindow, SalEvent nEvent, const void *pEvent)
void ImplHandleResize(vcl::Window *pWindow, tools::Long nNewWidth, tools::Long nNewHeight)
static void ImplHandleUserEvent(ImplSVEvent *pSVEvent)
static void ImplHandleMoveResize(vcl::Window *pWindow, tools::Long nNewWidth, tools::Long nNewHeight)
static void ImplHandleSalExtTextInputPos(vcl::Window *pWindow, SalExtTextInputPosEvent *pEvt)
WinBits const WB_MOVEABLE
WinBits const WB_OWNERDRAWDECORATION
WinBits const WB_SIZEABLE