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 INCLUDED_VCL_BUTTON_HXX
21 #define INCLUDED_VCL_BUTTON_HXX
23 #include <tools/solar.h>
24 #include <tools/color.hxx>
25 #include <vcl/dllapi.h>
26 #include <vcl/image.hxx>
27 #include <vcl/ctrl.hxx>
28 #include <vcl/bitmap.hxx>
29 #include <vcl/salnativewidgets.hxx>
30 #include <rsc/rsc-vcl-shared-types.hxx>
35 class ImplCommonButtonData
;
41 class VCL_DLLPUBLIC Button
: public Control
44 ImplCommonButtonData
*mpButtonData
;
47 // Copy assignment is forbidden and not implemented.
48 SAL_DLLPRIVATE
Button (const Button
&);
49 SAL_DLLPRIVATE Button
& operator= (const Button
&);
51 SAL_DLLPRIVATE sal_uInt16
ImplGetButtonState() const;
52 SAL_DLLPRIVATE sal_uInt16
& ImplGetButtonState();
53 SAL_DLLPRIVATE sal_uInt16
ImplGetTextStyle( OUString
& rText
, WinBits nWinStyle
, sal_uLong nDrawFlags
);
54 SAL_DLLPRIVATE
void ImplDrawAlignedImage( OutputDevice
* pDev
, Point
& rPos
, Size
& rSize
,
55 bool bLayout
, sal_uLong nImageSep
, sal_uLong nDrawFlags
,
56 sal_uInt16 nTextStyle
, Rectangle
*pSymbolRect
=NULL
, bool bAddImageSep
= false );
57 SAL_DLLPRIVATE
void ImplSetFocusRect( const Rectangle
&rFocusRect
);
58 SAL_DLLPRIVATE
const Rectangle
& ImplGetFocusRect() const;
59 SAL_DLLPRIVATE
void ImplSetSymbolAlign( SymbolAlign eAlign
);
60 /// The x-coordinate of the vertical separator line, use in MenuButton subclass only.
61 SAL_DLLPRIVATE
long ImplGetSeparatorX() const;
62 SAL_DLLPRIVATE
void ImplSetSeparatorX( long nX
);
65 explicit Button( WindowType nType
);
72 void SetClickHdl( const Link
& rLink
) { maClickHdl
= rLink
; }
73 const Link
& GetClickHdl() const { return maClickHdl
; }
75 static OUString
GetStandardText( StandardButtonType eButton
);
77 bool SetModeImage( const Image
& rImage
);
78 const Image
GetModeImage( ) const;
79 bool HasImage() const;
80 void SetImageAlign( ImageAlign eAlign
);
81 ImageAlign
GetImageAlign() const;
83 void EnableImageDisplay( bool bEnable
);
84 void EnableTextDisplay( bool bEnable
);
86 void SetFocusRect( const Rectangle
& rFocusRect
);
87 bool IsSmallSymbol() const;
88 void SetSmallSymbol(bool bSmall
= true);
89 virtual bool set_property(const OString
&rKey
, const OString
&rValue
) SAL_OVERRIDE
;
93 // - PushButton-Types -
96 #define PUSHBUTTON_DROPDOWN_TOOLBOX ((sal_uInt16)0x0001)
97 #define PUSHBUTTON_DROPDOWN_MENUBUTTON ((sal_uInt16)0x0002)
103 class VCL_DLLPUBLIC PushButton
: public Button
108 TriState meSaveValue
;
109 sal_uInt16 mnDDStyle
;
114 SAL_DLLPRIVATE
void ImplInitPushButtonData();
115 SAL_DLLPRIVATE WinBits
ImplInitStyle( const Window
* pPrevWindow
, WinBits nStyle
);
116 SAL_DLLPRIVATE
void ImplInitSettings( bool bFont
, bool bForeground
, bool bBackground
);
117 SAL_DLLPRIVATE
void ImplDrawPushButtonContent( OutputDevice
* pDev
, sal_uLong nDrawFlags
,
118 const Rectangle
& rRect
, bool bLayout
, bool bMenuBtnSep
);
119 SAL_DLLPRIVATE
void ImplDrawPushButton( bool bLayout
= false );
120 using Button::ImplGetTextStyle
;
121 SAL_DLLPRIVATE sal_uInt16
ImplGetTextStyle( sal_uLong nDrawFlags
) const;
122 SAL_DLLPRIVATE
bool IsSymbol() const { return ( (meSymbol
!= SYMBOL_NOSYMBOL
) && (meSymbol
!= SYMBOL_IMAGE
) ); }
123 SAL_DLLPRIVATE
bool IsImage() const { return Button::HasImage(); }
125 // Copy assignment is forbidden and not implemented.
126 SAL_DLLPRIVATE
PushButton( const PushButton
& );
127 SAL_DLLPRIVATE PushButton
& operator=( const PushButton
& );
129 SAL_DLLPRIVATE
void ImplInit( Window
* pParent
, WinBits nStyle
);
131 using Control::ImplInitSettings
;
132 using Window::ImplInit
;
134 SAL_DLLPRIVATE
void ImplSetDefButton( bool bSet
);
135 SAL_DLLPRIVATE
static void ImplDrawPushButtonFrame( Window
* pDev
, Rectangle
& rRect
, sal_uInt16 nStyle
);
136 SAL_DLLPRIVATE
static bool ImplHitTestPushButton( Window
* pDev
, const Point
& rPos
);
137 SAL_DLLPRIVATE
bool ImplIsDefButton() const;
140 explicit PushButton( WindowType nType
);
142 virtual void FillLayoutData() const SAL_OVERRIDE
;
144 GetCanonicalFont( const StyleSettings
& _rStyle
) const SAL_OVERRIDE
;
146 GetCanonicalTextColor( const StyleSettings
& _rStyle
) const SAL_OVERRIDE
;
148 explicit PushButton( Window
* pParent
, WinBits nStyle
= 0 );
149 explicit PushButton( Window
* pParent
, const ResId
& );
150 virtual ~PushButton();
152 virtual void MouseButtonDown( const MouseEvent
& rMEvt
) SAL_OVERRIDE
;
153 virtual void Tracking( const TrackingEvent
& rTEvt
) SAL_OVERRIDE
;
154 virtual void KeyInput( const KeyEvent
& rKEvt
) SAL_OVERRIDE
;
155 virtual void KeyUp( const KeyEvent
& rKEvt
) SAL_OVERRIDE
;
156 virtual void Paint( const Rectangle
& rRect
) SAL_OVERRIDE
;
157 virtual void Draw( OutputDevice
* pDev
, const Point
& rPos
, const Size
& rSize
, sal_uLong nFlags
) SAL_OVERRIDE
;
158 virtual void Resize() SAL_OVERRIDE
;
159 virtual void GetFocus() SAL_OVERRIDE
;
160 virtual void LoseFocus() SAL_OVERRIDE
;
161 virtual void StateChanged( StateChangedType nType
) SAL_OVERRIDE
;
162 virtual void DataChanged( const DataChangedEvent
& rDCEvt
) SAL_OVERRIDE
;
163 virtual bool PreNotify( NotifyEvent
& rNEvt
) SAL_OVERRIDE
;
164 virtual void UserDraw( const UserDrawEvent
& rUDEvt
);
166 virtual void Toggle();
168 void SetSymbol( SymbolType eSymbol
);
169 SymbolType
GetSymbol() const { return meSymbol
; }
170 void SetSymbolAlign( SymbolAlign eAlign
);
172 void SetDropDown( sal_uInt16 nStyle
);
173 sal_uInt16
GetDropDown() const { return mnDDStyle
; }
175 void SetState( TriState eState
);
176 TriState
GetState() const { return meState
; }
178 void Check( bool bCheck
= true );
179 bool IsChecked() const;
181 void SetPressed( bool bPressed
);
182 bool IsPressed() const { return mbPressed
; }
186 void SaveValue() { meSaveValue
= GetState(); }
187 TriState
GetSavedValue() const { return meSaveValue
; }
188 bool IsValueChangedFromSaved() const { return meSaveValue
!= GetState(); }
190 Size
CalcMinimumSize( long nMaxWidth
= 0 ) const;
191 virtual Size
GetOptimalSize() const SAL_OVERRIDE
;
193 void SetToggleHdl( const Link
& rLink
) { maToggleHdl
= rLink
; }
194 const Link
& GetToggleHdl() const { return maToggleHdl
; }
195 virtual bool set_property(const OString
&rKey
, const OString
&rValue
) SAL_OVERRIDE
;
198 inline void PushButton::Check( bool bCheck
)
200 SetState( (bCheck
) ? TRISTATE_TRUE
: TRISTATE_FALSE
);
203 inline bool PushButton::IsChecked() const
205 return (GetState() == TRISTATE_TRUE
);
212 class VCL_DLLPUBLIC OKButton
: public PushButton
215 using PushButton::ImplInit
;
217 SAL_DLLPRIVATE
void ImplInit( Window
* pParent
, WinBits nStyle
);
219 // Copy assignment is forbidden and not implemented.
220 SAL_DLLPRIVATE
OKButton (const OKButton
&);
221 SAL_DLLPRIVATE OKButton
& operator= (const OKButton
&);
224 explicit OKButton( Window
* pParent
, WinBits nStyle
= WB_DEFBUTTON
);
225 explicit OKButton( Window
* pParent
, const ResId
& );
227 virtual void Click() SAL_OVERRIDE
;
234 class VCL_DLLPUBLIC CancelButton
: public PushButton
237 using PushButton::ImplInit
;
239 SAL_DLLPRIVATE
void ImplInit( Window
* pParent
, WinBits nStyle
);
241 // Copy assignment is forbidden and not implemented.
242 SAL_DLLPRIVATE
CancelButton (const CancelButton
&);
243 SAL_DLLPRIVATE CancelButton
& operator= (const CancelButton
&);
246 explicit CancelButton( Window
* pParent
, WinBits nStyle
= 0 );
247 explicit CancelButton( Window
* pParent
, const ResId
& );
249 virtual void Click() SAL_OVERRIDE
;
252 class VCL_DLLPUBLIC CloseButton
: public CancelButton
255 explicit CloseButton(Window
* pParent
, WinBits nStyle
= 0);
263 class VCL_DLLPUBLIC HelpButton
: public PushButton
266 using PushButton::ImplInit
;
268 SAL_DLLPRIVATE
void ImplInit( Window
* pParent
, WinBits nStyle
);
270 // Copy assignment is forbidden and not implemented.
271 SAL_DLLPRIVATE
HelpButton( const HelpButton
& );
272 SAL_DLLPRIVATE HelpButton
& operator= ( const HelpButton
& );
275 explicit HelpButton( Window
* pParent
, WinBits nStyle
= 0 );
276 explicit HelpButton( Window
* pParent
, const ResId
& );
278 virtual void Click() SAL_OVERRIDE
;
285 class VCL_DLLPUBLIC RadioButton
: public Button
288 boost::shared_ptr
< std::vector
<RadioButton
*> > m_xGroup
;
289 Rectangle maStateRect
;
290 Rectangle maMouseRect
;
297 // when mbLegacyNoTextAlign is set then the old behaviour where
298 // the WB_LEFT, WB_RIGHT & WB_CENTER affect the image placement
299 // occurs, otherwise the image ( radiobutton circle ) is placed
300 // to the left or right ( depending on RTL or LTR settings )
301 bool mbLegacyNoTextAlign
;
302 SAL_DLLPRIVATE
void ImplInitRadioButtonData();
303 SAL_DLLPRIVATE WinBits
ImplInitStyle( const Window
* pPrevWindow
, WinBits nStyle
);
304 SAL_DLLPRIVATE
void ImplInitSettings( bool bFont
, bool bForeground
, bool bBackground
);
305 SAL_DLLPRIVATE
void ImplDrawRadioButtonState();
306 SAL_DLLPRIVATE
void ImplDraw( OutputDevice
* pDev
, sal_uLong nDrawFlags
,
307 const Point
& rPos
, const Size
& rSize
,
308 const Size
& rImageSize
, Rectangle
& rStateRect
,
309 Rectangle
& rMouseRect
, bool bLayout
= false );
310 SAL_DLLPRIVATE
void ImplDrawRadioButton( bool bLayout
= false );
311 SAL_DLLPRIVATE
void ImplInvalidateOrDrawRadioButtonState();
312 SAL_DLLPRIVATE
void ImplUncheckAllOther();
313 SAL_DLLPRIVATE Size
ImplGetRadioImageSize() const;
314 SAL_DLLPRIVATE
long ImplGetImageToTextDistance() const;
316 // Copy assignment is forbidden and not implemented.
317 SAL_DLLPRIVATE
RadioButton(const RadioButton
&);
318 SAL_DLLPRIVATE RadioButton
& operator= (const RadioButton
&);
321 using Control::ImplInitSettings
;
322 using Window::ImplInit
;
323 SAL_DLLPRIVATE
void ImplInit( Window
* pParent
, WinBits nStyle
);
324 SAL_DLLPRIVATE
void ImplLoadRes( const ResId
& rResId
);
327 SAL_DLLPRIVATE
void ImplCallClick( bool bGrabFocus
= false, sal_uInt16 nFocusFlags
= 0 );
328 SAL_DLLPRIVATE
void ImplSetMinimumNWFSize();
331 virtual void FillLayoutData() const SAL_OVERRIDE
;
333 GetCanonicalFont( const StyleSettings
& _rStyle
) const SAL_OVERRIDE
;
335 GetCanonicalTextColor( const StyleSettings
& _rStyle
) const SAL_OVERRIDE
;
337 inline void SetMouseRect( const Rectangle
& _rMouseRect
) { maMouseRect
= _rMouseRect
; }
338 inline const Rectangle
& GetMouseRect( ) const { return maMouseRect
; }
339 inline void SetStateRect( const Rectangle
& _rStateRect
) { maStateRect
= _rStateRect
; }
340 inline const Rectangle
& GetStateRect( ) const { return maStateRect
; }
342 // draws the radio button (the knob image), in its current state (pressed/checked)
343 // at the usual location, which can be overridden with SetStateRect
344 void DrawRadioButtonState( );
347 explicit RadioButton( Window
* pParent
, WinBits nWinStyle
= 0 );
348 explicit RadioButton( Window
* pParent
, const ResId
& );
349 virtual ~RadioButton();
351 virtual void MouseButtonDown( const MouseEvent
& rMEvt
) SAL_OVERRIDE
;
352 virtual void Tracking( const TrackingEvent
& rTEvt
) SAL_OVERRIDE
;
353 virtual void KeyInput( const KeyEvent
& rKEvt
) SAL_OVERRIDE
;
354 virtual void KeyUp( const KeyEvent
& rKEvt
) SAL_OVERRIDE
;
355 virtual void Paint( const Rectangle
& rRect
) SAL_OVERRIDE
;
356 virtual void Draw( OutputDevice
* pDev
, const Point
& rPos
, const Size
& rSize
, sal_uLong nFlags
) SAL_OVERRIDE
;
357 virtual void Resize() SAL_OVERRIDE
;
358 virtual void GetFocus() SAL_OVERRIDE
;
359 virtual void LoseFocus() SAL_OVERRIDE
;
360 virtual void StateChanged( StateChangedType nType
) SAL_OVERRIDE
;
361 virtual void DataChanged( const DataChangedEvent
& rDCEvt
) SAL_OVERRIDE
;
362 virtual bool PreNotify( NotifyEvent
& rNEvt
) SAL_OVERRIDE
;
364 virtual void Toggle();
366 bool IsStateChanged() const { return mbStateChanged
; }
368 void EnableRadioCheck( bool bRadioCheck
= true ) { mbRadioCheck
= bRadioCheck
; }
369 bool IsRadioCheckEnabled() const { return mbRadioCheck
; }
371 bool SetModeRadioImage( const Image
& rImage
);
372 const Image
& GetModeRadioImage( ) const;
374 void SetState( bool bCheck
);
375 void Check( bool bCheck
= true );
376 bool IsChecked() const { return mbChecked
; }
378 void SaveValue() { mbSaveValue
= IsChecked(); }
379 bool GetSavedValue() const { return mbSaveValue
; }
380 bool IsValueChangedFromSaved() const { return mbSaveValue
!= IsChecked(); }
382 static Image
GetRadioImage( const AllSettings
& rSettings
, sal_uInt16 nFlags
);
384 Size
CalcMinimumSize( long nMaxWidth
= 0 ) const;
385 virtual Size
GetOptimalSize() const SAL_OVERRIDE
;
387 void SetToggleHdl( const Link
& rLink
) { maToggleHdl
= rLink
; }
388 const Link
& GetToggleHdl() const { return maToggleHdl
; }
390 /** GetRadioButtonGroup returns a list of pointers to <code>RadioButton</code>s in the same group.
392 The pointers in the returned list are valid at the time call returns. However rescheduling
393 or giving up the SolarMutex may mean events get executed that lead to the pointers getting
397 defines whether <code>this</code> is contained in the returned list
400 on return contains the <code>RadioButton</code>s
401 in the same group as this <code>RadioButton</code>.
403 std::vector
<RadioButton
*> GetRadioButtonGroup(bool bIncludeThis
= true) const;
405 virtual bool set_property(const OString
&rKey
, const OString
&rValue
) SAL_OVERRIDE
;
408 * Group this RadioButton with another
410 void group(RadioButton
&rOther
);
417 class VCL_DLLPUBLIC CheckBox
: public Button
420 Rectangle maStateRect
;
421 Rectangle maMouseRect
;
423 TriState meSaveValue
;
426 // when mbLegacyNoTextAlign is set then the old behaviour where
427 // the WB_LEFT, WB_RIGHT & WB_CENTER affect the image placement
428 // occurs, otherwise the image ( checkbox box ) is placed
429 // to the left or right ( depending on RTL or LTR settings )
430 bool mbLegacyNoTextAlign
;
431 SAL_DLLPRIVATE
void ImplInitCheckBoxData();
432 SAL_DLLPRIVATE WinBits
ImplInitStyle( const Window
* pPrevWindow
, WinBits nStyle
);
433 SAL_DLLPRIVATE
void ImplInitSettings( bool bFont
, bool bForeground
, bool bBackground
);
434 SAL_DLLPRIVATE
void ImplInvalidateOrDrawCheckBoxState();
435 SAL_DLLPRIVATE
void ImplDraw( OutputDevice
* pDev
, sal_uLong nDrawFlags
,
436 const Point
& rPos
, const Size
& rSize
,
437 const Size
& rImageSize
, Rectangle
& rStateRect
,
438 Rectangle
& rMouseRect
, bool bLayout
);
439 SAL_DLLPRIVATE
void ImplDrawCheckBox( bool bLayout
= false );
440 SAL_DLLPRIVATE
long ImplGetImageToTextDistance() const;
441 SAL_DLLPRIVATE Size
ImplGetCheckImageSize() const;
443 // Copy assignment is forbidden and not implemented.
444 SAL_DLLPRIVATE
CheckBox(const CheckBox
&);
445 SAL_DLLPRIVATE CheckBox
& operator= (const CheckBox
&);
448 using Control::ImplInitSettings
;
449 using Window::ImplInit
;
450 SAL_DLLPRIVATE
void ImplInit( Window
* pParent
, WinBits nStyle
);
451 SAL_DLLPRIVATE
void ImplLoadRes( const ResId
& rResId
);
452 virtual void FillLayoutData() const SAL_OVERRIDE
;
453 virtual const Font
& GetCanonicalFont( const StyleSettings
& _rStyle
) const SAL_OVERRIDE
;
454 virtual const Color
& GetCanonicalTextColor( const StyleSettings
& _rStyle
) const SAL_OVERRIDE
;
456 virtual void ImplDrawCheckBoxState();
457 SAL_DLLPRIVATE
const Rectangle
& GetStateRect() const { return maStateRect
; }
458 SAL_DLLPRIVATE
const Rectangle
& GetMouseRect() const { return maMouseRect
; }
461 SAL_DLLPRIVATE
void ImplCheck();
462 SAL_DLLPRIVATE
void ImplSetMinimumNWFSize();
464 explicit CheckBox( Window
* pParent
, WinBits nStyle
= 0 );
465 explicit CheckBox( Window
* pParent
, const ResId
& );
467 virtual void MouseButtonDown( const MouseEvent
& rMEvt
) SAL_OVERRIDE
;
468 virtual void Tracking( const TrackingEvent
& rTEvt
) SAL_OVERRIDE
;
469 virtual void KeyInput( const KeyEvent
& rKEvt
) SAL_OVERRIDE
;
470 virtual void KeyUp( const KeyEvent
& rKEvt
) SAL_OVERRIDE
;
471 virtual void Paint( const Rectangle
& rRect
) SAL_OVERRIDE
;
472 virtual void Draw( OutputDevice
* pDev
, const Point
& rPos
, const Size
& rSize
, sal_uLong nFlags
) SAL_OVERRIDE
;
473 virtual void Resize() SAL_OVERRIDE
;
474 virtual void GetFocus() SAL_OVERRIDE
;
475 virtual void LoseFocus() SAL_OVERRIDE
;
476 virtual void StateChanged( StateChangedType nType
) SAL_OVERRIDE
;
477 virtual void DataChanged( const DataChangedEvent
& rDCEvt
) SAL_OVERRIDE
;
478 virtual bool PreNotify( NotifyEvent
& rNEvt
) SAL_OVERRIDE
;
480 virtual void Toggle();
482 void SetState( TriState eState
);
483 TriState
GetState() const { return meState
; }
485 void Check( bool bCheck
= true );
486 bool IsChecked() const;
488 void EnableTriState( bool bTriState
= true );
489 bool IsTriStateEnabled() const { return mbTriState
; }
491 void SaveValue() { meSaveValue
= GetState(); }
492 TriState
GetSavedValue() const { return meSaveValue
; }
493 bool IsValueChangedFromSaved() const { return meSaveValue
!= GetState(); }
495 static Image
GetCheckImage( const AllSettings
& rSettings
, sal_uInt16 nFlags
);
497 Size
CalcMinimumSize( long nMaxWidth
= 0 ) const;
498 virtual Size
GetOptimalSize() const SAL_OVERRIDE
;
500 void SetToggleHdl( const Link
& rLink
) { maToggleHdl
= rLink
; }
501 const Link
& GetToggleHdl() const { return maToggleHdl
; }
502 bool IsLegacyNoTextAlign() { return mbLegacyNoTextAlign
; }
503 void SetLegacyNoTextAlign( bool bVal
) { mbLegacyNoTextAlign
= bVal
; }
505 virtual bool set_property(const OString
&rKey
, const OString
&rValue
) SAL_OVERRIDE
;
508 inline void CheckBox::Check( bool bCheck
)
510 SetState( (bCheck
) ? TRISTATE_TRUE
: TRISTATE_FALSE
);
513 inline bool CheckBox::IsChecked() const
515 return (GetState() == TRISTATE_TRUE
);
519 // - Control-Layer fuer alten Code -
522 class VCL_DLLPUBLIC ImageButton
: public PushButton
525 using PushButton::ImplInitStyle
;
527 SAL_DLLPRIVATE
void ImplInitStyle();
529 // Copy assignment is forbidden and not implemented.
530 SAL_DLLPRIVATE
ImageButton( const ImageButton
& );
531 SAL_DLLPRIVATE ImageButton
& operator= ( const ImageButton
& );
534 ImageButton( Window
* pParent
, WinBits nStyle
= 0 );
535 ImageButton( Window
* pParent
, const ResId
& rResId
);
536 virtual ~ImageButton();
539 class VCL_DLLPUBLIC ImageRadioButton
: public RadioButton
541 // Copy assignment is forbidden and not implemented.
542 SAL_DLLPRIVATE
ImageRadioButton( const ImageRadioButton
& );
543 SAL_DLLPRIVATE ImageRadioButton
& operator= ( const ImageRadioButton
& );
546 explicit ImageRadioButton( Window
* pParent
, WinBits nStyle
= 0 );
547 virtual ~ImageRadioButton();
550 class VCL_DLLPUBLIC TriStateBox
: public CheckBox
552 // Copy assignment is forbidden and not implemented.
553 SAL_DLLPRIVATE
TriStateBox( const TriStateBox
& );
554 SAL_DLLPRIVATE TriStateBox
& operator= ( const TriStateBox
& );
557 explicit TriStateBox( Window
* pParent
, WinBits nStyle
= 0 );
558 virtual ~TriStateBox();
561 class VCL_DLLPUBLIC DisclosureButton
: public CheckBox
564 SAL_DLLPRIVATE
virtual void ImplDrawCheckBoxState() SAL_OVERRIDE
;
566 explicit DisclosureButton( Window
* pParent
, WinBits nStyle
= 0 );
568 virtual void KeyInput( const KeyEvent
& rKEvt
) SAL_OVERRIDE
;
571 #endif // INCLUDED_VCL_BUTTON_HXX
573 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */