diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 16:07:07 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 16:07:07 +0000 |
commit | 8ab086b6cc054501bfbf7ef6fa509c393691e860 (patch) | |
tree | 324d51845d7f1a2f4e02a14db22fb5947137c822 /vcl/unx/inc/salframe.h | |
parent | 411e68cc54ae97eebd79ae3a9cb2971b74cb2a9e (diff) |
initial import
Diffstat (limited to 'vcl/unx/inc/salframe.h')
-rw-r--r-- | vcl/unx/inc/salframe.h | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/vcl/unx/inc/salframe.h b/vcl/unx/inc/salframe.h new file mode 100644 index 000000000000..f9bd325556e6 --- /dev/null +++ b/vcl/unx/inc/salframe.h @@ -0,0 +1,247 @@ +/************************************************************************* + * + * $RCSfile: salframe.h,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:05:41 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +//-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-// +// // +// (C) 1997 Star Division GmbH, Hamburg, Germany // +// // +// $Revision: 1.1.1.1 $ $Author: hr $ $Date: 2000-09-18 17:05:41 $ // +// // +// $Workfile: salframe.h $ // +// $Modtime: 09 Sep 1997 17:29:12 $ // +// // +//-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-*=*-// + +#ifndef _SV_SALFRAME_H +#define _SV_SALFRAME_H + +// -=-= #includes -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +#ifndef _SALSTD_HXX +#include <salstd.hxx> +#endif +#ifndef _SV_SALWTYPE_HXX +#include <salwtype.hxx> +#endif +#ifndef _SV_PTRSTYLE_HXX +#include <ptrstyle.hxx> +#endif + +#ifndef _LIST_HXX +#include <tools/list.hxx> +#endif + +#ifndef _SV_SALINST_HXX +#include <salinst.hxx> +#endif + +#ifndef _SV_SYSDATA_HXX +#include <sysdata.hxx> +#endif + +#include <salunx.h> + +// -=-= forwards -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +class SalDisplay; +class SalGraphics; +class SalFrame; +class SalColormap; +class SalI18N_InputContext; + +// -=-= SalFrameData =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +DECLARE_LIST( SalFrameList, SalFrame *); +class SalFrameData +{ + friend class SalFrame; + friend SalFrame* SalInstance::CreateFrame( SalFrame*, ULONG ); + friend SalFrame* SalInstance::CreateChildFrame( SystemParentData*, ULONG ); + + static Bool checkKeyReleaseForRepeat( Display*, XEvent*, XPointer pSalFrameData ); + + STDAPI( SalFrameData ) + + SalFrame *pNextFrame_; // pointer to next frame + SalFrame *pFrame_; + + SalFrame* mpParent; // pointer to parent frame + // which should never obscur this frame + SalFrameList maChildren; // List of child frames + + SALFRAMEPROC pProc_; // callback proc + void *pInst_; // instance handle for callback + + SalDisplay *pDisplay_; + Widget hShell_; + Widget hComposite_; + XLIB_Window hForeignParent_; + XLIB_Window hForeignTopLevelWindow_; + Widget hNoFullscreenShell_; + Widget hNoFullscreenComposite_; + // window to fall back to when no longer in fullscreen mode + + XLIB_Cursor hCursor_; + int nCaptured_; // is captured + + SalGraphics *pGraphics_; // current frame graphics + SalGraphics *pFreeGraphics_; // first free frame graphics + XLIB_Region pPaintRegion_; + + XLIB_Time nReleaseTime_; // timestamp of last key release + USHORT nKeyCode_; // last key code + USHORT nKeyState_; // last key state + int nCompose_; // compose state + + int nShowState_; // show state + int nLeft_; // left decoration size + int nTop_; // top decoration size + int nRight_; // right decoration size + int nBottom_; // bottom decoration size + int nMaxWidth_; // client max width + int nMaxHeight_; // client max height + int nWidth_; // client width + int nHeight_; // client height + Rectangle aPosSize_; // Shells Pos&Size + Rectangle aRestoreFullScreen_; + Rectangle aRestoreMaximize_; + USHORT nStyle_; + BOOL bAlwaysOnTop_; + BOOL bViewable_; + BOOL bMapped_; + BOOL bDefaultPosition_; // client is centered initially + int nVisibility_; + + int nScreenSaversTimeout_; + + SystemChildData maSystemChildData; + + SalI18N_InputContext *mpInputContext; + + SalGraphics *GetGraphics(); + + void GetPosSize( Rectangle &rPosSize ); + void SetSize ( const Size &rSize ); + void SetPosSize( const Rectangle &rPosSize ); + void Minimize(); + void Maximize(); + void Restore(); + void ShowFullScreen( BOOL bFullScreen ); + + void RepositionFloatChildren(); + + long HandleKeyEvent ( XKeyEvent *pEvent ); + long HandleMouseEvent ( XEvent *pEvent ); + long HandleFocusEvent ( XFocusChangeEvent *pEvent ); + long HandleExposeEvent ( XEvent *pEvent ); + long HandleSizeEvent ( XConfigureEvent *pEvent ); + long HandleColormapEvent ( XColormapEvent *pEvent ); + long HandleMapUnmapEvent ( XEvent *pEvent ); + long HandleStateEvent ( XPropertyEvent *pEvent ); + long HandleReparentEvent ( XReparentEvent *pEvent ); + long HandleClientMessage ( XClientMessageEvent*pEvent ); + + inline void CaptureMouse( BOOL bCapture ); + inline void SetPointer( PointerStyle ePointerStyle ); + + inline SalFrameData( SalFrame *pFrame ); + inline ~SalFrameData(); +public: + long Dispatch( XEvent *pEvent ); + void Init( USHORT nSalFrameStyle, SystemParentData* pParentData = NULL ); + + SalDisplay *GetDisplay() const { return pDisplay_; } + inline Display *GetXDisplay() const; + inline XLIB_Window GetDrawable() const; + inline XLIB_Window GetWindow() const { return XtWindow( hComposite_ ); } + inline Widget GetWidget() const { return hComposite_; } + inline XLIB_Window GetShellWindow() const { return XtWindow( hShell_ ); } + inline Widget GetShellWidget() const { return hShell_; } + inline XLIB_Window GetForeignParent() const { return hForeignParent_; } + inline XLIB_Window GetForeignTopLevelWindow() const { return hForeignTopLevelWindow_; } + inline long ShutDown() const + { return pProc_( pInst_, pFrame_, SALEVENT_SHUTDOWN, 0 ); } + inline long Close() const + { return pProc_( pInst_, pFrame_, SALEVENT_CLOSE, 0 ); } + inline long Call( USHORT nEvent, const void *pEvent ) const + { return pProc_( pInst_, pFrame_, nEvent, pEvent ); } + inline SalFrame *GetNextFrame() const { return pNextFrame_; } + inline XLIB_Cursor GetCursor() const { return hCursor_; } + inline BOOL IsCaptured() const { return nCaptured_ == 1; } + inline BOOL IsWaitingForExpose() const + { return !!pPaintRegion_; } + inline SalColormap &GetColormap() const; +}; + +#ifdef _SV_SALDISP_HXX + +inline void SalFrameData::CaptureMouse( BOOL bCapture ) +{ nCaptured_ = pDisplay_->CaptureMouse( bCapture ? this : NULL ); } + +inline Display *SalFrameData::GetXDisplay() const +{ return pDisplay_->GetDisplay(); } + +inline XLIB_Window SalFrameData::GetDrawable() const +{ return GetWindow(); } + +inline SalColormap &SalFrameData::GetColormap() const +{ return pDisplay_->GetColormap(); } + +#endif + +#endif // _SV_SALFRAME_H + |