class FixedText; class VclSizeGroup; class VirtualDevice; namespace vcl::font { class PhysicalFontCollection; } class ImplFontCache; class VCLXWindow; namespace vcl { class WindowData; } class SalFrame; class SalObject; class DNDEventDispatcher; class DNDListenerContainer; enumclass MouseEventModifiers; enumclass NotifyEventType; enumclass ActivateModeFlags; enumclass DialogControlFlags; enumclass GetFocusFlags; enumclass ParentClipMode; enumclass SalEvent;
namespace com::sun::star { namespace accessibility { class XAccessible; class XAccessibleContext; class XAccessibleEditableText;
}
namespace awt { class XVclWindowPeer; class XWindow;
} namespace uno { class Any; class XInterface;
} namespace datatransfer { namespace clipboard { class XClipboard;
} namespace dnd { class XDropTargetListener; class XDragGestureRecognizer; class XDragSource; class XDropTarget;
}
}
}
struct ImplFrameData
{
Idle maPaintIdle; //< paint idle handler
Idle maResizeIdle; //< resize timer
InputContext maOldInputContext; //< last set Input Context
VclPtr<vcl::Window> mpNextFrame; //< next frame window
VclPtr<vcl::Window> mpFirstOverlap; //< first overlap vcl::Window
VclPtr<vcl::Window> mpFocusWin; //< focus window (is also set, when frame doesn't have the focus)
VclPtr<vcl::Window> mpMouseMoveWin; //< last window, where MouseMove() called
VclPtr<vcl::Window> mpMouseDownWin; //< last window, where MouseButtonDown() called
VclPtr<vcl::Window> mpTrackWin; //< window, that is in tracking mode
std::vector<VclPtr<vcl::Window> > maOwnerDrawList; //< List of system windows with owner draw decoration
std::shared_ptr<vcl::font::PhysicalFontCollection> mxFontCollection; //< Font-List for this frame
std::shared_ptr<ImplFontCache> mxFontCache; //< Font-Cache for this frame
sal_Int32 mnDPIX; //< Original Screen Resolution
sal_Int32 mnDPIY; //< Original Screen Resolution
ImplSVEvent * mnFocusId; //< FocusId for PostUserLink
ImplSVEvent * mnMouseMoveId; //< MoveId for PostUserLink
tools::Long mnLastMouseX; //< last x mouse position
tools::Long mnLastMouseY; //< last y mouse position
tools::Long mnBeforeLastMouseX; //< last but one x mouse position
tools::Long mnBeforeLastMouseY; //< last but one y mouse position
tools::Long mnFirstMouseX; //< first x mouse position by mousebuttondown
tools::Long mnFirstMouseY; //< first y mouse position by mousebuttondown
tools::Long mnLastMouseWinX; //< last x mouse position, rel. to pMouseMoveWin
tools::Long mnLastMouseWinY; //< last y mouse position, rel. to pMouseMoveWin
sal_uInt16 mnModalMode; //< frame based modal count (app based makes no sense anymore)
sal_uInt64 mnMouseDownTime; //< mouse button down time for double click
sal_uInt16 mnClickCount; //< mouse click count
sal_uInt16 mnFirstMouseCode; //< mouse code by mousebuttondown
sal_uInt16 mnMouseCode; //< mouse code
MouseEventModifiers mnMouseMode; //< mouse mode bool mbHasFocus; //< focus bool mbInMouseMove; //< is MouseMove on stack bool mbMouseIn; //> is Mouse inside the frame bool mbStartDragCalled; //< is command startdrag called bool mbNeedSysWindow; //< set, when FrameSize <= IMPL_MIN_NEEDSYSWIN bool mbMinimized; //< set, when FrameSize <= 0 bool mbStartFocusState; //< FocusState, when sending the event bool mbInSysObjFocusHdl; //< within a SysChildren's GetFocus handler bool mbInSysObjToTopHdl; //< within a SysChildren's ToTop handler bool mbSysObjFocus; //< does a SysChild have focus
sal_Int32 mnTouchPanPositionX;
sal_Int32 mnTouchPanPositionY;
bool mbInternalDragGestureRecognizer; bool mbDragging;
VclPtr<VirtualDevice> mpBuffer; ///< Buffer for the double-buffering bool mbInBufferedPaint; ///< PaintHelper is in the process of painting into this buffer.
tools::Rectangle maBufferedRect; ///< Rectangle in the buffer that has to be painted to the screen.
const vcl::ILibreOfficeKitNotifier* mpLOKNotifier; ///< To emit the LOK callbacks eg. for dialog tunneling.
vcl::LOKWindowId mnLOKWindowId; ///< ID of this specific window. bool mbUseFrameData;
};
namespace vcl
{ /// Sets up the buffer to have settings matching the window, and restores the original state in the dtor. class VCL_DLLPUBLIC PaintBufferGuard
{
ImplFrameData* mpFrameData;
VclPtr<vcl::Window> m_pWindow; bool mbBackground;
Wallpaper maBackground;
AllSettings maSettings;
tools::Long mnOutOffX;
tools::Long mnOutOffY;
tools::Rectangle m_aPaintRect; public:
PaintBufferGuard(ImplFrameData* pFrameData, vcl::Window* pWindow);
~PaintBufferGuard() COVERITY_NOEXCEPT_FALSE; /// If this is called, then the dtor will also copy rRectangle to the window from the buffer, before restoring the state. void SetPaintRect(const tools::Rectangle& rRectangle); /// Returns either the frame's buffer or the window, in case of no buffering.
vcl::RenderContext* GetRenderContext();
}; typedef std::unique_ptr<PaintBufferGuard, o3tl::default_delete<PaintBufferGuard>> PaintBufferGuardPtr;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.