xref: /aoo4110/main/vcl/inc/unx/salframe.h (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski #ifndef _SV_SALFRAME_H
24*b1cdbd2cSJim Jagielski #define _SV_SALFRAME_H
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski // -=-= #includes -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
27*b1cdbd2cSJim Jagielski #include <unx/salstd.hxx>
28*b1cdbd2cSJim Jagielski #include <unx/salunx.h>
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski #include <salframe.hxx>
31*b1cdbd2cSJim Jagielski #include <salwtype.hxx>
32*b1cdbd2cSJim Jagielski #include <salinst.hxx>
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski #include <vcl/ptrstyle.hxx>
35*b1cdbd2cSJim Jagielski #include <vcl/sysdata.hxx>
36*b1cdbd2cSJim Jagielski #include <vcl/timer.hxx>
37*b1cdbd2cSJim Jagielski #include <vclpluginapi.h>
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski #include <list>
41*b1cdbd2cSJim Jagielski 
42*b1cdbd2cSJim Jagielski // -=-= forwards -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
43*b1cdbd2cSJim Jagielski class	SalDisplay;
44*b1cdbd2cSJim Jagielski class	X11SalGraphics;
45*b1cdbd2cSJim Jagielski class SalGraphicsLayout;
46*b1cdbd2cSJim Jagielski class   SalI18N_InputContext;
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski namespace vcl_sal { class WMAdaptor; class NetWMAdaptor; class GnomeWMAdaptor; }
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski // -=-= X11SalFrame =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
51*b1cdbd2cSJim Jagielski #define SHOWSTATE_UNKNOWN		-1
52*b1cdbd2cSJim Jagielski #define SHOWSTATE_MINIMIZED 	0
53*b1cdbd2cSJim Jagielski #define SHOWSTATE_NORMAL		1
54*b1cdbd2cSJim Jagielski #define SHOWSTATE_HIDDEN		2
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski class VCLPLUG_GEN_PUBLIC X11SalFrame : public SalFrame
57*b1cdbd2cSJim Jagielski {
58*b1cdbd2cSJim Jagielski     friend class vcl_sal::WMAdaptor;
59*b1cdbd2cSJim Jagielski     friend class vcl_sal::NetWMAdaptor;
60*b1cdbd2cSJim Jagielski     friend class vcl_sal::GnomeWMAdaptor;
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski     static X11SalFrame* s_pSaveYourselfFrame;
63*b1cdbd2cSJim Jagielski 
64*b1cdbd2cSJim Jagielski     X11SalFrame*	mpParent;            // pointer to parent frame
65*b1cdbd2cSJim Jagielski 	                                // which should never obscur this frame
66*b1cdbd2cSJim Jagielski     bool			mbTransientForRoot;
67*b1cdbd2cSJim Jagielski     std::list< X11SalFrame* > maChildren;         // List of child frames
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski     SalDisplay	   *pDisplay_;
70*b1cdbd2cSJim Jagielski     int             m_nScreen;
71*b1cdbd2cSJim Jagielski     XLIB_Window		mhWindow;
72*b1cdbd2cSJim Jagielski     XLIB_Window		mhShellWindow;
73*b1cdbd2cSJim Jagielski     XLIB_Window		mhForeignParent;
74*b1cdbd2cSJim Jagielski     // window to fall back to when no longer in fullscreen mode
75*b1cdbd2cSJim Jagielski     XLIB_Window		mhStackingWindow;
76*b1cdbd2cSJim Jagielski     // window to listen for CirculateNotify events
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski     Pixmap          mhBackgroundPixmap;
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski     XLIB_Cursor		hCursor_;
81*b1cdbd2cSJim Jagielski     int				nCaptured_;			// is captured
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski     X11SalGraphics	*pGraphics_;			// current frame graphics
84*b1cdbd2cSJim Jagielski     X11SalGraphics	*pFreeGraphics_;		// first free frame graphics
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski     XLIB_Time		nReleaseTime_;		// timestamp of last key release
87*b1cdbd2cSJim Jagielski     sal_uInt16			nKeyCode_;			// last key code
88*b1cdbd2cSJim Jagielski     sal_uInt16			nKeyState_;			// last key state
89*b1cdbd2cSJim Jagielski     int				nCompose_;			// compose state
90*b1cdbd2cSJim Jagielski     bool			mbKeyMenu;
91*b1cdbd2cSJim Jagielski     bool			mbSendExtKeyModChange;
92*b1cdbd2cSJim Jagielski     sal_uInt16			mnExtKeyMod;
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski     int				nShowState_;		// show state
95*b1cdbd2cSJim Jagielski     int				nWidth_;			// client width
96*b1cdbd2cSJim Jagielski     int				nHeight_;			// client height
97*b1cdbd2cSJim Jagielski     Rectangle		maRestorePosSize;
98*b1cdbd2cSJim Jagielski     sal_uIntPtr			nStyle_;
99*b1cdbd2cSJim Jagielski     SalExtStyle     mnExtStyle;
100*b1cdbd2cSJim Jagielski     sal_Bool			bAlwaysOnTop_;
101*b1cdbd2cSJim Jagielski     sal_Bool			bViewable_;
102*b1cdbd2cSJim Jagielski     sal_Bool			bMapped_;
103*b1cdbd2cSJim Jagielski     sal_Bool			mbInShow;
104*b1cdbd2cSJim Jagielski     sal_Bool			bDefaultPosition_;	// client is centered initially
105*b1cdbd2cSJim Jagielski     bool            m_bXEmbed;
106*b1cdbd2cSJim Jagielski     int				nVisibility_;
107*b1cdbd2cSJim Jagielski     int             m_nWorkArea;
108*b1cdbd2cSJim Jagielski     bool            m_bSetFocusOnMap;
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski     int				nScreenSaversTimeout_;
112*b1cdbd2cSJim Jagielski     Rectangle		maPaintRegion;
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski     Timer			maAlwaysOnTopRaiseTimer;
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski     // data for WMAdaptor
117*b1cdbd2cSJim Jagielski     int				meWindowType;
118*b1cdbd2cSJim Jagielski     int				mnDecorationFlags;
119*b1cdbd2cSJim Jagielski     bool			mbMaximizedVert;
120*b1cdbd2cSJim Jagielski     bool			mbMaximizedHorz;
121*b1cdbd2cSJim Jagielski     bool			mbShaded;
122*b1cdbd2cSJim Jagielski     bool			mbFullScreen;
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski     // icon id
125*b1cdbd2cSJim Jagielski     int			    mnIconID;
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski     String          m_aTitle;
128*b1cdbd2cSJim Jagielski 
129*b1cdbd2cSJim Jagielski     SystemChildData maSystemChildData;
130*b1cdbd2cSJim Jagielski 
131*b1cdbd2cSJim Jagielski     SalI18N_InputContext *mpInputContext;
132*b1cdbd2cSJim Jagielski     Bool			mbInputFocus;
133*b1cdbd2cSJim Jagielski 
134*b1cdbd2cSJim Jagielski     XRectangle*     m_pClipRectangles;
135*b1cdbd2cSJim Jagielski     int             m_nCurClipRect;
136*b1cdbd2cSJim Jagielski     int             m_nMaxClipRect;
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski     void			GetPosSize( Rectangle &rPosSize );
140*b1cdbd2cSJim Jagielski     void			SetSize   ( const Size      &rSize );
141*b1cdbd2cSJim Jagielski     void            Center();
142*b1cdbd2cSJim Jagielski     void			SetPosSize( const Rectangle &rPosSize );
143*b1cdbd2cSJim Jagielski     void			Minimize();
144*b1cdbd2cSJim Jagielski     void			Maximize();
145*b1cdbd2cSJim Jagielski     void			Restore();
146*b1cdbd2cSJim Jagielski     void            SetWindowGravity (int nGravity ) const;
147*b1cdbd2cSJim Jagielski 
148*b1cdbd2cSJim Jagielski     void			RestackChildren( XLIB_Window* pTopLevelWindows, int nTopLevelWindows );
149*b1cdbd2cSJim Jagielski     void			RestackChildren();
150*b1cdbd2cSJim Jagielski 
151*b1cdbd2cSJim Jagielski     long			HandleKeyEvent		( XKeyEvent			*pEvent );
152*b1cdbd2cSJim Jagielski     long			HandleMouseEvent	( XEvent			*pEvent );
153*b1cdbd2cSJim Jagielski     long			HandleFocusEvent	( XFocusChangeEvent *pEvent );
154*b1cdbd2cSJim Jagielski     long			HandleExposeEvent	( XEvent			*pEvent );
155*b1cdbd2cSJim Jagielski     long			HandleSizeEvent		( XConfigureEvent	*pEvent );
156*b1cdbd2cSJim Jagielski     long			HandleColormapEvent	( XColormapEvent	*pEvent );
157*b1cdbd2cSJim Jagielski     long			HandleMapUnmapEvent	( XEvent			*pEvent );
158*b1cdbd2cSJim Jagielski     long			HandleStateEvent	( XPropertyEvent	*pEvent );
159*b1cdbd2cSJim Jagielski     long			HandleReparentEvent	( XReparentEvent	*pEvent );
160*b1cdbd2cSJim Jagielski     long			HandleClientMessage	( XClientMessageEvent*pEvent );
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski     DECL_LINK( HandleAlwaysOnTopRaise, void* );
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski     void			passOnSaveYourSelf();
165*b1cdbd2cSJim Jagielski 
166*b1cdbd2cSJim Jagielski     void            createNewWindow( XLIB_Window aParent, int nScreen = -1 );
167*b1cdbd2cSJim Jagielski     void            updateScreenNumber();
168*b1cdbd2cSJim Jagielski 
169*b1cdbd2cSJim Jagielski     void            setXEmbedInfo();
170*b1cdbd2cSJim Jagielski     void            askForXEmbedFocus( sal_Int32 i_nTimeCode );
171*b1cdbd2cSJim Jagielski public:
172*b1cdbd2cSJim Jagielski 	X11SalFrame( SalFrame* pParent, sal_uIntPtr nSalFrameStyle, SystemParentData* pSystemParent = NULL );
173*b1cdbd2cSJim Jagielski 	virtual ~X11SalFrame();
174*b1cdbd2cSJim Jagielski 
175*b1cdbd2cSJim Jagielski     long			Dispatch( XEvent *pEvent );
176*b1cdbd2cSJim Jagielski     void			Init( sal_uIntPtr nSalFrameStyle, int nScreen = -1,
177*b1cdbd2cSJim Jagielski                           SystemParentData* pParentData = NULL, bool bUseGeometry = false );
178*b1cdbd2cSJim Jagielski 
GetDisplay() const179*b1cdbd2cSJim Jagielski     SalDisplay*				GetDisplay() const { return pDisplay_; }
180*b1cdbd2cSJim Jagielski 	Display*				GetXDisplay() const;
181*b1cdbd2cSJim Jagielski 	XLIB_Window				GetDrawable() const;
GetScreenNumber() const182*b1cdbd2cSJim Jagielski     int                     GetScreenNumber() const { return m_nScreen; }
GetWindow() const183*b1cdbd2cSJim Jagielski     XLIB_Window				GetWindow() const { return mhWindow; }
GetShellWindow() const184*b1cdbd2cSJim Jagielski     XLIB_Window				GetShellWindow() const { return mhShellWindow; }
GetForeignParent() const185*b1cdbd2cSJim Jagielski 	XLIB_Window				GetForeignParent() const { return mhForeignParent; }
GetStackingWindow() const186*b1cdbd2cSJim Jagielski 	XLIB_Window				GetStackingWindow() const { return mhStackingWindow; }
ShutDown() const187*b1cdbd2cSJim Jagielski 	long					ShutDown() const { return CallCallback( SALEVENT_SHUTDOWN, 0 ); }
Close() const188*b1cdbd2cSJim Jagielski 	long					Close() const { return CallCallback( SALEVENT_CLOSE, 0 ); }
GetStyle() const189*b1cdbd2cSJim Jagielski           	sal_uIntPtr           GetStyle() const { return nStyle_; }
190*b1cdbd2cSJim Jagielski 
GetCursor() const191*b1cdbd2cSJim Jagielski 	inline	XLIB_Cursor		GetCursor() const { return hCursor_; }
IsCaptured() const192*b1cdbd2cSJim Jagielski 	inline	sal_Bool			IsCaptured() const { return nCaptured_ == 1; }
193*b1cdbd2cSJim Jagielski #if !defined(__synchronous_extinput__)
194*b1cdbd2cSJim Jagielski     void 			HandleExtTextEvent (XClientMessageEvent *pEvent);
195*b1cdbd2cSJim Jagielski     void			PostExtTextEvent (sal_uInt16 nExtTextEventType,
196*b1cdbd2cSJim Jagielski                                       void *pExtTextEvent);
197*b1cdbd2cSJim Jagielski #endif
198*b1cdbd2cSJim Jagielski     bool					IsOverrideRedirect() const;
IsChildWindow() const199*b1cdbd2cSJim Jagielski     bool                    IsChildWindow() const { return (nStyle_ & (SAL_FRAME_STYLE_PLUG|SAL_FRAME_STYLE_SYSTEMCHILD)) != 0; }
IsSysChildWindow() const200*b1cdbd2cSJim Jagielski     bool                    IsSysChildWindow() const { return (nStyle_ & (SAL_FRAME_STYLE_SYSTEMCHILD)) != 0; }
201*b1cdbd2cSJim Jagielski     bool					IsFloatGrabWindow() const;
getInputContext() const202*b1cdbd2cSJim Jagielski     SalI18N_InputContext* getInputContext() const { return mpInputContext; }
getPosSize(Rectangle & rRect)203*b1cdbd2cSJim Jagielski     void			        getPosSize( Rectangle& rRect ) { GetPosSize( rRect ); }
setPosSize(const Rectangle & rRect)204*b1cdbd2cSJim Jagielski     void					setPosSize( const Rectangle& rRect ) { SetPosSize( rRect ); }
isMapped() const205*b1cdbd2cSJim Jagielski     bool					isMapped() const { return bMapped_; }
hasFocus() const206*b1cdbd2cSJim Jagielski     bool                    hasFocus() const { return mbInputFocus; }
207*b1cdbd2cSJim Jagielski 
208*b1cdbd2cSJim Jagielski     void                    beginUnicodeSequence();
209*b1cdbd2cSJim Jagielski     bool                    appendUnicodeSequence( sal_Unicode );
210*b1cdbd2cSJim Jagielski     bool                    endUnicodeSequence();
211*b1cdbd2cSJim Jagielski 
212*b1cdbd2cSJim Jagielski     virtual SalGraphics*		GetGraphics();
213*b1cdbd2cSJim Jagielski     virtual void				ReleaseGraphics( SalGraphics* pGraphics );
214*b1cdbd2cSJim Jagielski 
215*b1cdbd2cSJim Jagielski     // call with true to clear graphics (setting None as drawable)
216*b1cdbd2cSJim Jagielski     // call with false to setup graphics with window (GetWindow())
217*b1cdbd2cSJim Jagielski     virtual void                updateGraphics( bool bClear );
218*b1cdbd2cSJim Jagielski 
219*b1cdbd2cSJim Jagielski     virtual sal_Bool				PostEvent( void* pData );
220*b1cdbd2cSJim Jagielski 
221*b1cdbd2cSJim Jagielski     virtual void				SetTitle( const XubString& rTitle );
222*b1cdbd2cSJim Jagielski     virtual void				SetIcon( sal_uInt16 nIcon );
223*b1cdbd2cSJim Jagielski     virtual void				SetMenu( SalMenu* pMenu );
224*b1cdbd2cSJim Jagielski     virtual void                                DrawMenuBar();
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski     virtual void                SetExtendedFrameStyle( SalExtStyle nExtStyle );
227*b1cdbd2cSJim Jagielski     virtual void				Show( sal_Bool bVisible, sal_Bool bNoActivate = sal_False );
228*b1cdbd2cSJim Jagielski     virtual void				Enable( sal_Bool bEnable );
229*b1cdbd2cSJim Jagielski     virtual void              SetMinClientSize( long nWidth, long nHeight );
230*b1cdbd2cSJim Jagielski     virtual void              SetMaxClientSize( long nWidth, long nHeight );
231*b1cdbd2cSJim Jagielski     virtual void				SetPosSize( long nX, long nY, long nWidth, long nHeight, sal_uInt16 nFlags );
232*b1cdbd2cSJim Jagielski     virtual void				GetClientSize( long& rWidth, long& rHeight );
233*b1cdbd2cSJim Jagielski     virtual void				GetWorkArea( Rectangle& rRect );
234*b1cdbd2cSJim Jagielski     virtual SalFrame*			GetParent() const;
235*b1cdbd2cSJim Jagielski     virtual void				SetWindowState( const SalFrameState* pState );
236*b1cdbd2cSJim Jagielski     virtual sal_Bool				GetWindowState( SalFrameState* pState );
237*b1cdbd2cSJim Jagielski     virtual void				ShowFullScreen( sal_Bool bFullScreen, sal_Int32 nMonitor );
238*b1cdbd2cSJim Jagielski     virtual void				StartPresentation( sal_Bool bStart );
239*b1cdbd2cSJim Jagielski     virtual void				SetAlwaysOnTop( sal_Bool bOnTop );
240*b1cdbd2cSJim Jagielski     virtual void				ToTop( sal_uInt16 nFlags );
241*b1cdbd2cSJim Jagielski     virtual void				SetPointer( PointerStyle ePointerStyle );
242*b1cdbd2cSJim Jagielski     virtual void				CaptureMouse( sal_Bool bMouse );
243*b1cdbd2cSJim Jagielski     virtual void				SetPointerPos( long nX, long nY );
244*b1cdbd2cSJim Jagielski     using SalFrame::Flush;
245*b1cdbd2cSJim Jagielski     virtual void				Flush();
246*b1cdbd2cSJim Jagielski     virtual void				Sync();
247*b1cdbd2cSJim Jagielski     virtual void				SetInputContext( SalInputContext* pContext );
248*b1cdbd2cSJim Jagielski     virtual void				EndExtTextInput( sal_uInt16 nFlags );
249*b1cdbd2cSJim Jagielski     virtual String				GetKeyName( sal_uInt16 nKeyCode );
250*b1cdbd2cSJim Jagielski     virtual String				GetSymbolKeyName( const XubString& rFontName, sal_uInt16 nKeyCode );
251*b1cdbd2cSJim Jagielski     virtual sal_Bool                MapUnicodeToKeyCode( sal_Unicode aUnicode, LanguageType aLangType, KeyCode& rKeyCode );
252*b1cdbd2cSJim Jagielski     virtual LanguageType		GetInputLanguage();
253*b1cdbd2cSJim Jagielski     virtual SalBitmap*			SnapShot();
254*b1cdbd2cSJim Jagielski     virtual void				UpdateSettings( AllSettings& rSettings );
255*b1cdbd2cSJim Jagielski     virtual void				Beep( SoundType eSoundType );
256*b1cdbd2cSJim Jagielski     virtual const SystemEnvData*	GetSystemData() const;
257*b1cdbd2cSJim Jagielski     virtual SalPointerState     GetPointerState();
258*b1cdbd2cSJim Jagielski     virtual void				SetParent( SalFrame* pNewParent );
259*b1cdbd2cSJim Jagielski     virtual bool				SetPluginParent( SystemParentData* pNewParent );
260*b1cdbd2cSJim Jagielski     virtual void                SetBackgroundBitmap( SalBitmap* pBitmap );
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski     virtual void                SetScreenNumber( unsigned int );
263*b1cdbd2cSJim Jagielski 
264*b1cdbd2cSJim Jagielski     // shaped system windows
265*b1cdbd2cSJim Jagielski     // set clip region to none (-> rectangular windows, normal state)
266*b1cdbd2cSJim Jagielski 	virtual void					ResetClipRegion();
267*b1cdbd2cSJim Jagielski     // start setting the clipregion consisting of nRects rectangles
268*b1cdbd2cSJim Jagielski 	virtual void					BeginSetClipRegion( sal_uIntPtr nRects );
269*b1cdbd2cSJim Jagielski     // add a rectangle to the clip region
270*b1cdbd2cSJim Jagielski 	virtual void					UnionClipRegion( long nX, long nY, long nWidth, long nHeight );
271*b1cdbd2cSJim Jagielski     // done setting up the clipregion
272*b1cdbd2cSJim Jagielski 	virtual void					EndSetClipRegion();
273*b1cdbd2cSJim Jagielski 
274*b1cdbd2cSJim Jagielski     static void SaveYourselfDone( SalFrame* );
275*b1cdbd2cSJim Jagielski 	static Bool checkKeyReleaseForRepeat( Display*, XEvent*, XPointer pX11SalFrame );
276*b1cdbd2cSJim Jagielski };
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski #ifdef _SV_SALDISP_HXX
279*b1cdbd2cSJim Jagielski 
GetXDisplay() const280*b1cdbd2cSJim Jagielski inline Display *X11SalFrame::GetXDisplay() const
281*b1cdbd2cSJim Jagielski { return pDisplay_->GetDisplay(); }
282*b1cdbd2cSJim Jagielski 
GetDrawable() const283*b1cdbd2cSJim Jagielski inline XLIB_Window X11SalFrame::GetDrawable() const
284*b1cdbd2cSJim Jagielski { return GetWindow(); }
285*b1cdbd2cSJim Jagielski 
286*b1cdbd2cSJim Jagielski #endif
287*b1cdbd2cSJim Jagielski 
288*b1cdbd2cSJim Jagielski #endif // _SV_SALFRAME_H
289*b1cdbd2cSJim Jagielski 
290