1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef _SV_WINDOW_HXX
21 #define _SV_WINDOW_HXX
23 #include <tools/solar.h>
24 #include <vcl/dllapi.h>
25 #include <vcl/outdev.hxx>
26 #include <tools/resid.hxx>
27 #include <vcl/pointr.hxx>
28 #include <tools/wintypes.hxx>
29 #include <rsc/rsc-vcl-shared-types.hxx>
30 #include <vcl/apptypes.hxx>
31 #include <vcl/inputctx.hxx>
32 #include <vcl/vclevent.hxx>
33 // Only for compatibility - because many people outside haven't included event.hxx
34 #include <vcl/event.hxx>
35 #include <vcl/region.hxx>
36 #include <vcl/salnativewidgets.hxx>
37 #include <rtl/ustring.hxx>
38 #include <cppuhelper/weakref.hxx>
39 #include <com/sun/star/uno/Reference.hxx>
40 #include <boost/shared_ptr.hpp>
45 struct ImplOverlapData
;
47 struct ImplCalcToTopData
;
49 struct SystemParentData
;
50 class ImplBorderWindow
;
64 class DataChangedEvent
;
69 class MenuFloatingWindow
;
71 // Nur fuer ExecuteDrag:
74 struct ImplAccessibleInfos
;
79 namespace accessibility
{
109 namespace datatransfer
{
110 namespace clipboard
{
115 class XDragGestureRecognizer
;
121 struct ControlLayoutData
;
124 namespace svt
{ class PopupWindowControllerImpl
; }
130 // Type fuer GetWindow()
131 #define WINDOW_PARENT ((sal_uInt16)0)
132 #define WINDOW_FIRSTCHILD ((sal_uInt16)1)
133 #define WINDOW_LASTCHILD ((sal_uInt16)2)
134 #define WINDOW_PREV ((sal_uInt16)3)
135 #define WINDOW_NEXT ((sal_uInt16)4)
136 #define WINDOW_FIRSTOVERLAP ((sal_uInt16)5)
137 #define WINDOW_LASTOVERLAP ((sal_uInt16)6)
138 #define WINDOW_OVERLAP ((sal_uInt16)7)
139 #define WINDOW_PARENTOVERLAP ((sal_uInt16)8)
140 #define WINDOW_CLIENT ((sal_uInt16)9)
141 #define WINDOW_REALPARENT ((sal_uInt16)10)
142 #define WINDOW_FRAME ((sal_uInt16)11)
143 #define WINDOW_BORDER ((sal_uInt16)12)
144 #define WINDOW_FIRSTTOPWINDOWCHILD ((sal_uInt16)13)
145 #define WINDOW_LASTTOPWINDOWCHILD ((sal_uInt16)14)
146 #define WINDOW_PREVTOPWINDOWSIBLING ((sal_uInt16)15)
147 #define WINDOW_NEXTTOPWINDOWSIBLING ((sal_uInt16)16)
149 // Flags for setPosSizePixel()
150 #define WINDOW_POSSIZE_X ((sal_uInt16)0x0001)
151 #define WINDOW_POSSIZE_Y ((sal_uInt16)0x0002)
152 #define WINDOW_POSSIZE_WIDTH ((sal_uInt16)0x0004)
153 #define WINDOW_POSSIZE_HEIGHT ((sal_uInt16)0x0008)
154 #define WINDOW_POSSIZE_POS (WINDOW_POSSIZE_X | WINDOW_POSSIZE_Y)
155 #define WINDOW_POSSIZE_SIZE (WINDOW_POSSIZE_WIDTH | WINDOW_POSSIZE_HEIGHT)
156 #define WINDOW_POSSIZE_POSSIZE (WINDOW_POSSIZE_POS | WINDOW_POSSIZE_SIZE)
157 #define WINDOW_POSSIZE_ALL (WINDOW_POSSIZE_POSSIZE)
158 #define WINDOW_POSSIZE_DROPDOWN ((sal_uInt16)0x0010)
161 #define SHOW_NOPARENTUPDATE ((sal_uInt16)0x0001)
162 #define SHOW_NOFOCUSCHANGE ((sal_uInt16)0x0002)
163 #define SHOW_NOACTIVATE ((sal_uInt16)0x0004)
164 #define SHOW_FOREGROUNDTASK ((sal_uInt16)0x0008)
166 // Flags for SetZOrder()
167 #define WINDOW_ZORDER_BEFOR ((sal_uInt16)0x0001)
168 #define WINDOW_ZORDER_BEHIND ((sal_uInt16)0x0002)
169 #define WINDOW_ZORDER_FIRST ((sal_uInt16)0x0004)
170 #define WINDOW_ZORDER_LAST ((sal_uInt16)0x0008)
173 #define ACTIVATE_MODE_GRABFOCUS ((sal_uInt16)0x0001)
176 #define TOTOP_RESTOREWHENMIN ((sal_uInt16)0x0001)
177 #define TOTOP_FOREGROUNDTASK ((sal_uInt16)0x0002)
178 #define TOTOP_NOGRABFOCUS ((sal_uInt16)0x0004)
179 #define TOTOP_GRABFOCUSONLY ((sal_uInt16)0x0008)
181 // Flags for Invalidate
182 #define INVALIDATE_CHILDREN ((sal_uInt16)0x0001)
183 #define INVALIDATE_NOCHILDREN ((sal_uInt16)0x0002)
184 #define INVALIDATE_NOERASE ((sal_uInt16)0x0004)
185 #define INVALIDATE_UPDATE ((sal_uInt16)0x0008)
186 #define INVALIDATE_TRANSPARENT ((sal_uInt16)0x0010)
187 #define INVALIDATE_NOTRANSPARENT ((sal_uInt16)0x0020)
188 #define INVALIDATE_NOCLIPCHILDREN ((sal_uInt16)0x4000)
189 // Temporaer fuer Kompatibilitaet
190 #define INVALIDATE_BACKGROUND INVALIDATE_TRANSPARENT
192 // Flags for Validate
193 #define VALIDATE_CHILDREN ((sal_uInt16)0x0001)
194 #define VALIDATE_NOCHILDREN ((sal_uInt16)0x0002)
197 #define SCROLL_CLIP ((sal_uInt16)0x0001)
198 #define SCROLL_CHILDREN ((sal_uInt16)0x0002)
199 #define SCROLL_NOCHILDREN ((sal_uInt16)0x0004)
200 #define SCROLL_NOERASE ((sal_uInt16)0x0008)
201 #define SCROLL_NOINVALIDATE ((sal_uInt16)0x0010)
202 #define SCROLL_NOWINDOWINVALIDATE ((sal_uInt16)0x0020)
203 #define SCROLL_USECLIPREGION ((sal_uInt16)0x0040)
204 #define SCROLL_UPDATE ((sal_uInt16)0x0080)
206 // Flags for ParentClipMode
207 #define PARENTCLIPMODE_CLIP ((sal_uInt16)0x0001)
208 #define PARENTCLIPMODE_NOCLIP ((sal_uInt16)0x0002)
210 // Flags for Invert()
211 #define INVERT_HIGHLIGHT ((sal_uInt16)0x0001)
212 #define INVERT_50 ((sal_uInt16)0x0002)
214 // Flags for ShowTracking()
215 #define SHOWTRACK_SMALL ((sal_uInt16)0x0001)
216 #define SHOWTRACK_BIG ((sal_uInt16)0x0002)
217 #define SHOWTRACK_SPLIT ((sal_uInt16)0x0003)
218 #define SHOWTRACK_OBJECT ((sal_uInt16)0x0004)
219 #define SHOWTRACK_WINDOW ((sal_uInt16)0x1000)
220 #define SHOWTRACK_CLIP ((sal_uInt16)0x2000)
221 #define SHOWTRACK_STYLE ((sal_uInt16)0x000F)
223 // Flags for StartTracking()
224 #define STARTTRACK_KEYINPUT ((sal_uInt16)0x0001)
225 #define STARTTRACK_KEYMOD ((sal_uInt16)0x0002)
226 #define STARTTRACK_NOKEYCANCEL ((sal_uInt16)0x0004)
227 #define STARTTRACK_SCROLLREPEAT ((sal_uInt16)0x0008)
228 #define STARTTRACK_BUTTONREPEAT ((sal_uInt16)0x0010)
229 #define STARTTRACK_MOUSEBUTTONDOWN ((sal_uInt16)0x0020)
230 #define STARTTRACK_FOCUSCANCEL ((sal_uInt16)0x0040)
232 // Flags for StartAutoScroll()
233 #define AUTOSCROLL_VERT ((sal_uInt16)0x0001)
234 #define AUTOSCROLL_HORZ ((sal_uInt16)0x0002)
236 // Flags for StateChanged()
237 typedef sal_uInt16 StateChangedType
;
238 #define STATE_CHANGE_INITSHOW ((StateChangedType)1)
239 #define STATE_CHANGE_VISIBLE ((StateChangedType)2)
240 #define STATE_CHANGE_UPDATEMODE ((StateChangedType)3)
241 #define STATE_CHANGE_ENABLE ((StateChangedType)4)
242 #define STATE_CHANGE_TEXT ((StateChangedType)5)
243 #define STATE_CHANGE_IMAGE ((StateChangedType)6)
244 #define STATE_CHANGE_DATA ((StateChangedType)7)
245 #define STATE_CHANGE_STATE ((StateChangedType)8)
246 #define STATE_CHANGE_STYLE ((StateChangedType)9)
247 #define STATE_CHANGE_ZOOM ((StateChangedType)10)
248 #define STATE_CHANGE_BORDER ((StateChangedType)11)
249 #define STATE_CHANGE_TRANSPARENT ((StateChangedType)12)
250 #define STATE_CHANGE_CONTROLFONT ((StateChangedType)13)
251 #define STATE_CHANGE_CONTROLFOREGROUND ((StateChangedType)14)
252 #define STATE_CHANGE_CONTROLBACKGROUND ((StateChangedType)15)
253 #define STATE_CHANGE_READONLY ((StateChangedType)16)
254 #define STATE_CHANGE_EXTENDEDSTYLE ((StateChangedType)17)
255 #define STATE_CHANGE_MIRRORING ((StateChangedType)18)
256 #define STATE_CHANGE_CONTROL_FOCUS ((StateChangedType)20)
257 #define STATE_CHANGE_USER ((StateChangedType)10000)
260 #define GETFOCUS_TAB ((sal_uInt16)0x0001)
261 #define GETFOCUS_CURSOR ((sal_uInt16)0x0002)
262 #define GETFOCUS_MNEMONIC ((sal_uInt16)0x0004)
263 #define GETFOCUS_FORWARD ((sal_uInt16)0x0010)
264 #define GETFOCUS_BACKWARD ((sal_uInt16)0x0020)
265 #define GETFOCUS_AROUND ((sal_uInt16)0x0040)
266 #define GETFOCUS_UNIQUEMNEMONIC ((sal_uInt16)0x0100)
267 #define GETFOCUS_INIT ((sal_uInt16)0x0200)
268 #define GETFOCUS_FLOATWIN_POPUPMODEEND_CANCEL ((sal_uInt16)0x0400)
270 // Draw-Flags fuer Draw()
271 #define WINDOW_DRAW_MONO ((sal_uLong)0x00000001)
272 #define WINDOW_DRAW_NOBORDER ((sal_uLong)0x00000002)
273 #define WINDOW_DRAW_NOCONTROLS ((sal_uLong)0x00000004)
274 #define WINDOW_DRAW_NODISABLE ((sal_uLong)0x00000008)
275 #define WINDOW_DRAW_NOMNEMONIC ((sal_uLong)0x00000010)
276 #define WINDOW_DRAW_NOSELECTION ((sal_uLong)0x00000020)
277 #define WINDOW_DRAW_NOFOCUS ((sal_uLong)0x00000040)
278 #define WINDOW_DRAW_NOBACKGROUND ((sal_uLong)0x00000080)
279 #define WINDOW_DRAW_ROLLOVER ((sal_uLong)0x00000100)
281 // DialogControl-Flags
282 #define WINDOW_DLGCTRL_RETURN ((sal_uInt16)0x0001)
283 #define WINDOW_DLGCTRL_WANTFOCUS ((sal_uInt16)0x0002)
284 #define WINDOW_DLGCTRL_MOD1TAB ((sal_uInt16)0x0004)
285 #define WINDOW_DLGCTRL_FLOATWIN_POPUPMODEEND_CANCEL ((sal_uInt16)0x0008)
287 // GetWindowClipRegionPixel-Flags
288 #define WINDOW_GETCLIPREGION_NULL ((sal_uInt16)0x0001)
289 #define WINDOW_GETCLIPREGION_NOCHILDREN ((sal_uInt16)0x0002)
291 // EndExtTextInput-Flags
292 #define EXTTEXTINPUT_END_COMPLETE ((sal_uInt16)0x0001)
293 #define EXTTEXTINPUT_END_CANCEL ((sal_uInt16)0x0002)
295 #define IMPL_MINSIZE_BUTTON_WIDTH 70
296 #define IMPL_MINSIZE_BUTTON_HEIGHT 22
297 #define IMPL_EXTRA_BUTTON_WIDTH 18
298 #define IMPL_EXTRA_BUTTON_HEIGHT 10
299 #define IMPL_SEP_BUTTON_X 5
300 #define IMPL_SEP_BUTTON_Y 5
301 #define IMPL_MINSIZE_MSGBOX_WIDTH 150
302 #define IMPL_MINSIZE_MSGBOX_HEIGHT 80
303 #define IMPL_DIALOG_OFFSET 5
304 #define IMPL_DIALOG_BAR_OFFSET 3
305 #define IMPL_MSGBOX_OFFSET_EXTRA_X 0
306 #define IMPL_MSGBOX_OFFSET_EXTRA_Y 2
307 #define IMPL_SEP_MSGBOX_IMAGE 8
309 #define DLGWINDOW_PREV 0
310 #define DLGWINDOW_NEXT 1
311 #define DLGWINDOW_FIRST 2
318 const char* ImplDbgCheckWindow( const void* pObj
);
326 struct WindowResHeader
333 class VCL_DLLPUBLIC Window
: public OutputDevice
336 friend class OutputDevice
;
337 friend class Application
;
338 friend class SystemWindow
;
339 friend class WorkWindow
;
341 friend class MessBox
;
342 friend class DockingWindow
;
343 friend class FloatingWindow
;
344 friend class GroupBox
;
345 friend class PushButton
;
346 friend class RadioButton
;
347 friend class SystemChildWindow
;
348 friend class ImplBorderWindow
;
349 friend class VclBuilder
;
351 // TODO: improve missing functionality
352 // only required because of SetFloatingMode()
353 friend class ImplDockingWindowWrapper
;
354 friend class ImplPopupFloatWin
;
355 friend class MenuFloatingWindow
;
357 friend class svt::PopupWindowControllerImpl
;
360 // NOTE: to remove many dependencies of other modules
361 // to this central file, all members are now hidden
362 // in the WindowImpl class and all inline functions
365 // Please do *not* add new members or inline functions to class Window,
366 // but use class WindowImpl instead
368 WindowImpl
* mpWindowImpl
;
370 SAL_DLLPRIVATE
void ImplInitWindowData( WindowType nType
);
373 friend const char* ImplDbgCheckWindow( const void* pObj
);
375 friend Window
* ImplFindWindow( const SalFrame
* pFrame
, Point
& rSalFramePos
);
377 SAL_DLLPRIVATE
void ImplInit( Window
* pParent
, WinBits nStyle
, SystemParentData
* pSystemParentData
);
378 SAL_DLLPRIVATE WinBits
ImplInitRes( const ResId
& rResId
);
379 SAL_DLLPRIVATE WindowResHeader
ImplLoadResHeader( const ResId
& rResId
);
380 SAL_DLLPRIVATE
void ImplLoadRes( const ResId
& rResId
);
381 SAL_DLLPRIVATE
void ImplSetFrameParent( const Window
* pParent
);
382 SAL_DLLPRIVATE
void ImplInsertWindow( Window
* pParent
);
383 SAL_DLLPRIVATE
void ImplRemoveWindow( sal_Bool bRemoveFrameData
);
384 SAL_DLLPRIVATE Window
* ImplGetWindow();
385 SAL_DLLPRIVATE ImplFrameData
* ImplGetFrameData();
386 SalFrame
* ImplGetFrame() const;
387 SAL_DLLPRIVATE ImplWinData
* ImplGetWinData() const;
388 SAL_DLLPRIVATE SalGraphics
* ImplGetFrameGraphics() const;
389 SAL_DLLPRIVATE
void ImplCallFocusChangeActivate( Window
* pNewOverlapWindow
, Window
* pOldOverlapWindow
);
390 SAL_DLLPRIVATE Window
* ImplFindWindow( const Point
& rFramePos
);
391 SAL_DLLPRIVATE sal_uInt16
ImplHitTest( const Point
& rFramePos
);
392 SAL_DLLPRIVATE Window
* ImplGetParent() const;
393 SAL_DLLPRIVATE Window
* ImplGetClientWindow() const;
394 SAL_DLLPRIVATE Window
* ImplGetBorderWindow() const;
395 SAL_DLLPRIVATE Window
* ImplGetFirstOverlapWindow();
396 SAL_DLLPRIVATE
const Window
* ImplGetFirstOverlapWindow() const;
397 SAL_DLLPRIVATE Window
* ImplGetFrameWindow() const;
398 SAL_DLLPRIVATE sal_Bool
ImplIsRealParentPath( const Window
* pWindow
) const;
399 SAL_DLLPRIVATE sal_Bool
ImplIsChild( const Window
* pWindow
, sal_Bool bSystemWindow
= sal_False
) const;
400 SAL_DLLPRIVATE sal_Bool
ImplIsWindowOrChild( const Window
* pWindow
, sal_Bool bSystemWindow
= sal_False
) const;
401 SAL_DLLPRIVATE sal_Bool
ImplIsDockingWindow() const;
402 SAL_DLLPRIVATE sal_Bool
ImplIsFloatingWindow() const;
403 SAL_DLLPRIVATE sal_Bool
ImplIsSplitter() const;
404 SAL_DLLPRIVATE sal_Bool
ImplIsPushButton() const;
405 SAL_DLLPRIVATE sal_Bool
ImplIsOverlapWindow() const;
406 SAL_DLLPRIVATE
void ImplSetMouseTransparent( sal_Bool bTransparent
);
407 SAL_DLLPRIVATE
int ImplTestMousePointerSet();
408 SAL_DLLPRIVATE PointerStyle
ImplGetMousePointer() const;
409 SAL_DLLPRIVATE
void ImplResetReallyVisible();
410 SAL_DLLPRIVATE
void ImplSetReallyVisible();
411 SAL_DLLPRIVATE
void ImplCallInitShow();
412 SAL_DLLPRIVATE
void ImplAddDel( ImplDelData
* pDel
);
413 SAL_DLLPRIVATE
void ImplRemoveDel( ImplDelData
* pDel
);
414 SAL_DLLPRIVATE
void ImplInitResolutionSettings();
415 SAL_DLLPRIVATE
void ImplPointToLogic( Font
& rFont
) const;
416 SAL_DLLPRIVATE
void ImplLogicToPoint( Font
& rFont
) const;
417 SAL_DLLPRIVATE Point
ImplOutputToFrame( const Point
& rPos
);
418 SAL_DLLPRIVATE Point
ImplFrameToOutput( const Point
& rPos
);
419 SAL_DLLPRIVATE sal_Bool
ImplSysObjClip( const Region
* pOldRegion
);
420 SAL_DLLPRIVATE
void ImplUpdateSysObjChildrenClip();
421 SAL_DLLPRIVATE
void ImplUpdateSysObjOverlapsClip();
422 SAL_DLLPRIVATE
void ImplUpdateSysObjClip();
423 SAL_DLLPRIVATE sal_Bool
ImplSetClipFlagChildren( sal_Bool bSysObjOnlySmaller
= sal_False
);
424 SAL_DLLPRIVATE sal_Bool
ImplSetClipFlagOverlapWindows( sal_Bool bSysObjOnlySmaller
= sal_False
);
425 SAL_DLLPRIVATE sal_Bool
ImplSetClipFlag( sal_Bool bSysObjOnlySmaller
= sal_False
);
426 SAL_DLLPRIVATE
void ImplIntersectWindowClipRegion( Region
& rRegion
);
427 SAL_DLLPRIVATE
void ImplIntersectWindowRegion( Region
& rRegion
);
428 SAL_DLLPRIVATE
void ImplExcludeWindowRegion( Region
& rRegion
);
429 SAL_DLLPRIVATE
void ImplExcludeOverlapWindows( Region
& rRegion
);
430 SAL_DLLPRIVATE
void ImplExcludeOverlapWindows2( Region
& rRegion
);
431 SAL_DLLPRIVATE
void ImplClipBoundaries( Region
& rRegion
, sal_Bool bThis
, sal_Bool bOverlaps
);
432 SAL_DLLPRIVATE sal_Bool
ImplClipChildren( Region
& rRegion
);
433 SAL_DLLPRIVATE
void ImplClipAllChildren( Region
& rRegion
);
434 SAL_DLLPRIVATE
void ImplClipSiblings( Region
& rRegion
);
435 SAL_DLLPRIVATE
void ImplInitWinClipRegion();
436 SAL_DLLPRIVATE
void ImplInitWinChildClipRegion();
437 SAL_DLLPRIVATE Region
* ImplGetWinChildClipRegion();
438 SAL_DLLPRIVATE
void ImplIntersectAndUnionOverlapWindows( const Region
& rInterRegion
, Region
& rRegion
);
439 SAL_DLLPRIVATE
void ImplIntersectAndUnionOverlapWindows2( const Region
& rInterRegion
, Region
& rRegion
);
440 SAL_DLLPRIVATE
void ImplCalcOverlapRegionOverlaps( const Region
& rInterRegion
, Region
& rRegion
);
441 SAL_DLLPRIVATE
void ImplCalcOverlapRegion( const Rectangle
& rSourceRect
, Region
& rRegion
,
442 sal_Bool bChildren
, sal_Bool bParent
, sal_Bool bSiblings
);
443 SAL_DLLPRIVATE
void ImplCallPaint( const Region
* pRegion
, sal_uInt16 nPaintFlags
);
444 SAL_DLLPRIVATE
void ImplCallOverlapPaint();
445 SAL_DLLPRIVATE
void ImplPostPaint();
446 SAL_DLLPRIVATE
void ImplInvalidateFrameRegion( const Region
* pRegion
, sal_uInt16 nFlags
);
447 SAL_DLLPRIVATE
void ImplInvalidateOverlapFrameRegion( const Region
& rRegion
);
448 SAL_DLLPRIVATE
void ImplInvalidateParentFrameRegion( Region
& rRegion
);
449 SAL_DLLPRIVATE
void ImplInvalidate( const Region
* rRegion
, sal_uInt16 nFlags
);
450 SAL_DLLPRIVATE
void ImplValidateFrameRegion( const Region
* rRegion
, sal_uInt16 nFlags
);
451 SAL_DLLPRIVATE
void ImplValidate( const Region
* rRegion
, sal_uInt16 nFlags
);
452 SAL_DLLPRIVATE
void ImplMoveInvalidateRegion( const Rectangle
& rRect
, long nHorzScroll
, long nVertScroll
, sal_Bool bChildren
);
453 SAL_DLLPRIVATE
void ImplMoveAllInvalidateRegions( const Rectangle
& rRect
, long nHorzScroll
, long nVertScroll
, sal_Bool bChildren
);
454 SAL_DLLPRIVATE
void ImplScroll( const Rectangle
& rRect
, long nHorzScroll
, long nVertScroll
, sal_uInt16 nFlags
);
455 SAL_DLLPRIVATE
void ImplUpdateAll( sal_Bool bOverlapWindows
= sal_True
);
456 SAL_DLLPRIVATE
void ImplUpdateWindowPtr( Window
* pWindow
);
457 SAL_DLLPRIVATE
void ImplUpdateWindowPtr();
458 SAL_DLLPRIVATE
void ImplUpdateOverlapWindowPtr( sal_Bool bNewFrame
);
459 SAL_DLLPRIVATE sal_Bool
ImplUpdatePos();
460 SAL_DLLPRIVATE
void ImplUpdateSysObjPos();
461 SAL_DLLPRIVATE WindowImpl
* ImplGetWindowImpl() const { return mpWindowImpl
; }
463 /** check whether a font is suitable for UI
465 The font to be tested will be checked whether it could display a
466 localized test string. If this is not the case, then the font
467 is deemed unsuitable as UI font.
470 the font to be tested
473 <TRUE/> if the font can be used as UI font
474 <FALSE/> if the font is unsuitable as UI font
476 SAL_DLLPRIVATE
bool ImplCheckUIFont( const Font
& rFont
);
477 SAL_DLLPRIVATE
void ImplUpdateGlobalSettings( AllSettings
& rSettings
, sal_Bool bCallHdl
= sal_True
);
478 SAL_DLLPRIVATE
void ImplAlignChildren();
479 SAL_DLLPRIVATE
void ImplPosSizeWindow( long nX
, long nY
, long nWidth
, long nHeight
, sal_uInt16 nFlags
);
480 SAL_DLLPRIVATE
void ImplToBottomChild();
481 SAL_DLLPRIVATE
void ImplCalcToTop( ImplCalcToTopData
* pPrevData
);
482 SAL_DLLPRIVATE
void ImplToTop( sal_uInt16 nFlags
);
483 SAL_DLLPRIVATE
void ImplStartToTop( sal_uInt16 nFlags
);
484 SAL_DLLPRIVATE
void ImplFocusToTop( sal_uInt16 nFlags
, sal_Bool bReallyVisible
);
485 SAL_DLLPRIVATE
void ImplShowAllOverlaps();
486 SAL_DLLPRIVATE
void ImplHideAllOverlaps();
487 SAL_DLLPRIVATE
void ImplNotifyKeyMouseCommandEventListeners( NotifyEvent
& rNEvt
);
488 SAL_DLLPRIVATE
void ImplCallMouseMove( sal_uInt16 nMouseCode
, sal_Bool bModChanged
= sal_False
);
489 SAL_DLLPRIVATE
void ImplGenerateMouseMove();
490 SAL_DLLPRIVATE
void ImplGrabFocus( sal_uInt16 nFlags
);
491 SAL_DLLPRIVATE
void ImplInvertFocus( const Rectangle
& rRect
);
492 SAL_DLLPRIVATE
void ImplControlFocus( sal_uInt16 nFlags
= 0 );
493 SAL_DLLPRIVATE Window
* ImplGetDlgWindow( sal_uInt16 n
, sal_uInt16 nType
, sal_uInt16 nStart
= 0, sal_uInt16 nEnd
= 0xFFFF, sal_uInt16
* pIndex
= NULL
);
494 SAL_DLLPRIVATE sal_Bool
ImplDlgCtrl( const KeyEvent
& rKEvt
, sal_Bool bKeyInput
);
495 SAL_DLLPRIVATE sal_Bool
ImplHasDlgCtrl();
496 SAL_DLLPRIVATE
void ImplDlgCtrlNextWindow();
497 SAL_DLLPRIVATE
void ImplDlgCtrlFocusChanged( Window
* pWindow
, sal_Bool bGetFocus
);
498 SAL_DLLPRIVATE Window
* ImplFindDlgCtrlWindow( Window
* pWindow
);
499 SAL_DLLPRIVATE
long ImplLogicUnitToPixelX( long nX
, MapUnit eUnit
);
500 SAL_DLLPRIVATE
long ImplLogicUnitToPixelY( long nY
, MapUnit eUnit
);
501 SAL_DLLPRIVATE sal_Bool
ImplIsWindowInFront( const Window
* pTestWindow
) const;
502 SAL_DLLPRIVATE
void ImplSaveOverlapBackground();
503 SAL_DLLPRIVATE sal_Bool
ImplRestoreOverlapBackground( Region
& rInvRegion
);
504 SAL_DLLPRIVATE
void ImplDeleteOverlapBackground();
505 SAL_DLLPRIVATE
void ImplInvalidateAllOverlapBackgrounds();
506 SAL_DLLPRIVATE
static void ImplNewInputContext();
507 SAL_DLLPRIVATE
void ImplCallActivateListeners(Window
*);
508 SAL_DLLPRIVATE
void ImplCallDeactivateListeners(Window
*);
509 DECL_DLLPRIVATE_LINK( ImplHandlePaintHdl
, void* );
510 DECL_DLLPRIVATE_LINK( ImplGenerateMouseMoveHdl
, void* );
511 DECL_DLLPRIVATE_LINK( ImplTrackTimerHdl
, Timer
* );
512 DECL_DLLPRIVATE_LINK( ImplAsyncFocusHdl
, void* );
513 DECL_DLLPRIVATE_LINK( ImplHideOwnerDrawWindowsHdl
, void* );
514 DECL_DLLPRIVATE_LINK( ImplHandleResizeTimerHdl
, void* );
516 SAL_DLLPRIVATE
static void ImplCalcSymbolRect( Rectangle
& rRect
);
517 SAL_DLLPRIVATE
void ImplHandleScroll( ScrollBar
* pHScrl
, long nX
, ScrollBar
* pVScrl
, long nY
);
518 SAL_DLLPRIVATE sal_Bool
ImplIsAccessibleCandidate() const;
519 SAL_DLLPRIVATE sal_Bool
ImplIsAccessibleNativeFrame() const;
520 SAL_DLLPRIVATE sal_uInt16
ImplGetAccessibleCandidateChildWindowCount( sal_uInt16 nFirstWindowType
) const;
521 SAL_DLLPRIVATE Window
* ImplGetAccessibleCandidateChild( sal_uInt16 nChild
, sal_uInt16
& rChildCount
, sal_uInt16 nFirstWindowType
, sal_Bool bTopLevel
= sal_True
) const;
522 SAL_DLLPRIVATE sal_Bool
ImplRegisterAccessibleNativeFrame();
523 SAL_DLLPRIVATE
void ImplRevokeAccessibleNativeFrame();
524 SAL_DLLPRIVATE
void ImplCallResize();
525 SAL_DLLPRIVATE
void ImplCallMove();
526 SAL_DLLPRIVATE Rectangle
ImplOutputToUnmirroredAbsoluteScreenPixel( const Rectangle
& rRect
) const;
527 SAL_DLLPRIVATE
void ImplMirrorFramePos( Point
&pt
) const;
528 SAL_DLLPRIVATE
long ImplGetUnmirroredOutOffX();
529 SAL_DLLPRIVATE
void ImplIncModalCount();
530 SAL_DLLPRIVATE
void ImplDecModalCount();
532 // retrieves the list of owner draw decorated windows for this window hiearchy
533 SAL_DLLPRIVATE ::std::vector
<Window
*>& ImplGetOwnerDrawList();
534 SAL_DLLPRIVATE Window
* ImplGetTopmostFrameWindow();
536 SAL_DLLPRIVATE Rectangle
ImplGetWindowExtentsRelative( Window
*pRelativeWindow
, sal_Bool bClientOnly
) const;
537 SAL_DLLPRIVATE
void ImplNotifyIconifiedState( sal_Bool bIconified
);
538 SAL_DLLPRIVATE
bool ImplStopDnd();
539 SAL_DLLPRIVATE
void ImplStartDnd();
541 SAL_DLLPRIVATE
static void ImplInitAppFontData( Window
* pWindow
);
542 SAL_DLLPRIVATE
void ImplPaintToDevice( OutputDevice
* pTargetOutDev
, const Point
& rPos
);
544 SAL_DLLPRIVATE
void ImplIsInTaskPaneList( sal_Bool mbIsInTaskList
);
545 SAL_DLLPRIVATE ::com::sun::star::uno::Reference
< ::com::sun::star::rendering::XCanvas
>
546 ImplGetCanvas( const Size
& rFullscreenSize
, bool bFullscreen
, bool bSpriteCanvas
) const;
549 // Default construction is forbidden and not implemented.
550 SAL_DLLPRIVATE
Window();
552 // Copy assignment is forbidden and not implemented.
553 SAL_DLLPRIVATE
Window (const Window
&);
554 SAL_DLLPRIVATE Window
& operator= (const Window
&);
557 // Single argument ctors shall be explicit.
558 explicit Window( WindowType nType
);
560 void SetCompoundControl( sal_Bool bCompound
);
562 void ImplCallEventListeners( sal_uLong nEvent
, void* pData
= NULL
);
563 void CallEventListeners( sal_uLong nEvent
, void* pData
= NULL
);
564 void FireVclEvent( VclSimpleEvent
* pEvent
);
566 // FIXME: this is a hack to workaround missing layout functionality
567 SAL_DLLPRIVATE
void ImplAdjustNWFSizes();
569 // These eventually are supposed to go when everything is converted to .ui
570 SAL_DLLPRIVATE Window
* getLegacyNonLayoutAccessibleRelationMemberOf() const;
571 SAL_DLLPRIVATE Window
* getLegacyNonLayoutAccessibleRelationLabeledBy() const;
572 SAL_DLLPRIVATE Window
* getLegacyNonLayoutAccessibleRelationLabelFor() const;
574 // Let Label override the code part of GetAccessibleRelationLabelFor
575 virtual Window
* getAccessibleRelationLabelFor() const;
576 virtual sal_uInt16
getDefaultAccessibleRole() const;
577 virtual OUString
getDefaultAccessibleName() const;
579 // Single argument ctors shall be explicit.
580 explicit Window( Window
* pParent
, WinBits nStyle
= 0 );
582 Window( Window
* pParent
, const ResId
& rResId
);
585 virtual void MouseMove( const MouseEvent
& rMEvt
);
586 virtual void MouseButtonDown( const MouseEvent
& rMEvt
);
587 virtual void MouseButtonUp( const MouseEvent
& rMEvt
);
588 virtual void KeyInput( const KeyEvent
& rKEvt
);
589 virtual void KeyUp( const KeyEvent
& rKEvt
);
590 virtual void PrePaint();
591 virtual void Paint( const Rectangle
& rRect
);
593 virtual void PostPaint();
594 virtual void Draw( OutputDevice
* pDev
, const Point
& rPos
, const Size
& rSize
, sal_uLong nFlags
);
596 virtual void Resize();
597 virtual void Activate();
598 virtual void Deactivate();
599 virtual void GetFocus();
600 virtual void LoseFocus();
601 virtual void RequestHelp( const HelpEvent
& rHEvt
);
602 virtual void Command( const CommandEvent
& rCEvt
);
603 virtual void Tracking( const TrackingEvent
& rTEvt
);
604 virtual void UserEvent( sal_uLong nEvent
, void* pEventData
);
605 virtual void StateChanged( StateChangedType nStateChange
);
606 virtual void DataChanged( const DataChangedEvent
& rDCEvt
);
607 virtual long PreNotify( NotifyEvent
& rNEvt
);
608 virtual long Notify( NotifyEvent
& rNEvt
);
609 virtual Window
* GetPreferredKeyInputWindow();
611 /*virtual*/ void AddEventListener( const Link
& rEventListener
);
612 /*virtual*/ void RemoveEventListener( const Link
& rEventListener
);
613 /*virtual*/ void AddChildEventListener( const Link
& rEventListener
);
614 /*virtual*/ void RemoveChildEventListener( const Link
& rEventListener
);
616 sal_uLong
PostUserEvent( const Link
& rLink
, void* pCaller
= NULL
);
617 sal_Bool
PostUserEvent( sal_uLong
& rEventId
, const Link
& rLink
, void* pCaller
= NULL
);
618 void RemoveUserEvent( sal_uLong nUserEvent
);
620 void IncrementLockCount();
621 void DecrementLockCount();
622 sal_Bool
IsLocked( sal_Bool bChildren
= sal_False
) const;
624 // returns the input language used for the last key stroke
625 // may be LANGUAGE_DONTKNOW if not supported by the OS
626 LanguageType
GetInputLanguage() const;
628 void SetStyle( WinBits nStyle
);
629 WinBits
GetStyle() const;
630 WinBits
GetPrevStyle() const;
631 void SetExtendedStyle( WinBits nExtendedStyle
);
632 WinBits
GetExtendedStyle() const;
633 void SetType( WindowType nType
);
634 WindowType
GetType() const;
635 sal_Bool
IsSystemWindow() const;
636 sal_Bool
IsDialog() const;
637 sal_Bool
IsMenuFloatingWindow() const;
638 sal_Bool
IsToolbarFloatingWindow() const;
639 sal_Bool
IsTopWindow() const;
640 SystemWindow
* GetSystemWindow() const;
642 void EnableAllResize( sal_Bool bEnable
= sal_True
);
644 void SetBorderStyle( sal_uInt16 nBorderStyle
);
645 sal_uInt16
GetBorderStyle() const;
646 void GetBorder( sal_Int32
& rLeftBorder
, sal_Int32
& rTopBorder
,
647 sal_Int32
& rRightBorder
, sal_Int32
& rBottomBorder
) const;
648 Size
CalcWindowSize( const Size
& rOutSz
) const;
649 Size
CalcOutputSize( const Size
& rWinSz
) const;
650 long CalcTitleWidth() const;
652 void EnableClipSiblings( sal_Bool bClipSiblings
= sal_True
);
654 void EnableChildTransparentMode( sal_Bool bEnable
= sal_True
);
655 sal_Bool
IsChildTransparentModeEnabled() const;
657 void SetMouseTransparent( sal_Bool bTransparent
);
658 sal_Bool
IsMouseTransparent() const;
659 void SetPaintTransparent( sal_Bool bTransparent
);
660 sal_Bool
IsPaintTransparent() const;
661 void SetDialogControlStart( sal_Bool bStart
);
662 sal_Bool
IsDialogControlStart() const;
663 void SetDialogControlFlags( sal_uInt16 nFlags
);
664 sal_uInt16
GetDialogControlFlags() const;
668 sal_uLong mnState
; // the button state
669 Point maPos
; // mouse position in output coordinates
671 PointerState
GetPointerState();
672 sal_Bool
IsMouseOver();
674 sal_uLong
GetCurrentModButtons();
676 void SetInputContext( const InputContext
& rInputContext
);
677 const InputContext
& GetInputContext() const;
678 void EndExtTextInput( sal_uInt16 nFlags
);
679 void SetCursorRect( const Rectangle
* pRect
= NULL
, long nExtTextInputWidth
= 0 );
680 const Rectangle
* GetCursorRect() const;
681 long GetCursorExtTextInputWidth() const;
683 void SetCompositionCharRect( const Rectangle
* pRect
, long nCompositionLength
, sal_Bool bVertical
= sal_False
);
685 using OutputDevice::SetSettings
;
686 virtual void SetSettings( const AllSettings
& rSettings
);
687 virtual void SetSettings( const AllSettings
& rSettings
, sal_Bool bChild
);
688 void UpdateSettings( const AllSettings
& rSettings
, sal_Bool bChild
= sal_False
);
689 void NotifyAllChildren( DataChangedEvent
& rDCEvt
);
691 void SetPointFont( const Font
& rFont
);
692 Font
GetPointFont() const;
693 void SetZoomedPointFont( const Font
& rFont
);
694 long GetDrawPixel( OutputDevice
* pDev
, long nPixels
) const;
695 Font
GetDrawPixelFont( OutputDevice
* pDev
) const;
697 void SetControlFont();
698 void SetControlFont( const Font
& rFont
);
699 Font
GetControlFont() const;
700 sal_Bool
IsControlFont() const;
701 void SetControlForeground();
702 void SetControlForeground( const Color
& rColor
);
703 Color
GetControlForeground() const;
704 sal_Bool
IsControlForeground() const;
705 void SetControlBackground();
706 void SetControlBackground( const Color
& rColor
);
707 Color
GetControlBackground() const;
708 sal_Bool
IsControlBackground() const;
710 void SetParentClipMode( sal_uInt16 nMode
= 0 );
711 sal_uInt16
GetParentClipMode() const;
713 void SetWindowRegionPixel();
714 void SetWindowRegionPixel( const Region
& rRegion
);
715 const Region
& GetWindowRegionPixel() const;
716 sal_Bool
IsWindowRegionPixel() const;
717 Region
GetWindowClipRegionPixel( sal_uInt16 nFlags
= 0 ) const;
718 Region
GetPaintRegion() const;
719 sal_Bool
IsInPaint() const;
720 // while IsInPaint returns true ExpandPaintClipRegion adds the
721 // submitted region to the paint clip region so you can
722 // paint additional parts of your window if necessary
723 void ExpandPaintClipRegion( const Region
& rRegion
);
725 void SetParent( Window
* pNewParent
);
726 Window
* GetParent() const;
727 // return the dialog we are contained in or NULL if un-contained
728 Dialog
* GetParentDialog() const;
730 void Show( sal_Bool bVisible
= sal_True
, sal_uInt16 nFlags
= 0 );
731 void Hide( sal_uInt16 nFlags
= 0 ) { Show( sal_False
, nFlags
); }
732 sal_Bool
IsVisible() const;
733 sal_Bool
IsReallyVisible() const;
734 sal_Bool
IsReallyShown() const;
735 sal_Bool
IsInInitShow() const;
737 void Enable( bool bEnable
= true, bool bChild
= true );
738 void Disable( bool bChild
= true ) { Enable( false, bChild
); }
739 sal_Bool
IsEnabled() const;
741 void EnableInput( sal_Bool bEnable
= sal_True
, sal_Bool bChild
= sal_True
);
742 void EnableInput( sal_Bool bEnable
, sal_Bool bChild
, sal_Bool bSysWin
,
743 const Window
* pExcludeWindow
= NULL
);
744 sal_Bool
IsInputEnabled() const;
746 /** Override <code>EnableInput</code>. This can be necessary due to other people
747 using EnableInput for whole window hierarchies.
750 <code>AlwaysEnableInput</code> and <code>AlwaysDisableInput</code> are
751 mutually exclusive; the last setter wins.
753 sets always enabled flag
756 if true children are recursively set to AlwaysEnableInput
758 void AlwaysEnableInput( sal_Bool bAlways
, sal_Bool bChild
= sal_True
);
759 /** returns the current AlwaysEnableInput state
761 true if window is in AlwaysEnableInput state
763 sal_Bool
IsAlwaysEnableInput() const;
764 /** Override <code>EnableInput</code>, counterpart to AlwaysEnableInput.
765 Windows with AlwaysDisableInput will not get key events even if enabled
766 and input enabled.This can be necessary due to other people using EnableInput
767 for whole window hierarchies.
769 <code>AlwaysEnableInput</code> and <code>AlwaysDisableInput</code> are
770 mutually exclusive; the last setter wins.
773 sets always disable flag
776 if true children are recursively set to AlwaysDisableInput
778 void AlwaysDisableInput( sal_Bool bAlways
, sal_Bool bChild
= sal_True
);
780 /** usually event handlers (see AddEventListener and AddChildEventListener)
781 are not called on disabled, modal or input disabled windows. There are however rare cases
782 in which one wants a Window or rather one of its Control subclasses to
783 not evaluate events but still react to those events externally. In these
784 rare cases call SetCallHandlersOnInputDisabled( true ) to have your handler
787 Currently only mouse events get this special treatment.
789 Use this sparingly, chances are if you want to use it you're working around
793 Enable/Disable calling event handlers for this disabled, modal or input disabled window.
794 This call is implicity done recursively for possible child windows.
796 void SetCallHandlersOnInputDisabled( bool bCall
);
797 /** get state of SetCallHandlersOnInputDisabled
799 @returns whether handlers are called regardless of input enabled state
801 bool IsCallHandlersOnInputDisabled() const;
802 /** A window is in modal mode if one of its children or subchildren
803 is a running modal window (a modal dialog)
805 @returns sal_True if a child or subchild is a running modal window
807 sal_Bool
IsInModalMode() const;
810 * Necessary for calc ref input handling from modal dialogs
812 bool IsInModalNonRefMode() const;
814 void SetActivateMode( sal_uInt16 nMode
);
815 sal_uInt16
GetActivateMode() const;
817 void ToTop( sal_uInt16 nFlags
= 0 );
818 void SetZOrder( Window
* pRefWindow
, sal_uInt16 nFlags
);
819 void EnableAlwaysOnTop( sal_Bool bEnable
= sal_True
);
820 sal_Bool
IsAlwaysOnTopEnabled() const;
822 virtual void setPosSizePixel( long nX
, long nY
,
823 long nWidth
, long nHeight
,
824 sal_uInt16 nFlags
= WINDOW_POSSIZE_ALL
);
825 virtual void SetPosPixel( const Point
& rNewPos
);
826 virtual Point
GetPosPixel() const;
827 virtual void SetSizePixel( const Size
& rNewSize
);
828 virtual Size
GetSizePixel() const;
829 virtual void SetPosSizePixel( const Point
& rNewPos
,
830 const Size
& rNewSize
);
831 virtual void SetOutputSizePixel( const Size
& rNewSize
);
832 sal_Bool
IsDefaultPos() const;
833 sal_Bool
IsDefaultSize() const;
835 // those conversion routines might deliver different results during UI mirroring
836 Point
OutputToScreenPixel( const Point
& rPos
) const;
837 Point
ScreenToOutputPixel( const Point
& rPos
) const;
838 // the normalized screen methods work independent from UI mirroring
839 Point
OutputToNormalizedScreenPixel( const Point
& rPos
) const;
840 Point
NormalizedScreenToOutputPixel( const Point
& rPos
) const;
841 Point
OutputToAbsoluteScreenPixel( const Point
& rPos
) const;
842 Point
AbsoluteScreenToOutputPixel( const Point
& rPos
) const;
843 Rectangle
GetDesktopRectPixel() const;
844 // window extents including border and decoratrion
845 Rectangle
GetWindowExtentsRelative( Window
*pRelativeWindow
) const;
846 // window extents of the client window, coordinates to be used in SetPosPixel
847 Rectangle
GetClientWindowExtentsRelative( Window
*pRelativeWindow
) const;
849 virtual sal_Bool
IsScrollable() const;
850 virtual void Scroll( long nHorzScroll
, long nVertScroll
,
851 sal_uInt16 nFlags
= 0 );
852 virtual void Scroll( long nHorzScroll
, long nVertScroll
,
853 const Rectangle
& rRect
, sal_uInt16 nFlags
= 0 );
854 virtual void Invalidate( sal_uInt16 nFlags
= 0 );
855 virtual void Invalidate( const Rectangle
& rRect
, sal_uInt16 nFlags
= 0 );
856 virtual void Invalidate( const Region
& rRegion
, sal_uInt16 nFlags
= 0 );
857 void Validate( sal_uInt16 nFlags
= 0 );
858 sal_Bool
HasPaintEvent() const;
863 // toggles new docking support, enabled via toolkit
864 void EnableDocking( sal_Bool bEnable
= sal_True
);
865 // retrieves the single dockingmanager instance
866 static DockingManager
* GetDockingManager();
868 void EnablePaint( sal_Bool bEnable
);
869 sal_Bool
IsPaintEnabled() const;
870 void SetUpdateMode( sal_Bool bUpdate
);
871 sal_Bool
IsUpdateMode() const;
872 void SetParentUpdateMode( sal_Bool bUpdate
);
875 sal_Bool
HasFocus() const;
876 sal_Bool
HasChildPathFocus( sal_Bool bSystemWindow
= sal_False
) const;
877 sal_Bool
IsActive() const;
878 sal_Bool
HasActiveChildFrame();
879 sal_uInt16
GetGetFocusFlags() const;
880 void GrabFocusToDocument();
883 * Set this when you need to act as if the window has focus even if it
884 * doesn't. This is necessary for implementing tab stops inside floating
885 * windows, but floating windows don't get focus from the system.
887 void SetFakeFocus( bool bFocus
);
889 sal_Bool
IsCompoundControl() const;
891 static sal_uIntPtr
SaveFocus();
892 static sal_Bool
EndSaveFocus( sal_uIntPtr nSaveId
, sal_Bool bRestore
= sal_True
);
896 sal_Bool
IsMouseCaptured() const;
898 void SetPointer( const Pointer
& rPointer
);
899 const Pointer
& GetPointer() const;
900 void EnableChildPointerOverwrite( sal_Bool bOverwrite
= sal_True
);
901 void SetPointerPosPixel( const Point
& rPos
);
902 Point
GetPointerPosPixel();
903 Point
GetLastPointerPosPixel();
904 void ShowPointer( sal_Bool bVisible
);
907 sal_Bool
IsWait() const;
909 void SetCursor( Cursor
* pCursor
);
910 Cursor
* GetCursor() const;
912 void SetZoom( const Fraction
& rZoom
);
913 const Fraction
& GetZoom() const;
914 sal_Bool
IsZoom() const;
915 long CalcZoom( long n
) const;
917 virtual void SetText( const OUString
& rStr
);
918 virtual OUString
GetText() const;
919 // return the actual text displayed
920 // this may have e.g. accellerators removed or portions
921 // replaced by ellipsis
922 virtual OUString
GetDisplayText() const;
923 // gets the visible background color. for transparent windows
924 // this may be the parent's background color; for controls
925 // this may be a child's background color (e.g. ListBox)
926 virtual const Wallpaper
& GetDisplayBackground() const;
928 void SetHelpText( const XubString
& rHelpText
);
929 const XubString
& GetHelpText() const;
931 void SetQuickHelpText( const XubString
& rHelpText
);
932 const XubString
& GetQuickHelpText() const;
934 void SetHelpId( const OString
& );
935 const OString
& GetHelpId() const;
937 void SetUniqueId( const OString
& );
938 const OString
& GetUniqueId() const;
940 Window
* FindWindow( const Point
& rPos
) const;
942 sal_uInt16
GetChildCount() const;
943 Window
* GetChild( sal_uInt16 nChild
) const;
944 Window
* GetWindow( sal_uInt16 nType
) const;
945 sal_Bool
IsChild( const Window
* pWindow
, sal_Bool bSystemWindow
= sal_False
) const;
946 sal_Bool
IsWindowOrChild( const Window
* pWindow
, sal_Bool bSystemWindow
= sal_False
) const;
948 void SetData( void* pNewData
);
949 void* GetData() const;
951 void ShowFocus( const Rectangle
& rRect
);
954 void Invert( const Rectangle
& rRect
, sal_uInt16 nFlags
= 0 );
955 void Invert( const Polygon
& rPoly
, sal_uInt16 nFlags
= 0 );
957 // transparent background for selected or checked items in toolboxes etc.
958 void DrawSelectionBackground( const Rectangle
& rRect
, sal_uInt16 highlight
, sal_Bool bChecked
, sal_Bool bDrawBorder
, sal_Bool bDrawExtBorderOnly
);
959 // the same, but fills a passed Color with a text color complementing the selection background
960 void DrawSelectionBackground( const Rectangle
& rRect
, sal_uInt16 highlight
, sal_Bool bChecked
, sal_Bool bDrawBorder
, sal_Bool bDrawExtBorderOnly
, Color
* pSelectionTextColor
);
961 // support rounded edges in the selection rect
962 void DrawSelectionBackground( const Rectangle
& rRect
, sal_uInt16 highlight
, sal_Bool bChecked
, sal_Bool bDrawBorder
, sal_Bool bDrawExtBorderOnly
, long nCornerRadius
, Color
* pSelectionTextColor
, Color
* pPaintColor
);
964 void ShowTracking( const Rectangle
& rRect
,
965 sal_uInt16 nFlags
= SHOWTRACK_SMALL
);
967 void InvertTracking( const Rectangle
& rRect
,
968 sal_uInt16 nFlags
= SHOWTRACK_SMALL
);
969 void InvertTracking( const Polygon
& rPoly
, sal_uInt16 nFlags
= 0 );
971 void StartTracking( sal_uInt16 nFlags
= 0 );
972 void EndTracking( sal_uInt16 nFlags
= 0 );
973 sal_Bool
IsTracking() const;
975 void StartAutoScroll( sal_uInt16 nFlags
);
976 void EndAutoScroll();
978 sal_Bool
HandleScrollCommand( const CommandEvent
& rCmd
,
979 ScrollBar
* pHScrl
= NULL
,
980 ScrollBar
* pVScrl
= NULL
);
982 void SaveBackground( const Point
& rPos
, const Size
& rSize
,
983 const Point
& rDestOff
, VirtualDevice
& rSaveDevice
);
985 const SystemEnvData
* GetSystemData() const;
986 ::com::sun::star::uno::Any
GetSystemDataAny() const;
988 // API to set/query the component interfaces
989 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XWindowPeer
> GetComponentInterface( sal_Bool bCreate
= sal_True
);
990 virtual void SetComponentInterface( ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XWindowPeer
> xIFace
);
993 ::com::sun::star::uno::Reference
< ::com::sun::star::accessibility::XAccessible
> GetAccessible( sal_Bool bCreate
= sal_True
);
994 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::accessibility::XAccessible
> CreateAccessible();
995 void SetAccessible( ::com::sun::star::uno::Reference
< ::com::sun::star::accessibility::XAccessible
> );
997 Window
* GetAccessibleParentWindow() const;
998 sal_uInt16
GetAccessibleChildWindowCount();
999 Window
* GetAccessibleChildWindow( sal_uInt16 n
);
1001 void SetAccessibleRole( sal_uInt16 nRole
);
1002 sal_uInt16
GetAccessibleRole() const;
1004 void SetAccessibleName( const String
& rName
);
1005 String
GetAccessibleName() const;
1007 void SetAccessibleDescription( const String
& rDescr
);
1008 String
GetAccessibleDescription() const;
1010 void SetAccessibleRelationLabeledBy( Window
* pLabeledBy
);
1011 Window
* GetAccessibleRelationLabeledBy() const;
1013 void SetAccessibleRelationLabelFor( Window
* pLabelFor
);
1014 Window
* GetAccessibleRelationLabelFor() const;
1016 void SetAccessibleRelationMemberOf( Window
* pMemberOf
);
1017 Window
* GetAccessibleRelationMemberOf() const;
1020 // to avoid sending accessibility events in cases like closing dialogs
1021 // by default checks complete parent path
1022 sal_Bool
IsAccessibilityEventsSuppressed( sal_Bool bTraverseParentPath
= sal_True
);
1023 void SetAccessibilityEventsSuppressed(sal_Bool bSuppressed
);
1025 /// request XCanvas render interface for this window
1026 ::com::sun::star::uno::Reference
<
1027 ::com::sun::star::rendering::XCanvas
> GetCanvas() const;
1028 /// request XSpriteCanvas render interface for this window
1029 ::com::sun::star::uno::Reference
<
1030 ::com::sun::star::rendering::XSpriteCanvas
> GetSpriteCanvas() const;
1032 /* records all DrawText operations within the passed rectangle;
1033 * a synchronous paint is sent to achieve this
1035 void RecordLayoutData( vcl::ControlLayoutData
* pLayout
, const Rectangle
& rRect
);
1037 // set and retrieve for Toolkit
1038 VCLXWindow
* GetWindowPeer() const;
1039 void SetWindowPeer( ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XWindowPeer
> xPeer
, VCLXWindow
* pVCLXWindow
);
1041 // remember if it was generated by Toolkit
1042 sal_Bool
IsCreatedWithToolkit() const;
1043 void SetCreatedWithToolkit( sal_Bool b
);
1045 // Deprecated - can use SetAccessibleRelationLabelFor/By nowadys
1046 virtual Window
* GetParentLabelFor( const Window
* pLabel
) const;
1047 virtual Window
* GetParentLabeledBy( const Window
* pLabeled
) const;
1048 KeyEvent
GetActivationKey() const;
1050 // Drag and Drop interfaces
1051 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::datatransfer::dnd::XDropTarget
> GetDropTarget();
1052 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::datatransfer::dnd::XDragSource
> GetDragSource();
1053 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::datatransfer::dnd::XDragGestureRecognizer
> GetDragGestureRecognizer();
1055 // Clipboard/Selection interfaces
1056 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::datatransfer::clipboard::XClipboard
> GetClipboard();
1057 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::datatransfer::clipboard::XClipboard
> GetPrimarySelection();
1060 * Advisory Sizing - what is a good size for this widget
1062 * Retrieves the preferred size of a widget ignoring
1063 * "width-request" and "height-request" properties.
1065 * Implement this in sub-classes to tell layout
1066 * the preferred widget size.
1068 virtual Size
GetOptimalSize() const;
1071 * Widgets call this to inform their owner container that the widget wants
1072 * to renegotiate its size. Should be called when a widget has a new size
1073 * request. e.g. a FixedText Control gets a new label.
1075 * akin to gtk_widget_queue_resize
1077 void queue_resize();
1080 * Sets the "width-request" property
1082 * Override for width request of the widget, or -1 if natural request
1085 * @see get_preferred_size, set_width_request
1087 void set_height_request(sal_Int32 nHeightRequest
);
1088 sal_Int32
get_height_request() const;
1091 * Sets the "height-request" property
1093 * Override for height request of the widget, or -1 if natural request
1096 * @see get_preferred_size, set_height_request
1098 void set_width_request(sal_Int32 nWidthRequest
);
1099 sal_Int32
get_width_request() const;
1102 * Retrieves the preferred size of a widget taking
1103 * into account the "width-request" and "height-request" properties.
1105 * Overrides the result of GetOptimalSize to honor the
1106 * width-request and height-request properties.
1108 * @see GetOptimalSize
1110 * akin to gtk_widget_get_preferred_size
1112 Size
get_preferred_size() const;
1115 * How to horizontally align this widget
1117 VclAlign
get_halign() const;
1118 void set_halign(VclAlign eAlign
);
1121 * How to vertically align this widget
1123 VclAlign
get_valign() const;
1124 void set_valign(VclAlign eAlign
);
1127 * Whether the widget would like to use any available extra horizontal
1130 bool get_hexpand() const;
1131 void set_hexpand(bool bExpand
);
1134 * Whether the widget would like to use any available extra vertical
1137 bool get_vexpand() const;
1138 void set_vexpand(bool bExpand
);
1141 * Whether the widget would like to use any available extra space.
1143 bool get_expand() const;
1144 void set_expand(bool bExpand
);
1147 * Whether the widget should receive extra space when the parent grows
1149 bool get_fill() const;
1150 void set_fill(bool bFill
);
1152 void set_border_width(sal_Int32 nBorderWidth
);
1153 sal_Int32
get_border_width() const;
1155 void set_margin_left(sal_Int32 nWidth
);
1156 sal_Int32
get_margin_left() const;
1158 void set_margin_right(sal_Int32 nWidth
);
1159 sal_Int32
get_margin_right() const;
1161 void set_margin_top(sal_Int32 nWidth
);
1162 sal_Int32
get_margin_top() const;
1164 void set_margin_bottom(sal_Int32 nWidth
);
1165 sal_Int32
get_margin_bottom() const;
1168 * How the widget is packed with reference to the start or end of the parent
1170 VclPackType
get_pack_type() const;
1171 void set_pack_type(VclPackType ePackType
);
1174 * The extra space to put between the widget and its neighbors
1176 sal_Int32
get_padding() const;
1177 void set_padding(sal_Int32 nPadding
);
1180 * The number of columns that the widget spans
1182 sal_Int32
get_grid_width() const;
1183 void set_grid_width(sal_Int32 nCols
);
1186 * The column number to attach the left side of the widget to
1188 sal_Int32
get_grid_left_attach() const;
1189 void set_grid_left_attach(sal_Int32 nAttach
);
1192 * The number of row that the widget spans
1194 sal_Int32
get_grid_height() const;
1195 void set_grid_height(sal_Int32 nRows
);
1198 * The row number to attach the top side of the widget to
1200 sal_Int32
get_grid_top_attach() const;
1201 void set_grid_top_attach(sal_Int32 nAttach
);
1204 * If true this child appears in a secondary layout group of children
1205 * e.g. help buttons in a buttonbox
1207 bool get_secondary() const;
1208 void set_secondary(bool bSecondary
);
1211 * Sets a widget property
1213 * @return false if property is unknown
1215 virtual bool set_property(const OString
&rKey
, const OString
&rValue
);
1218 * Sets a font attribute
1220 * @return false if attribute is unknown
1222 bool set_font_attribute(const OString
&rKey
, const OString
&rValue
);
1225 * Adds this widget to the xGroup VclSizeGroup
1228 void add_to_size_group(boost::shared_ptr
< VclSizeGroup
> xGroup
);
1229 void remove_from_all_size_groups();
1232 * add/remove mnemonic label
1234 void add_mnemonic_label(FixedText
*pLabel
);
1235 void remove_mnemonic_label(FixedText
*pLabel
);
1236 std::vector
<FixedText
*> list_mnemonic_labels() const;
1239 * Move this widget to be the nNewPosition'd child of its parent
1241 void reorderWithinParent(sal_uInt16 nNewPosition
);
1243 //-------------------------------------
1244 // Native Widget Rendering functions
1245 //-------------------------------------
1247 // form controls must never use native widgets, this can be toggled here
1248 void EnableNativeWidget( sal_Bool bEnable
= sal_True
);
1249 sal_Bool
IsNativeWidgetEnabled() const;
1251 // a helper method for a Control's Draw method
1252 void PaintToDevice( OutputDevice
* pDevice
, const Point
& rPos
, const Size
& rSize
);
1254 /* mark Window for deletion in top of event queue
1256 void doLazyDelete();
1258 //-------------------------------------
1259 // Keyboard access functions
1260 //-------------------------------------
1262 /** Query the states of keyboard indicators - Caps Lock, Num Lock and
1263 Scroll Lock. Use the following mask to retrieve the state of each
1268 INDICATOR_SCROLL_LOCK
1270 sal_uInt16
GetIndicatorState() const;
1272 void SimulateKeyPress( sal_uInt16 nKeyCode
) const;
1274 virtual OUString
GetSurroundingText() const;
1275 virtual Selection
GetSurroundingTextSelection() const;
1277 void EnableThemeSupport (void);
1278 void DisableThemeSupport (void);
1280 virtual ImplBorderWindow
* CreateBorderWindow (
1282 const WinBits nStyle
,
1283 const sal_uInt16 nTypeStyle
);
1287 #endif // _SV_WINDOW_HXX
1289 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */