fdo#74697 Add Bluez 5 support for impress remote.
[LibreOffice.git] / include / vcl / window.hxx
blob381b3e61fda5c876c73525d1b015eacf89c6df33
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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>
42 class VirtualDevice;
43 struct ImplDelData;
44 struct ImplWinData;
45 struct ImplOverlapData;
46 struct ImplFrameData;
47 struct ImplCalcToTopData;
48 struct SystemEnvData;
49 struct SystemParentData;
50 class ImplBorderWindow;
51 class VirtualDevice;
52 class Timer;
53 class Cursor;
54 class DockingManager;
55 class ScrollBar;
56 class Bitmap;
57 class FixedText;
58 class Image;
59 class MouseEvent;
60 class KeyEvent;
61 class CommandEvent;
62 class TrackingEvent;
63 class HelpEvent;
64 class DataChangedEvent;
65 class NotifyEvent;
66 class SystemWindow;
67 class SalFrame;
68 class SalObject;
69 class MenuFloatingWindow;
70 class UNOWindowData;
71 // Nur fuer ExecuteDrag:
72 struct IDataObject;
73 class VCLXWindow;
74 struct ImplAccessibleInfos;
76 namespace com {
77 namespace sun {
78 namespace star {
79 namespace accessibility {
80 class XAccessible;
81 }}}}
83 namespace com {
84 namespace sun {
85 namespace star {
86 namespace beans {
87 struct PropertyValue;
88 }}}}
90 namespace com {
91 namespace sun {
92 namespace star {
93 namespace rendering {
94 class XCanvas;
95 class XSpriteCanvas;
96 }}}}
98 namespace com {
99 namespace sun {
100 namespace star {
101 namespace awt {
102 class XWindowPeer;
103 class XWindow;
105 namespace uno {
106 class Any;
107 class XInterface;
109 namespace datatransfer {
110 namespace clipboard {
111 class XClipboard;
114 namespace dnd {
115 class XDragGestureRecognizer;
116 class XDragSource;
117 class XDropTarget;
118 } } } } }
120 namespace vcl {
121 struct ControlLayoutData;
124 namespace svt { class PopupWindowControllerImpl; }
126 // ---------------
127 // - WindowTypes -
128 // ---------------
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)
160 // Flags for Show()
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)
172 // Activate-Flags
173 #define ACTIVATE_MODE_GRABFOCUS ((sal_uInt16)0x0001)
175 // ToTop-Flags
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)
196 // Flags for Scroll
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)
259 // GetFocusFlags
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
313 // ----------
314 // - Window -
315 // ----------
317 #ifdef DBG_UTIL
318 const char* ImplDbgCheckWindow( const void* pObj );
319 #endif
321 class Dialog;
322 class WindowImpl;
323 class VclBuilder;
324 class VclSizeGroup;
326 struct WindowResHeader
328 sal_uLong nObjMask;
329 OString aHelpId;
330 sal_uLong nRSStyle;
333 class VCL_DLLPUBLIC Window : public OutputDevice
335 friend class Cursor;
336 friend class OutputDevice;
337 friend class Application;
338 friend class SystemWindow;
339 friend class WorkWindow;
340 friend class Dialog;
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;
359 private:
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
363 // were removed
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 );
372 #ifdef DBG_UTIL
373 friend const char* ImplDbgCheckWindow( const void* pObj );
374 #endif
375 friend Window* ImplFindWindow( const SalFrame* pFrame, Point& rSalFramePos );
376 public:
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.
469 @param rFont
470 the font to be tested
472 @returns
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;
548 private:
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 &);
556 protected:
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;
578 public:
579 // Single argument ctors shall be explicit.
580 explicit Window( Window* pParent, WinBits nStyle = 0 );
582 Window( Window* pParent, const ResId& rResId );
583 virtual ~Window();
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 );
595 virtual void Move();
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;
666 struct PointerState
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.
752 @param bAlways
753 sets always enabled flag
755 @param bChild
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
760 @return
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.
772 @param bAlways
773 sets always disable flag
775 @param bChild
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
785 called anyway.
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
790 the real problem.
792 @param bCall
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;
859 void Update();
860 void Flush();
861 void Sync();
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 );
874 void GrabFocus();
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 );
894 void CaptureMouse();
895 void ReleaseMouse();
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 );
905 void EnterWait();
906 void LeaveWait();
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 );
952 void HideFocus();
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 );
966 void HideTracking();
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 );
992 // Accessibility
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
1083 * should be used.
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
1094 * should be used.
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
1128 * space.
1130 bool get_hexpand() const;
1131 void set_hexpand(bool bExpand);
1134 * Whether the widget would like to use any available extra vertical
1135 * space.
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
1264 indicator:
1266 INDICATOR_CAPS_LOCK
1267 INDICATOR_NUM_LOCK
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 (
1281 Window* pParent,
1282 const WinBits nStyle,
1283 const sal_uInt16 nTypeStyle);
1287 #endif // _SV_WINDOW_HXX
1289 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */