diff options
author | Jan Holesovsky <kendy@suse.cz> | 2011-04-22 15:09:06 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@suse.cz> | 2011-04-22 15:09:06 +0200 |
commit | 83380a7805f69b18f432895fc17c53cf0354bf4d (patch) | |
tree | b38d271cb6a768b6c2f9d3bee37d0d88e0472cb4 /vcl/inc/window.h | |
parent | d5bbd70673a2d5c6f8937428b97111e9c13fd21f (diff) | |
parent | 9e84958536c737f8fdcff4d28664d0c13b9cdc8c (diff) |
Merge commit 'ooo/DEV300_m106' into libreoffice-3-4
Conflicts:
cppcanvas/source/mtfrenderer/transparencygroupaction.cxx
l10ntools/scripts/localize.pl
l10ntools/source/directory.cxx
l10ntools/source/srciter.cxx
padmin/Executable_spadmin.bin.mk
padmin/Library_spa.mk
svtools/inc/svtools/filter.hxx
svtools/inc/svtools/grfmgr.hxx
svtools/source/filter/filter.cxx
svtools/source/filter/filter2.cxx
svtools/source/filter/wmf/emfwr.cxx
svtools/source/filter/wmf/enhwmf.cxx
svtools/source/filter/wmf/winmtf.cxx
svtools/source/filter/wmf/winmtf.hxx
svtools/source/filter/wmf/winwmf.cxx
svtools/source/filter/wmf/wmfwr.cxx
svtools/source/graphic/grfmgr.cxx
svtools/source/graphic/grfmgr2.cxx
toolkit/source/controls/controlmodelcontainerbase.cxx
toolkit/source/controls/unocontrol.cxx
toolkit/source/helper/formpdfexport.cxx
toolkit/source/helper/unowrapper.cxx
vcl/Package_osx.mk
vcl/aqua/source/app/salinst.cxx
vcl/aqua/source/app/salsys.cxx
vcl/aqua/source/dtrans/aqua_service.cxx
vcl/aqua/source/dtrans/test_aquacb.cxx
vcl/aqua/source/res/makefile.mk
vcl/aqua/source/window/salframe.cxx
vcl/aqua/source/window/salframeview.mm
vcl/inc/aqua/salgdi.h
vcl/inc/aqua/salinst.h
vcl/inc/graphite_adaptors.hxx
vcl/inc/graphite_cache.hxx
vcl/inc/graphite_serverfont.hxx
vcl/inc/impprn.hxx
vcl/inc/svdata.hxx
vcl/inc/unx/i18n_status.hxx
vcl/inc/unx/saldata.hxx
vcl/inc/unx/salfont.h
vcl/inc/unx/salinst.h
vcl/inc/unx/salprn.h
vcl/inc/unx/salsys.h
vcl/inc/unx/sm.hxx
vcl/inc/vcl/gdimtf.hxx
vcl/inc/vcl/graph.hxx
vcl/inc/vcl/outdev.hxx
vcl/inc/vcl/polyscan.hxx
vcl/inc/vcl/svcompat.hxx
vcl/inc/vcl/svgread.hxx
vcl/inc/vcl/unobrok.hxx
vcl/inc/win/salgdi.h
vcl/inc/win/wincomp.hxx
vcl/prj/d.lst
vcl/source/app/dbggui.cxx
vcl/source/app/idlemgr.cxx
vcl/source/app/makefile.mk
vcl/source/app/settings.cxx
vcl/source/app/sound.cxx
vcl/source/app/stdtext.cxx
vcl/source/app/svapp.cxx
vcl/source/app/svdata.cxx
vcl/source/app/svmain.cxx
vcl/source/app/timer.cxx
vcl/source/app/unohelp.cxx
vcl/source/components/dtranscomp.cxx
vcl/source/control/button.cxx
vcl/source/control/combobox.cxx
vcl/source/control/ctrl.cxx
vcl/source/control/edit.cxx
vcl/source/control/field2.cxx
vcl/source/control/ilstbox.cxx
vcl/source/gdi/bitmap.cxx
vcl/source/gdi/bitmapex.cxx
vcl/source/gdi/cvtgrf.cxx
vcl/source/gdi/font.cxx
vcl/source/gdi/image.cxx
vcl/source/gdi/imagerepository.cxx
vcl/source/gdi/impbmp.cxx
vcl/source/gdi/impgraph.cxx
vcl/source/gdi/impimagetree.cxx
vcl/source/gdi/jobset.cxx
vcl/source/gdi/makefile.mk
vcl/source/gdi/metaact.cxx
vcl/source/gdi/outdev.cxx
vcl/source/gdi/outdev2.cxx
vcl/source/gdi/outdev5.cxx
vcl/source/gdi/outdev6.cxx
vcl/source/gdi/outmap.cxx
vcl/source/gdi/polyscan.cxx
vcl/source/gdi/print.cxx
vcl/source/gdi/print2.cxx
vcl/source/gdi/region.cxx
vcl/source/gdi/salgdilayout.cxx
vcl/source/gdi/sallayout.cxx
vcl/source/gdi/svcompat.cxx
vcl/source/gdi/virdev.cxx
vcl/source/glyphs/gcach_ftyp.cxx
vcl/source/glyphs/gcach_vdev.cxx
vcl/source/glyphs/gcach_vdev.hxx
vcl/source/glyphs/graphite_adaptors.cxx
vcl/source/glyphs/graphite_cache.cxx
vcl/source/glyphs/graphite_layout.cxx
vcl/source/glyphs/graphite_serverfont.cxx
vcl/source/glyphs/graphite_textsrc.hxx
vcl/source/glyphs/makefile.mk
vcl/source/src/makefile.mk
vcl/source/window/accel.cxx
vcl/source/window/brdwin.cxx
vcl/source/window/btndlg.cxx
vcl/source/window/dialog.cxx
vcl/source/window/dndevdis.cxx
vcl/source/window/dockmgr.cxx
vcl/source/window/dockwin.cxx
vcl/source/window/floatwin.cxx
vcl/source/window/introwin.cxx
vcl/source/window/keycod.cxx
vcl/source/window/menu.cxx
vcl/source/window/msgbox.cxx
vcl/source/window/scrwnd.cxx
vcl/source/window/split.cxx
vcl/source/window/splitwin.cxx
vcl/source/window/status.cxx
vcl/source/window/syswin.cxx
vcl/source/window/tabpage.cxx
vcl/source/window/toolbox.cxx
vcl/source/window/toolbox2.cxx
vcl/source/window/window.cxx
vcl/source/window/window2.cxx
vcl/source/window/winproc.cxx
vcl/source/window/wrkwin.cxx
vcl/unx/generic/app/i18n_cb.cxx
vcl/unx/generic/app/i18n_ic.cxx
vcl/unx/generic/app/saldata.cxx
vcl/unx/generic/app/saldisp.cxx
vcl/unx/generic/app/salinst.cxx
vcl/unx/generic/app/wmadaptor.cxx
vcl/unx/generic/fontmanager/afm_hash.cpp
vcl/unx/generic/gdi/salbmp.cxx
vcl/unx/generic/gdi/salgdi3.cxx
vcl/unx/generic/gdi/xrender_peer.cxx
vcl/unx/generic/window/salframe.cxx
vcl/unx/generic/window/salobj.cxx
vcl/unx/gtk/a11y/makefile.mk
vcl/unx/gtk/app/gtksys.cxx
vcl/unx/gtk/app/makefile.mk
vcl/unx/gtk/window/gtkframe.cxx
vcl/unx/gtk/window/gtkobject.cxx
vcl/unx/headless/svpinst.cxx
vcl/unx/headless/svpinst.hxx
vcl/unx/headless/svpprn.hxx
vcl/unx/kde/kdedata.cxx
vcl/unx/kde/salnativewidgets-kde.cxx
vcl/unx/kde4/KDESalDisplay.hxx
vcl/unx/kde4/KDEXLib.cxx
vcl/unx/kde4/KDEXLib.hxx
vcl/unx/kde4/VCLKDEApplication.cxx
vcl/unx/kde4/makefile.mk
vcl/unx/source/app/makefile.mk
vcl/unx/source/fontmanager/makefile.mk
vcl/unx/source/gdi/makefile.mk
vcl/unx/source/inc/salcursors.h
vcl/util/linksvp/makefile.mk
vcl/win/source/app/saldata.cxx
vcl/win/source/app/salinst.cxx
vcl/win/source/app/salshl.cxx
vcl/win/source/gdi/makefile.mk
vcl/win/source/gdi/salbmp.cxx
vcl/win/source/gdi/salgdi.cxx
vcl/win/source/gdi/salgdi2.cxx
vcl/win/source/gdi/salgdi3.cxx
vcl/win/source/gdi/salgdi_gdiplus.cxx
vcl/win/source/gdi/salprn.cxx
vcl/win/source/gdi/salvd.cxx
vcl/win/source/gdi/winlayout.cxx
vcl/win/source/window/salframe.cxx
vcl/win/source/window/salmenu.cxx
vcl/win/source/window/salobj.cxx
Diffstat (limited to 'vcl/inc/window.h')
-rw-r--r-- | vcl/inc/window.h | 406 |
1 files changed, 406 insertions, 0 deletions
diff --git a/vcl/inc/window.h b/vcl/inc/window.h new file mode 100644 index 000000000000..12f6eedc2906 --- /dev/null +++ b/vcl/inc/window.h @@ -0,0 +1,406 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SV_WINDOW_H +#define _SV_WINDOW_H + +#include <vector> +#include <vcl/sv.h> +#include <vcl/outdev.hxx> +#include <vcl/timer.hxx> +#ifndef _SV_INPUTCTX_HXX +#include <vcl/inputctx.hxx> +#endif +#ifndef _SV_POINTR_HXX +#include <vcl/pointr.hxx> +#endif +#include <tools/wintypes.hxx> +#include <vcl/vclevent.hxx> +#include <com/sun/star/uno/Reference.hxx> +#include <cppuhelper/weakref.hxx> + +#include <vcl/salnativewidgets.hxx> + +#include <list> + +struct SalPaintEvent; +struct ImplDelData; +struct ImplAccessibleInfos; + +class Window; +class VirtualDevice; +class Cursor; +class ImplDevFontList; +class ImplFontCache; +class VCLXWindow; +class SalFrame; +class SalObject; + + +namespace com { +namespace sun { +namespace star { +namespace accessibility { + class XAccessible; +}}}} + +namespace com { +namespace sun { +namespace star { +namespace rendering { + class XCanvas; +}}}} + +namespace com { +namespace sun { +namespace star { +namespace awt { + class XWindowPeer; + class XWindow; +} +namespace uno { + class Any; + class XInterface; +} +namespace datatransfer { +namespace clipboard { + class XClipboard; +} + +namespace dnd { + class XDropTargetListener; + class XDragGestureRecognizer; + class XDragSource; + class XDropTarget; +} } } } } + +namespace vcl { + struct ControlLayoutData; + struct ExtWindowImpl; +} + + +// -------------- +// - Prototypes - +// -------------- + +long ImplWindowFrameProc( Window* pInst, SalFrame* pFrame, sal_uInt16 nEvent, const void* pEvent ); + +// ----------- +// - HitTest - +// ----------- + +#define WINDOW_HITTEST_INSIDE ((sal_uInt16)0x0001) +#define WINDOW_HITTEST_TRANSPARENT ((sal_uInt16)0x0002) + +// --------------- +// - ImplWinData - +// --------------- + +struct ImplWinData +{ + UniString* mpExtOldText; + sal_uInt16* mpExtOldAttrAry; + Rectangle* mpCursorRect; + long mnCursorExtWidth; + Rectangle* mpFocusRect; + Rectangle* mpTrackRect; + sal_uInt16 mnTrackFlags; + sal_uInt16 mnIsTopWindow; + sal_Bool mbMouseOver; // tracks mouse over for native widget paint effect + sal_Bool mbEnableNativeWidget; // toggle native widget rendering + ::std::list< Window* > + maTopWindowChildren; +}; + +// ------------------- +// - ImplOverlapData - +// ------------------- + +struct ImplOverlapData +{ + VirtualDevice* mpSaveBackDev; // Gesicherte Hintergrund-Bitmap + Region* mpSaveBackRgn; // Gesicherte Region, was invalidiert werden muss + Window* mpNextBackWin; // Naechstes Fenster mit Hintergrund-Sicherung + sal_uIntPtr mnSaveBackSize; // Groesse Bitmap fuer Hintergrund-Sicherung + sal_Bool mbSaveBack; // sal_True: Background sichern + sal_uInt8 mnTopLevel; // Level for Overlap-Window +}; + +// ----------------- +// - ImplFrameData - +// ----------------- + +struct ImplFrameData +{ + Timer maPaintTimer; // paint timer + Timer maResizeTimer; // resize timer + InputContext maOldInputContext; // Last set Input Context + Window* mpNextFrame; // next frame window + Window* mpFirstOverlap; // first overlap window + Window* mpFocusWin; // focus window (is also set, when frame doesn't have the focous) + Window* mpMouseMoveWin; // last window, where MouseMove() called + Window* mpMouseDownWin; // last window, where MouseButtonDown() called + Window* mpFirstBackWin; // Erstes Overlap-Window mit Hintergrund-Sicherung + ::std::vector<Window *> maOwnerDrawList; // List of system windows with owner draw decoration + ImplDevFontList* mpFontList; // Font-List for this frame + ImplFontCache* mpFontCache; // Font-Cache for this frame + sal_Int32 mnDPIX; // Original Screen Resolution + sal_Int32 mnDPIY; // Original Screen Resolution + ImplMapRes maMapUnitRes; // for LogicUnitToPixel + sal_uIntPtr mnAllSaveBackSize; // Groesse aller Bitmaps fuer Hintergrund-Sicherung + sal_uIntPtr mnFocusId; // FocusId for PostUserLink + sal_uIntPtr mnMouseMoveId; // MoveId for PostUserLink + long mnLastMouseX; // last x mouse position + long mnLastMouseY; // last y mouse position + long mnBeforeLastMouseX; // last but one x mouse position + long mnBeforeLastMouseY; // last but one y mouse position + long mnFirstMouseX; // first x mouse position by mousebuttondown + long mnFirstMouseY; // first y mouse position by mousebuttondown + long mnLastMouseWinX; // last x mouse position, rel. to pMouseMoveWin + long mnLastMouseWinY; // last y mouse position, rel. to pMouseMoveWin + sal_uInt16 mnModalMode; // frame based modal count (app based makes no sense anymore) + sal_uIntPtr 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 + sal_uInt16 mnMouseMode; // mouse mode + MapUnit meMapUnit; // last MapUnit for LogicUnitToPixel + sal_Bool mbHasFocus; // focus + sal_Bool mbInMouseMove; // is MouseMove on stack + sal_Bool mbMouseIn; // is Mouse inside the frame + sal_Bool mbStartDragCalled; // is command startdrag called + sal_Bool mbNeedSysWindow; // set, when FrameSize <= IMPL_MIN_NEEDSYSWIN + sal_Bool mbMinimized; // set, when FrameSize <= 0 + sal_Bool mbStartFocusState; // FocusState, beim abschicken des Events + sal_Bool mbInSysObjFocusHdl; // Innerhalb vom GetFocus-Handler eines SysChilds + sal_Bool mbInSysObjToTopHdl; // Innerhalb vom ToTop-Handler eines SysChilds + sal_Bool mbSysObjFocus; // Hat ein SysChild den Focus + + ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::dnd::XDragSource > mxDragSource; + ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::dnd::XDropTarget > mxDropTarget; + ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::dnd::XDropTargetListener > mxDropTargetListener; + ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard > mxClipboard; + ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard > mxSelection; + + sal_Bool mbInternalDragGestureRecognizer; +}; + +// ----------------------- +// - ImplAccessibleInfos - +// ----------------------- + +struct ImplAccessibleInfos +{ + sal_uInt16 nAccessibleRole; + String* pAccessibleName; + String* pAccessibleDescription; + Window* pLabeledByWindow; + Window* pLabelForWindow; + Window* pMemberOfWindow; + + ImplAccessibleInfos(); + ~ImplAccessibleInfos(); +}; + + +// --------------- +// - WindowImpl - +// --------------- + +enum AlwaysInputMode { AlwaysInputNone = 0, AlwaysInputEnabled = 1, AlwaysInputDisabled =2 }; + +class WindowImpl +{ +public: + WindowImpl(); + ~WindowImpl(); + + ImplWinData* mpWinData; + ImplOverlapData* mpOverlapData; + ImplFrameData* mpFrameData; + SalFrame* mpFrame; + SalObject* mpSysObj; + Window* mpFrameWindow; + Window* mpOverlapWindow; + Window* mpBorderWindow; + Window* mpClientWindow; + Window* mpParent; + Window* mpRealParent; + Window* mpFirstChild; + Window* mpLastChild; + Window* mpFirstOverlap; + Window* mpLastOverlap; + Window* mpPrev; + Window* mpNext; + Window* mpNextOverlap; + Window* mpLastFocusWindow; + Window* mpDlgCtrlDownWindow; + VclEventListeners maEventListeners; + VclEventListeners maChildEventListeners; + + // The canvas interface for this VCL window. Is persistent after the first GetCanvas() call + ::com::sun::star::uno::WeakReference< ::com::sun::star::rendering::XCanvas > mxCanvas; + + ImplDelData* mpFirstDel; + void* mpUserData; + vcl::ExtWindowImpl* mpExtImpl; + Cursor* mpCursor; + Pointer maPointer; + Fraction maZoom; + XubString maText; + Font* mpControlFont; + Color maControlForeground; + Color maControlBackground; + sal_Int32 mnLeftBorder; + sal_Int32 mnTopBorder; + sal_Int32 mnRightBorder; + sal_Int32 mnBottomBorder; + long mnX; + long mnY; + long mnAbsScreenX; + Point maPos; + rtl::OString maHelpId; + rtl::OString maUniqId; + XubString maHelpText; + XubString maQuickHelpText; + InputContext maInputContext; + ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > mxWindowPeer; + ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > mxAccessible; + ImplAccessibleInfos* mpAccessibleInfos; + VCLXWindow* mpVCLXWindow; + Region maWinRegion; // region to 'shape' the VCL window (frame coordinates) + Region maWinClipRegion; // the (clipping) region that finally corresponds to the VCL window (frame coordinates) + Region maInvalidateRegion; // region that has to be redrawn (frame coordinates) + Region* mpChildClipRegion; // child clip region if CLIPCHILDREN is set (frame coordinates) + Region* mpPaintRegion; // only set during Paint() method call (window coordinates) + WinBits mnStyle; + WinBits mnPrevStyle; + WinBits mnExtendedStyle; + WinBits mnPrevExtendedStyle; + WindowType mnType; + ControlPart mnNativeBackground; + sal_uInt16 mnWaitCount; + sal_uInt16 mnPaintFlags; + sal_uInt16 mnGetFocusFlags; + sal_uInt16 mnParentClipMode; + sal_uInt16 mnActivateMode; + sal_uInt16 mnDlgCtrlFlags; + sal_uInt16 mnLockCount; + AlwaysInputMode meAlwaysInputMode; + sal_Bool mbFrame:1, + mbBorderWin:1, + mbOverlapWin:1, + mbSysWin:1, + mbDialog:1, + mbDockWin:1, + mbFloatWin:1, + mbPushButton:1, + mbVisible:1, + mbDisabled:1, + mbInputDisabled:1, + mbDropDisabled:1, + mbNoUpdate:1, + mbNoParentUpdate:1, + mbActive:1, + mbParentActive:1, + mbReallyVisible:1, + mbReallyShown:1, + mbInInitShow:1, + mbChildNotify:1, + mbChildPtrOverwrite:1, + mbNoPtrVisible:1, + mbPaintFrame:1, + mbInPaint:1, + mbMouseMove:1, + mbMouseButtonDown:1, + mbMouseButtonUp:1, + mbKeyInput:1, + mbKeyUp:1, + mbCommand:1, + mbDefPos:1, + mbDefSize:1, + mbCallMove:1, + mbCallResize:1, + mbWaitSystemResize:1, + mbInitWinClipRegion:1, + mbInitChildRegion:1, + mbWinRegion:1, + mbClipChildren:1, + mbClipSiblings:1, + mbChildTransparent:1, + mbPaintTransparent:1, + mbMouseTransparent:1, + mbDlgCtrlStart:1, + mbFocusVisible:1, + mbTrackVisible:1, + mbUseNativeFocus:1, + mbNativeFocusVisible:1, + mbInShowFocus:1, + mbInHideFocus:1, + mbControlForeground:1, + mbControlBackground:1, + mbAlwaysOnTop:1, + mbCompoundControl:1, + mbCompoundControlHasFocus:1, + mbPaintDisabled:1, + mbAllResize:1, + mbInDtor:1, + mbExtTextInput:1, + mbInFocusHdl:1, + mbOverlapVisible:1, + mbCreatedWithToolkit:1, + mbToolBox:1, + mbSplitter:1, + mbSuppressAccessibilityEvents:1, + mbMenuFloatingWindow:1, + mbDrawSelectionBackground:1, + mbIsInTaskPaneList:1, + mbToolbarFloatingWindow:1, + mbCallHandlersDuringInputDisabled:1, + mbDisableAccessibleLabelForRelation:1, + mbDisableAccessibleLabeledByRelation:1, + mbHelpTextDynamic:1, + mbFakeFocusSet:1, + mbInterceptChildWindowKeyDown:1; + + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxDNDListenerContainer; +}; + +// ----------------- +// - Hilfsmethoden - +// ----------------- + +long ImplHandleMouseEvent( Window* pWindow, sal_uInt16 nSVEvent, sal_Bool bMouseLeave, + long nX, long nY, sal_uIntPtr nMsgTime, + sal_uInt16 nCode, sal_uInt16 nMode ); +void ImplHandleResize( Window* pWindow, long nNewWidth, long nNewHeight ); + +#endif // _SV_WINDOW_H + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |