LibreOffice Module vcl (master)  1
listbox.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
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/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
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 .
18  */
19 
20 #ifndef INCLUDED_VCL_INC_LISTBOX_HXX
21 #define INCLUDED_VCL_INC_LISTBOX_HXX
22 
23 #include <sal/config.h>
24 
25 #include <o3tl/safeint.hxx>
26 #include <vcl/toolkit/button.hxx>
27 #include <vcl/floatwin.hxx>
29 #include <vcl/glyphitem.hxx>
30 #include <vcl/vcllayout.hxx>
31 
32 #include <set>
33 #include <vector>
34 #include <memory>
35 
36 class ScrollBar;
37 class ScrollBarBox;
38 
39 #define HORZ_SCROLL 4
40 #define IMG_TXT_DISTANCE 6
41 
43 {
48 };
49 
51 {
52  OUString maStr;
55  void* mpUserData;
58  long mnHeight;
59 
60  long getHeightWithMargin() const;
61 
62  ImplEntryType( const OUString& rStr, const Image& rImage ) :
63  maStr( rStr ),
64  maImage( rImage ),
65  mnFlags( ListBoxEntryFlags::NONE ),
66  mnHeight( 0 )
67  {
68  mbIsSelected = false;
69  mpUserData = nullptr;
70  }
71 
72  ImplEntryType( const OUString& rStr ) :
73  maStr( rStr ),
74  mnFlags( ListBoxEntryFlags::NONE ),
75  mnHeight( 0 )
76  {
77  mbIsSelected = false;
78  mpUserData = nullptr;
79  }
80 
82  SalLayoutGlyphs* GetTextGlyphs(const OutputDevice* pOutputDevice);
83 };
84 
86 {
87 private:
89  sal_Int32 mnLastSelected;
90  sal_Int32 mnSelectionAnchor;
91  sal_Int32 mnImages;
92 
93  sal_Int32 mnMRUCount;
94  sal_Int32 mnMaxMRUCount;
95 
98  std::vector<std::unique_ptr<ImplEntryType> > maEntries;
99 
100  ImplEntryType* GetEntry( sal_Int32 nPos ) const
101  {
102  if (nPos < 0 || o3tl::make_unsigned(nPos) >= maEntries.size())
103  return nullptr;
104  return maEntries[nPos].get();
105  }
106 
107 public:
108  ImplEntryList( vcl::Window* pWindow );
109  ~ImplEntryList();
110 
111  sal_Int32 InsertEntry( sal_Int32 nPos, ImplEntryType* pNewEntry, bool bSort );
112  void RemoveEntry( sal_Int32 nPos );
113  const ImplEntryType* GetEntryPtr( sal_Int32 nPos ) const { return GetEntry( nPos ); }
114  ImplEntryType* GetMutableEntryPtr( sal_Int32 nPos ) const { return GetEntry( nPos ); }
115  void Clear();
116 
117  sal_Int32 FindMatchingEntry( const OUString& rStr, sal_Int32 nStart, bool bLazy ) const;
118  sal_Int32 FindEntry( const OUString& rStr, bool bSearchMRUArea = false ) const;
119 
124  long GetAddedHeight( sal_Int32 nEndIndex, sal_Int32 nBeginIndex ) const;
125  long GetEntryHeight( sal_Int32 nPos ) const;
126 
127  sal_Int32 GetEntryCount() const { return static_cast<sal_Int32>(maEntries.size()); }
128  bool HasImages() const { return mnImages != 0; }
129 
130  OUString GetEntryText( sal_Int32 nPos ) const;
131 
132  bool HasEntryImage( sal_Int32 nPos ) const;
133  Image GetEntryImage( sal_Int32 nPos ) const;
134 
135  void SetEntryData( sal_Int32 nPos, void* pNewData );
136  void* GetEntryData( sal_Int32 nPos ) const;
137 
138  void SetEntryFlags( sal_Int32 nPos, ListBoxEntryFlags nFlags );
139 
140  void SelectEntry( sal_Int32 nPos, bool bSelect );
141 
142  sal_Int32 GetSelectedEntryCount() const;
143  OUString GetSelectedEntry( sal_Int32 nIndex ) const;
144  sal_Int32 GetSelectedEntryPos( sal_Int32 nIndex ) const;
145  bool IsEntryPosSelected( sal_Int32 nIndex ) const;
146 
147  void SetLastSelected( sal_Int32 nPos ) { mnLastSelected = nPos; }
148  sal_Int32 GetLastSelected() const { return mnLastSelected; }
149 
150  void SetSelectionAnchor( sal_Int32 nPos ) { mnSelectionAnchor = nPos; }
151  sal_Int32 GetSelectionAnchor() const { return mnSelectionAnchor; }
152 
153  void SetSelectionChangedHdl( const Link<sal_Int32,void>& rLnk ) { maSelectionChangedHdl = rLnk; }
154  void SetCallSelectionChangedHdl( bool bCall ) { mbCallSelectionChangedHdl = bCall; }
155 
156  void SetMRUCount( sal_Int32 n ) { mnMRUCount = n; }
157  sal_Int32 GetMRUCount() const { return mnMRUCount; }
158 
159  void SetMaxMRUCount( sal_Int32 n ) { mnMaxMRUCount = n; }
160  sal_Int32 GetMaxMRUCount() const { return mnMaxMRUCount; }
161 
164  bool IsEntrySelectable( sal_Int32 nPos ) const;
165 
171  sal_Int32 FindFirstSelectable( sal_Int32 nPos, bool bForward = true );
172 };
173 
175 {
176 private:
177  std::unique_ptr<ImplEntryList> mpEntryList;
179 
181 
184  long mnMaxImgTxtWidth;
186  long mnMaxImgWidth;
189  long mnMaxWidth;
190  long mnMaxHeight;
191 
192  sal_Int32 mnCurrentPos;
194 
195  std::set< sal_Int32 > maSeparators;
196 
197  sal_Int32 mnUserDrawEntry;
198 
199  sal_Int32 mnTop;
200  long mnLeft;
202 
203  sal_uInt16 mnSelectModifier;
204 
205  bool mbHasFocusRect : 1;
206  bool mbSort : 1;
207  bool mbTrack : 1;
208  bool mbMulti : 1;
209  bool mbStackMode : 1;
210  bool mbSimpleMode : 1;
211  bool mbTravelSelect : 1;
212  bool mbTrackingSelect : 1;
214  bool mbMouseMoveSelect : 1;
215  bool mbGrabFocus : 1;
216  bool mbUserDrawEnabled : 1;
217  bool mbInUserDraw : 1;
218  bool mbReadOnly : 1;
219  bool mbMirroring : 1;
220  bool mbCenter : 1;
221  bool mbRight : 1;
222  bool mbEdgeBlending : 1;
224  bool mbIsDropdown : 1;
225 
234 
236 
237 protected:
238  virtual void KeyInput( const KeyEvent& rKEvt ) override;
239  virtual void MouseButtonDown( const MouseEvent& rMEvt ) override;
240  virtual void MouseMove( const MouseEvent& rMEvt ) override;
241  virtual void Tracking( const TrackingEvent& rTEvt ) override;
242  virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override;
243  virtual void Resize() override;
244  virtual void GetFocus() override;
245  virtual void LoseFocus() override;
246 
247  bool SelectEntries( sal_Int32 nSelect, LB_EVENT_TYPE eLET, bool bShift = false, bool bCtrl = false, bool bSelectPosChange = false );
248  void ImplPaint(vcl::RenderContext& rRenderContext, sal_Int32 nPos);
249  void ImplDoPaint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect);
250  void ImplCalcMetrics();
251  void ImplUpdateEntryMetrics( ImplEntryType& rEntry );
252  void ImplCallSelect();
253 
254  void ImplShowFocusRect();
255  void ImplHideFocusRect();
256 
257  virtual void StateChanged( StateChangedType nType ) override;
258  virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
259 
260 public:
261  virtual void FillLayoutData() const override;
262 
263  ImplListBoxWindow( vcl::Window* pParent, WinBits nWinStyle );
264  virtual ~ImplListBoxWindow() override;
265  virtual void dispose() override;
266 
267  ImplEntryList* GetEntryList() const { return mpEntryList.get(); }
268 
269  sal_Int32 InsertEntry( sal_Int32 nPos, ImplEntryType* pNewEntry ); // sorts using mbSort
270  sal_Int32 InsertEntry( sal_Int32 nPos, ImplEntryType* pNewEntry, bool bSort ); // to insert ignoring mbSort, e.g. mru
271  void RemoveEntry( sal_Int32 nPos );
272  void Clear();
273  void ResetCurrentPos() { mnCurrentPos = LISTBOX_ENTRY_NOTFOUND; }
274  sal_Int32 GetCurrentPos() const { return mnCurrentPos; }
275  sal_uInt16 GetDisplayLineCount() const;
276  void SetEntryFlags( sal_Int32 nPos, ListBoxEntryFlags nFlags );
277 
278  void DrawEntry(vcl::RenderContext& rRenderContext, sal_Int32 nPos, bool bDrawImage, bool bDrawText, bool bDrawTextAtImagePos);
279 
280  void SelectEntry( sal_Int32 nPos, bool bSelect );
281  void DeselectAll();
282  sal_Int32 GetEntryPosForPoint( const Point& rPoint ) const;
283  sal_Int32 GetLastVisibleEntry() const;
284 
285  bool ProcessKeyInput( const KeyEvent& rKEvt );
286 
287  void SetTopEntry( sal_Int32 nTop );
288  sal_Int32 GetTopEntry() const { return mnTop; }
291  void ShowProminentEntry( sal_Int32 nEntryPos );
292  using Window::IsVisible;
293  bool IsVisible( sal_Int32 nEntry ) const;
294 
295  long GetLeftIndent() const { return mnLeft; }
296  void SetLeftIndent( long n );
297  void ScrollHorz( long nDiff );
298 
299  void AllowGrabFocus( bool b ) { mbGrabFocus = b; }
300  bool IsGrabFocusAllowed() const { return mbGrabFocus; }
301 
306  void SetSeparatorPos( sal_Int32 n );
311  sal_Int32 GetSeparatorPos() const;
312 
316  void AddSeparator( sal_Int32 n ) { maSeparators.insert( n ); }
320  bool isSeparator( const sal_Int32 &n ) const;
321 
322  void SetTravelSelect( bool bTravelSelect ) { mbTravelSelect = bTravelSelect; }
323  bool IsTravelSelect() const { return mbTravelSelect; }
324  bool IsTrackingSelect() const { return mbTrackingSelect; }
325 
326  void SetUserItemSize( const Size& rSz );
327 
328  void EnableUserDraw( bool bUserDraw ) { mbUserDrawEnabled = bUserDraw; }
329  bool IsUserDrawEnabled() const { return mbUserDrawEnabled; }
330 
331  void EnableMultiSelection( bool bMulti, bool bStackMode ) { mbMulti = bMulti; mbStackMode = bStackMode; }
332  bool IsMultiSelectionEnabled() const { return mbMulti; }
333 
334  void SetMultiSelectionSimpleMode( bool bSimple ) { mbSimpleMode = bSimple; }
335 
336  void EnableMouseMoveSelect( bool bMouseMoveSelect ) { mbMouseMoveSelect = bMouseMoveSelect; }
338 
339  Size CalcSize(sal_Int32 nMaxLines) const;
340  tools::Rectangle GetBoundingRectangle( sal_Int32 nItem ) const;
341 
342  long GetEntryHeight() const { return mnMaxHeight; }
343  long GetEntryHeightWithMargin() const;
344  long GetMaxEntryWidth() const { return mnMaxWidth; }
345 
346  void SetScrollHdl( const Link<ImplListBoxWindow*,void>& rLink ) { maScrollHdl = rLink; }
347  void SetSelectHdl( const Link<LinkParamNone*,void>& rLink ) { maSelectHdl = rLink; }
348  void SetCancelHdl( const Link<LinkParamNone*,void>& rLink ) { maCancelHdl = rLink; }
349  void SetDoubleClickHdl( const Link<ImplListBoxWindow*,void>& rLink ) { maDoubleClickHdl = rLink; }
350  void SetUserDrawHdl( const Link<UserDrawEvent*, void>& rLink ) { maUserDrawHdl = rLink; }
351  void SetMRUChangedHdl( const Link<LinkParamNone*,void>& rLink ) { maMRUChangedHdl = rLink; }
352  void SetFocusHdl( const Link<sal_Int32,void>& rLink ) { maFocusHdl = rLink ; }
353 
354  void SetListItemSelectHdl( const Link<LinkParamNone*,void>& rLink ) { maListItemSelectHdl = rLink ; }
355  bool IsSelectionChanged() const { return mbSelectionChanged; }
356  sal_uInt16 GetSelectModifier() const { return mnSelectModifier; }
357 
358  void EnableSort( bool b ) { mbSort = b; }
359 
360  void SetReadOnly( bool bReadOnly ) { mbReadOnly = bReadOnly; }
361  bool IsReadOnly() const { return mbReadOnly; }
362 
364 
366  void EnableMirroring() { mbMirroring = true; }
367  bool IsMirroring() const { return mbMirroring; }
368 
369  bool GetEdgeBlending() const { return mbEdgeBlending; }
370  void SetEdgeBlending(bool bNew) { mbEdgeBlending = bNew; }
371 
373  virtual void ApplySettings(vcl::RenderContext& rRenderContext) override;
374 
375 protected:
376  // ISearchableStringList
377  virtual vcl::StringEntryIdentifier CurrentEntry( OUString& _out_entryText ) const override;
378  virtual vcl::StringEntryIdentifier NextEntry( vcl::StringEntryIdentifier _currentEntry, OUString& _out_entryText ) const override;
379  virtual void SelectEntry( vcl::StringEntryIdentifier _entry ) override;
380 };
381 
382 class ImplListBox : public Control
383 {
384 private:
389 
390  bool mbVScroll : 1; // VScroll on or off
391  bool mbHScroll : 1; // HScroll on or off
392  bool mbAutoHScroll : 1; // AutoHScroll on or off
393  bool mbEdgeBlending : 1;
394 
395  Link<ImplListBox*,void> maScrollHdl; // because it is needed by ImplListBoxWindow itself
396 
397 protected:
398  virtual void GetFocus() override;
399  virtual void StateChanged( StateChangedType nType ) override;
400 
401  virtual bool EventNotify( NotifyEvent& rNEvt ) override;
402 
403  void ImplResizeControls();
404  void ImplCheckScrollBars();
405  void ImplInitScrollBars();
406 
407  DECL_LINK( ScrollBarHdl, ScrollBar*, void );
408  DECL_LINK( LBWindowScrolled, ImplListBoxWindow*, void );
409  DECL_LINK( MRUChanged, LinkParamNone*, void );
410 
411 public:
412  ImplListBox( vcl::Window* pParent, WinBits nWinStyle );
413  virtual ~ImplListBox() override;
414  virtual void dispose() override;
415 
416  const ImplEntryList* GetEntryList() const { return maLBWindow->GetEntryList(); }
417  ImplListBoxWindow* GetMainWindow() { return maLBWindow.get(); }
418 
419  virtual void Resize() override;
420  virtual const Wallpaper& GetDisplayBackground() const override;
421 
422  sal_Int32 InsertEntry( sal_Int32 nPos, const OUString& rStr );
423  sal_Int32 InsertEntry( sal_Int32 nPos, const OUString& rStr, const Image& rImage );
424  void RemoveEntry( sal_Int32 nPos );
425  void SetEntryData( sal_Int32 nPos, void* pNewData ) { maLBWindow->GetEntryList()->SetEntryData( nPos, pNewData ); }
426  void Clear();
427 
428  void SetEntryFlags( sal_Int32 nPos, ListBoxEntryFlags nFlags );
429 
430  void SelectEntry( sal_Int32 nPos, bool bSelect );
431  void SetNoSelection();
432  void ResetCurrentPos() { maLBWindow->ResetCurrentPos(); }
433  sal_Int32 GetCurrentPos() const { return maLBWindow->GetCurrentPos(); }
434 
435  bool ProcessKeyInput( const KeyEvent& rKEvt ) { return maLBWindow->ProcessKeyInput( rKEvt ); }
436  bool HandleWheelAsCursorTravel( const CommandEvent& rCEvt );
437 
442  void SetSeparatorPos( sal_Int32 n ) { maLBWindow->SetSeparatorPos( n ); }
447  sal_Int32 GetSeparatorPos() const { return maLBWindow->GetSeparatorPos(); }
448 
452  void AddSeparator( sal_Int32 n ) { maLBWindow->AddSeparator( n ); }
453 
454  void SetTopEntry( sal_Int32 nTop ) { maLBWindow->SetTopEntry( nTop ); }
455  sal_Int32 GetTopEntry() const { return maLBWindow->GetTopEntry(); }
456  void ShowProminentEntry( sal_Int32 nPos ) { maLBWindow->ShowProminentEntry( nPos ); }
457  using Window::IsVisible;
458  bool IsVisible( sal_Int32 nEntry ) const { return maLBWindow->IsVisible( nEntry ); }
459 
460  long GetLeftIndent() const { return maLBWindow->GetLeftIndent(); }
461  void SetLeftIndent( sal_uInt16 n ) { maLBWindow->SetLeftIndent( n ); }
462 
463  void SetTravelSelect( bool bTravelSelect ) { maLBWindow->SetTravelSelect( bTravelSelect ); }
464  bool IsTravelSelect() const { return maLBWindow->IsTravelSelect(); }
465  bool IsTrackingSelect() const { return maLBWindow->IsTrackingSelect(); }
466 
467  void EnableMultiSelection( bool bMulti, bool bStackMode ) { maLBWindow->EnableMultiSelection( bMulti, bStackMode ); }
468  bool IsMultiSelectionEnabled() const { return maLBWindow->IsMultiSelectionEnabled(); }
469 
470  void SetMultiSelectionSimpleMode( bool bSimple ) { maLBWindow->SetMultiSelectionSimpleMode( bSimple ); }
471 
472  void SetReadOnly( bool b ) { maLBWindow->SetReadOnly( b ); }
473  bool IsReadOnly() const { return maLBWindow->IsReadOnly(); }
474 
475  Size CalcSize( sal_Int32 nMaxLines ) const { return maLBWindow->CalcSize( nMaxLines ); }
476  long GetEntryHeight() const { return maLBWindow->GetEntryHeight(); }
477  long GetEntryHeightWithMargin() const{ return maLBWindow->GetEntryHeightWithMargin(); }
478  long GetMaxEntryWidth() const { return maLBWindow->GetMaxEntryWidth(); }
479 
480  void SetScrollHdl( const Link<ImplListBox*,void>& rLink ) { maScrollHdl = rLink; }
481  void SetSelectHdl( const Link<LinkParamNone*,void>& rLink ) { maLBWindow->SetSelectHdl( rLink ); }
482  void SetCancelHdl( const Link<LinkParamNone*,void>& rLink ) { maLBWindow->SetCancelHdl( rLink ); }
483  void SetDoubleClickHdl( const Link<ImplListBoxWindow*,void>& rLink ) { maLBWindow->SetDoubleClickHdl( rLink ); }
484  void SetUserDrawHdl( const Link<UserDrawEvent*, void>& rLink ) { maLBWindow->SetUserDrawHdl( rLink ); }
485  void SetFocusHdl( const Link<sal_Int32,void>& rLink ) { maLBWindow->SetFocusHdl( rLink ); }
486  void SetListItemSelectHdl( const Link<LinkParamNone*,void>& rLink ) { maLBWindow->SetListItemSelectHdl( rLink ); }
487  void SetSelectionChangedHdl( const Link<sal_Int32,void>& rLnk ) { maLBWindow->GetEntryList()->SetSelectionChangedHdl( rLnk ); }
488  void SetCallSelectionChangedHdl( bool bCall ) { maLBWindow->GetEntryList()->SetCallSelectionChangedHdl( bCall ); }
489  bool IsSelectionChanged() const { return maLBWindow->IsSelectionChanged(); }
490  sal_uInt16 GetSelectModifier() const { return maLBWindow->GetSelectModifier(); }
491 
492  void SetMRUEntries( const OUString& rEntries, sal_Unicode cSep );
493  OUString GetMRUEntries( sal_Unicode cSep ) const;
494  void SetMaxMRUCount( sal_Int32 n ) { maLBWindow->GetEntryList()->SetMaxMRUCount( n ); }
495  sal_Int32 GetMaxMRUCount() const { return maLBWindow->GetEntryList()->GetMaxMRUCount(); }
496  sal_uInt16 GetDisplayLineCount() const
497  { return maLBWindow->GetDisplayLineCount(); }
498 
499  bool GetEdgeBlending() const { return mbEdgeBlending; }
500  void SetEdgeBlending(bool bNew);
501 
503  void EnableMirroring() { maLBWindow->EnableMirroring(); }
504 };
505 
507 {
508 private:
511  sal_uInt16 mnDDLineCount;
514 
515 protected:
516  virtual bool PreNotify( NotifyEvent& rNEvt ) override;
517 
518 public:
520  virtual ~ImplListBoxFloatingWindow() override;
521  virtual void dispose() override;
522  void SetImplListBox( ImplListBox* pLB ) { mpImplLB = pLB; }
523 
524  void SetPrefSize( const Size& rSz ) { maPrefSz = rSz; }
525  const Size& GetPrefSize() const { return maPrefSz; }
526 
527  void SetAutoWidth( bool b ) { mbAutoWidth = b; }
528 
530  void StartFloat( bool bStartTracking );
531 
532  virtual void setPosSizePixel( long nX, long nY,
533  long nWidth, long nHeight, PosSizeFlags nFlags = PosSizeFlags::All ) override;
534 
535  void SetDropDownLineCount( sal_uInt16 n ) { mnDDLineCount = n; }
536  sal_uInt16 GetDropDownLineCount() const { return mnDDLineCount; }
537 
539 
540  virtual void Resize() override;
541 };
542 
543 class ImplWin : public Control
544 {
545 private:
546 
547  sal_Int32 mnItemPos;
548  OUString maString;
550 
552 
554 
555  bool mbEdgeBlending : 1;
556 
557  void ImplDraw(vcl::RenderContext& rRenderContext, bool bLayout = false);
558 protected:
559  virtual void FillLayoutData() const override;
560 
561 public:
562  ImplWin( vcl::Window* pParent, WinBits nWinStyle );
563 
564  virtual void MouseButtonDown( const MouseEvent& rMEvt ) override;
565  virtual void Paint( vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect ) override;
566  virtual void Resize() override;
567  virtual void GetFocus() override;
568  virtual void LoseFocus() override;
569  virtual bool PreNotify( NotifyEvent& rNEvt ) override;
570 
571  sal_Int32 GetItemPos() const { return mnItemPos; }
572  void SetItemPos( sal_Int32 n ) { mnItemPos = n; }
573 
574  void SetString( const OUString& rStr ) { maString = rStr; }
575 
576  void SetImage( const Image& rImg ) { maImage = rImg; }
577 
578  void SetMBDownHdl( const Link<void*,void>& rLink ) { maMBDownHdl = rLink; }
579 
580  void DrawEntry(vcl::RenderContext& rRenderContext, bool bLayout);
581 
582  bool GetEdgeBlending() const { return mbEdgeBlending; }
583  void SetEdgeBlending(bool bNew) { mbEdgeBlending = bNew; }
584 
585  virtual void ShowFocus(const tools::Rectangle& rRect) override;
586 
588  virtual void ApplySettings(vcl::RenderContext& rRenderContext) override;
589 
590 };
591 
592 class ImplBtn : public PushButton
593 {
594 private:
596 
597 public:
598  ImplBtn( vcl::Window* pParent, WinBits nWinStyle );
599 
600  virtual void MouseButtonDown( const MouseEvent& rMEvt ) override;
601  void SetMBDownHdl( const Link<void*,void>& rLink ) { maMBDownHdl = rLink; }
602 };
603 
604 void ImplInitDropDownButton( PushButton* pButton );
605 
606 #endif // INCLUDED_VCL_INC_LISTBOX_HXX
607 
608 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
tools::Rectangle maFocusRect
Definition: listbox.hxx:551
void SelectEntry(sal_Int32 nPos, bool bSelect)
bool GetEdgeBlending() const
Definition: listbox.hxx:499
void ResetCurrentPos()
Definition: listbox.hxx:432
virtual void ShowFocus(const tools::Rectangle &rRect) override
bool mbAutoHScroll
Definition: listbox.hxx:392
virtual void LoseFocus() override
Link< sal_Int32, void > maFocusHdl
Definition: listbox.hxx:232
long GetLeftIndent() const
Definition: listbox.hxx:295
bool mbEdgeBlending
Definition: listbox.hxx:555
void SetMRUEntries(const OUString &rEntries, sal_Unicode cSep)
void SetSelectHdl(const Link< LinkParamNone *, void > &rLink)
Definition: listbox.hxx:481
sal_Int32 GetMaxMRUCount() const
Definition: listbox.hxx:495
void EnableMultiSelection(bool bMulti, bool bStackMode)
Definition: listbox.hxx:467
SalLayoutGlyphs maStrGlyphs
Definition: listbox.hxx:53
bool mbTrack
Tracking.
Definition: listbox.hxx:207
virtual void Resize() override
bool IsSelectionChanged() const
Definition: listbox.hxx:355
virtual void LoseFocus() override
void SetMBDownHdl(const Link< void *, void > &rLink)
Definition: listbox.hxx:578
bool HasEntryImage(sal_Int32 nPos) const
virtual void StateChanged(StateChangedType nType) override
const ImplEntryList * GetEntryList() const
Definition: listbox.hxx:416
void SetNoSelection()
OUString maString
Definition: listbox.hxx:548
void SetSelectionAnchor(sal_Int32 nPos)
Definition: listbox.hxx:150
virtual void FillLayoutData() const override
sal_Int32 GetSeparatorPos() const
Gets the position of the separator which was added first.
Definition: listbox.hxx:447
sal_Int32 GetSelectedEntryPos(sal_Int32 nIndex) const
void SetUserItemSize(const Size &rSz)
void SetFocusHdl(const Link< sal_Int32, void > &rLink)
Definition: listbox.hxx:352
void SetEntryFlags(sal_Int32 nPos, ListBoxEntryFlags nFlags)
virtual ~ImplListBoxWindow() override
bool IsTravelSelect() const
Definition: listbox.hxx:464
Image maImage
Definition: listbox.hxx:54
bool mbVScroll
Definition: listbox.hxx:390
ImplEntryList * GetEntryList() const
Definition: listbox.hxx:267
void AllowGrabFocus(bool b)
Definition: listbox.hxx:299
tools::Rectangle maFocusRect
Definition: listbox.hxx:178
long mnLeft
output from column on
Definition: listbox.hxx:200
long mnMaxTxtWidth
Maximum width of a text item Entry without Image.
Definition: listbox.hxx:183
bool mbSelectionChanged
Do not call Select() too often ...
Definition: listbox.hxx:213
void ImplResizeControls()
bool IsMultiSelectionEnabled() const
Definition: listbox.hxx:468
const Size & GetPrefSize() const
Definition: listbox.hxx:525
bool mbEdgeBlending
Definition: listbox.hxx:393
Link< ImplListBoxWindow *, void > maScrollHdl
Definition: listbox.hxx:226
bool IsVisible(sal_Int32 nEntry) const
Definition: listbox.hxx:458
virtual void MouseButtonDown(const MouseEvent &rMEvt) override
void EnableMouseMoveSelect(bool bMouseMoveSelect)
Definition: listbox.hxx:336
sal_Int32 GetTopEntry() const
Definition: listbox.hxx:455
DECL_LINK(ScrollBarHdl, ScrollBar *, void)
sal_Int32 GetEntryPosForPoint(const Point &rPoint) const
sal_Int32 GetLastSelected() const
Definition: listbox.hxx:148
void SetMRUCount(sal_Int32 n)
Definition: listbox.hxx:156
virtual void dispose() override
This is intended to be used to clear any locally held references to other Window-subclass objects...
void SetTravelSelect(bool bTravelSelect)
Definition: listbox.hxx:322
void SelectEntry(sal_Int32 nPos, bool bSelect)
Definition: imp_listbox.cxx:84
sal_Int32 GetSelectedEntryCount() const
bool IsTrackingSelect() const
Definition: listbox.hxx:324
PosSizeFlags
Definition: window.hxx:141
void SetCallSelectionChangedHdl(bool bCall)
Definition: listbox.hxx:154
long GetMaxEntryWidth() const
Definition: listbox.hxx:478
sal_Int32 mnMRUCount
Definition: listbox.hxx:93
bool mbMouseMoveSelect
Select at MouseMove.
Definition: listbox.hxx:214
long GetLeftIndent() const
Definition: listbox.hxx:460
sal_Int32 GetCurrentPos() const
Definition: listbox.hxx:274
sal_Int32 mnTop
output from line on
Definition: listbox.hxx:199
sal_uInt16 GetDisplayLineCount() const
bool IsTrackingSelect() const
Definition: listbox.hxx:465
bool IsReadOnly() const
Definition: listbox.hxx:473
void SetSeparatorPos(sal_Int32 n)
Removes existing separators, and sets the position of the one and only separator. ...
bool mbCenter
center Text output
Definition: listbox.hxx:220
sal_Int32 GetSelectionAnchor() const
Definition: listbox.hxx:151
void SetDropDownLineCount(sal_uInt16 n)
Definition: listbox.hxx:535
void SetEntryFlags(sal_Int32 nPos, ListBoxEntryFlags nFlags)
virtual void Tracking(const TrackingEvent &rTEvt) override
sal_Int32 FindEntry(const OUString &rStr, bool bSearchMRUArea=false) const
void ImplUpdateEntryMetrics(ImplEntryType &rEntry)
void EnableMirroring()
pb: #106948# explicit mirroring for calc
Definition: listbox.hxx:366
void SetUserDrawHdl(const Link< UserDrawEvent *, void > &rLink)
Definition: listbox.hxx:484
#define LISTBOX_ENTRY_NOTFOUND
Definition: lstbox.hxx:34
VclPtr< ImplListBoxWindow > maLBWindow
Definition: listbox.hxx:385
bool mbReadOnly
ReadOnly.
Definition: listbox.hxx:218
ImplEntryList(vcl::Window *pWindow)
Definition: imp_listbox.cxx:61
NONE
long GetEntryHeightWithMargin() const
void ImplInitScrollBars()
Link< void *, void > maMBDownHdl
Definition: listbox.hxx:595
sal_Int32 GetTopEntry() const
Definition: listbox.hxx:288
void ImplInitDropDownButton(PushButton *pButton)
Definition: imp_listbox.cxx:52
bool HandleWheelAsCursorTravel(const CommandEvent &rCEvt)
virtual void setPosSizePixel(long nX, long nY, long nWidth, long nHeight, PosSizeFlags nFlags=PosSizeFlags::All) override
void RemoveEntry(sal_Int32 nPos)
void * GetEntryData(sal_Int32 nPos) const
StateChangedType
Definition: window.hxx:311
virtual void ApplySettings(vcl::RenderContext &rRenderContext) override
void SetCallSelectionChangedHdl(bool bCall)
Definition: listbox.hxx:488
void SetSelectHdl(const Link< LinkParamNone *, void > &rLink)
Definition: listbox.hxx:347
VclPtr< vcl::Window > mpWindow
For getting the current locale when matching strings.
Definition: listbox.hxx:88
sal_Int64 WinBits
sal_uInt16 sal_Unicode
bool IsTravelSelect() const
Definition: listbox.hxx:323
std::set< sal_Int32 > maSeparators
Separator positions.
Definition: listbox.hxx:195
virtual bool PreNotify(NotifyEvent &rNEvt) override
void RemoveEntry(sal_Int32 nPos)
sal_Int32 GetCurrentPos() const
Definition: listbox.hxx:433
void SetReadOnly(bool b)
Definition: listbox.hxx:472
VclPtr< ImplListBox > mpImplLB
Definition: listbox.hxx:509
virtual void StateChanged(StateChangedType nType) override
LB_EVENT_TYPE
Definition: listbox.hxx:42
virtual ~ImplListBoxFloatingWindow() override
virtual void DataChanged(const DataChangedEvent &rDCEvt) override
long mnTextHeight
text height
Definition: listbox.hxx:201
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect) override
bool mbHScroll
Definition: listbox.hxx:391
void AddSeparator(sal_Int32 n)
Adds a new separator at the given position n.
Definition: listbox.hxx:452
void EnableMirroring()
pb: #106948# explicit mirroring for calc
Definition: listbox.hxx:503
void SetEntryData(sal_Int32 nPos, void *pNewData)
Definition: listbox.hxx:425
void SetTravelSelect(bool bTravelSelect)
Definition: listbox.hxx:463
void SetMRUChangedHdl(const Link< LinkParamNone *, void > &rLink)
Definition: listbox.hxx:351
virtual const Wallpaper & GetDisplayBackground() const override
bool mbIsDropdown
Listbox is actually a dropdown (either combobox, or popup window treated as dropdown) ...
Definition: listbox.hxx:224
virtual void Resize() override
long mnHeight
Definition: listbox.hxx:58
const void * StringEntryIdentifier
sal_Int32 GetMaxMRUCount() const
Definition: listbox.hxx:160
Link< LinkParamNone *, void > maListItemSelectHdl
Definition: listbox.hxx:233
ImplWin(vcl::Window *pParent, WinBits nWinStyle)
void SetDoubleClickHdl(const Link< ImplListBoxWindow *, void > &rLink)
Definition: listbox.hxx:483
sal_Int32 mnMaxMRUCount
Definition: listbox.hxx:94
bool mbSimpleMode
SimpleMode for MultiListBox.
Definition: listbox.hxx:210
sal_uInt16 GetSelectModifier() const
Definition: listbox.hxx:490
Image GetEntryImage(sal_Int32 nPos) const
long mnMaxTxtHeight
Maximum height of a text item.
Definition: listbox.hxx:182
ImplListBoxWindow * GetMainWindow()
Definition: listbox.hxx:417
sal_Int32 mnTrackingSaveSelection
Selection before Tracking();.
Definition: listbox.hxx:193
void SetEntryFlags(sal_Int32 nPos, ListBoxEntryFlags nFlags)
ImplEntryType(const OUString &rStr, const Image &rImage)
Definition: listbox.hxx:62
void SetMultiSelectionSimpleMode(bool bSimple)
Definition: listbox.hxx:470
void SetTopEntry(sal_Int32 nTop)
Definition: listbox.hxx:454
void ResetCurrentPos()
Definition: listbox.hxx:273
void RemoveEntry(sal_Int32 nPos)
void SetScrollHdl(const Link< ImplListBoxWindow *, void > &rLink)
Definition: listbox.hxx:346
void SetReadOnly(bool bReadOnly)
Definition: listbox.hxx:360
Link< void *, void > maMBDownHdl
Definition: listbox.hxx:553
ImplListBoxFloatingWindow(vcl::Window *pParent)
sal_Int32 GetSeparatorPos() const
Gets the position of the separator which was added first.
sal_Int32 GetMRUCount() const
Definition: listbox.hxx:157
sal_uInt16 GetDisplayLineCount() const
Definition: listbox.hxx:496
void ShowProminentEntry(sal_Int32 nPos)
Definition: listbox.hxx:456
bool ProcessKeyInput(const KeyEvent &rKEvt)
void SetMaxMRUCount(sal_Int32 n)
Definition: listbox.hxx:159
void SetScrollHdl(const Link< ImplListBox *, void > &rLink)
Definition: listbox.hxx:480
virtual void KeyInput(const KeyEvent &rKEvt) override
ImplEntryType * GetMutableEntryPtr(sal_Int32 nPos) const
Definition: listbox.hxx:114
std::vector< std::unique_ptr< ImplEntryType > > maEntries
Definition: listbox.hxx:98
void SetSelectionChangedHdl(const Link< sal_Int32, void > &rLnk)
Definition: listbox.hxx:153
sal_Int32 FindFirstSelectable(sal_Int32 nPos, bool bForward=true)
bool mbStackMode
StackSelection.
Definition: listbox.hxx:209
void AddSeparator(sal_Int32 n)
Adds a new separator at the given position n.
Definition: listbox.hxx:316
virtual void MouseButtonDown(const MouseEvent &rMEvt) override
void ScrollHorz(long nDiff)
virtual void Resize() override
bool IsEntryPosSelected(sal_Int32 nIndex) const
ImplBtn(vcl::Window *pParent, WinBits nWinStyle)
virtual void Resize() override
virtual ~ImplListBox() override
virtual bool PreNotify(NotifyEvent &rNEvt) override
void EnableMultiSelection(bool bMulti, bool bStackMode)
Definition: listbox.hxx:331
long mnMaxWidth
Maximum width of an entry.
Definition: listbox.hxx:189
sal_uInt16 GetDropDownLineCount() const
Definition: listbox.hxx:536
void SetImage(const Image &rImg)
Definition: listbox.hxx:576
void SetMultiSelectionSimpleMode(bool bSimple)
Definition: listbox.hxx:334
bool mbMulti
MultiListBox.
Definition: listbox.hxx:208
void ImplCheckScrollBars()
Link< ImplListBoxWindow *, void > maDoubleClickHdl
Definition: listbox.hxx:229
sal_Int32 mnSelectionAnchor
Definition: listbox.hxx:90
long mnMaxHeight
Maximum height of an entry.
Definition: listbox.hxx:190
ImplListBox(vcl::Window *pParent, WinBits nWinStyle)
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
Definition: outdev.hxx:304
void DrawEntry(vcl::RenderContext &rRenderContext, sal_Int32 nPos, bool bDrawImage, bool bDrawText, bool bDrawTextAtImagePos)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
VclPtr< ScrollBarBox > mpScrollBarBox
Definition: listbox.hxx:388
Size CalcSize(sal_Int32 nMaxLines) const
void SetLastSelected(sal_Int32 nPos)
Definition: listbox.hxx:147
void SetItemPos(sal_Int32 n)
Definition: listbox.hxx:572
long GetEntryHeight(sal_Int32 nPos) const
DrawTextFlags ImplGetTextStyle() const
void SetEdgeBlending(bool bNew)
Definition: listbox.hxx:370
void ImplDoPaint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect)
vcl::QuickSelectionEngine maQuickSelectionEngine
Definition: listbox.hxx:235
DrawTextFlags
Definition: outdev.hxx:144
bool GetEdgeBlending() const
Definition: listbox.hxx:582
VclPtr< ScrollBar > mpHScrollBar
Definition: listbox.hxx:386
Link< LinkParamNone *, void > maCancelHdl
Definition: listbox.hxx:228
std::unique_ptr< ImplEntryList > mpEntryList
EntryList.
Definition: listbox.hxx:177
bool mbSort
ListBox sorted.
Definition: listbox.hxx:206
bool GetEdgeBlending() const
Definition: listbox.hxx:369
OUString maStr
Definition: listbox.hxx:52
sal_Int32 GetPopupModeStartSaveSelection() const
Definition: listbox.hxx:538
Link< UserDrawEvent *, void > maUserDrawHdl
Definition: listbox.hxx:230
bool mbTravelSelect
TravelSelect.
Definition: listbox.hxx:211
ListBoxEntryFlags mnFlags
Definition: listbox.hxx:57
sal_Int32 FindMatchingEntry(const OUString &rStr, sal_Int32 nStart, bool bLazy) const
void SetLeftIndent(sal_uInt16 n)
Definition: listbox.hxx:461
void ImplPaint(vcl::RenderContext &rRenderContext, sal_Int32 nPos)
Link< LinkParamNone *, void > maMRUChangedHdl
Definition: listbox.hxx:231
virtual void MouseMove(const MouseEvent &rMEvt) override
void DrawEntry(vcl::RenderContext &rRenderContext, bool bLayout)
Size CalcSize(sal_Int32 nMaxLines) const
Definition: listbox.hxx:475
void EnableSort(bool b)
Definition: listbox.hxx:358
ImplEntryType(const OUString &rStr)
Definition: listbox.hxx:72
bool mbIsSelected
Definition: listbox.hxx:56
sal_Int32 mnCurrentPos
Position (Focus)
Definition: listbox.hxx:192
bool mbUserDrawEnabled
UserDraw possible.
Definition: listbox.hxx:216
VclPtr< ScrollBar > mpVScrollBar
Definition: listbox.hxx:387
bool IsMouseMoveSelect() const
Definition: listbox.hxx:337
long mnMaxImgWidth
Maximum width of an image item.
Definition: listbox.hxx:187
long GetEntryHeight() const
Definition: listbox.hxx:342
sal_uInt16 GetSelectModifier() const
Definition: listbox.hxx:356
void * mpUserData
Definition: listbox.hxx:55
bool IsUserDrawEnabled() const
Definition: listbox.hxx:329
ImplEntryType * GetEntry(sal_Int32 nPos) const
Definition: listbox.hxx:100
void SetPrefSize(const Size &rSz)
Definition: listbox.hxx:524
bool ProcessKeyInput(const KeyEvent &rKEvt)
Definition: listbox.hxx:435
const ImplEntryType * GetEntryPtr(sal_Int32 nPos) const
Definition: listbox.hxx:113
Definition: ctrl.hxx:33
bool IsEntrySelectable(sal_Int32 nPos) const
An Entry is selectable if its mnFlags does not have the ListBoxEntryFlags::DisableSelection flag set...
long GetEntryHeight() const
Definition: listbox.hxx:476
ListBoxEntryFlags
Definition: lstbox.hxx:44
sal_Int32 mnItemPos
because of UserDraw I have to know which item I draw
Definition: listbox.hxx:547
virtual void GetFocus() override
sal_Int32 mnLastSelected
Definition: listbox.hxx:89
bool IsVisible() const
Definition: window2.cxx:1102
virtual vcl::StringEntryIdentifier CurrentEntry(OUString &_out_entryText) const override
returns the current entry in the list of searchable strings.
void SetAutoWidth(bool b)
Definition: listbox.hxx:527
sal_Int32 mnPopupModeStartSaveSelection
Definition: listbox.hxx:512
long mnMaxImgHeight
Maximum height of an image item.
Definition: listbox.hxx:188
void SetSeparatorPos(sal_Int32 n)
Removes existing separators, and sets the position of the one and only separator. ...
Definition: listbox.hxx:442
bool SelectEntries(sal_Int32 nSelect, LB_EVENT_TYPE eLET, bool bShift=false, bool bCtrl=false, bool bSelectPosChange=false)
bool mbMirroring
pb: #106948# explicit mirroring for calc
Definition: listbox.hxx:219
void SetEdgeBlending(bool bNew)
Definition: listbox.hxx:583
sal_uInt16 mnSelectModifier
Modifiers.
Definition: listbox.hxx:203
long GetMaxEntryWidth() const
Definition: listbox.hxx:344
Definition: image.hxx:40
bool IsSelectionChanged() const
Definition: listbox.hxx:489
long GetAddedHeight(sal_Int32 nEndIndex, sal_Int32 nBeginIndex) const
helper: add up heights up to index nEndIndex.
void SetSelectionChangedHdl(const Link< sal_Int32, void > &rLnk)
Definition: listbox.hxx:487
long GetEntryHeightWithMargin() const
Definition: listbox.hxx:477
long mnMaxImgTxtWidth
Maximum width of a text item Entry AND Image.
Definition: listbox.hxx:185
void SetMaxMRUCount(sal_Int32 n)
Definition: listbox.hxx:494
void SetUserDrawHdl(const Link< UserDrawEvent *, void > &rLink)
Definition: listbox.hxx:350
ImplListBoxWindow(vcl::Window *pParent, WinBits nWinStyle)
void SetCancelHdl(const Link< LinkParamNone *, void > &rLink)
Definition: listbox.hxx:482
bool IsGrabFocusAllowed() const
Definition: listbox.hxx:300
bool IsMultiSelectionEnabled() const
Definition: listbox.hxx:332
sal_Int32 mnImages
Definition: listbox.hxx:91
long getHeightWithMargin() const
virtual void GetFocus() override
sal_Int32 InsertEntry(sal_Int32 nPos, ImplEntryType *pNewEntry)
virtual bool EventNotify(NotifyEvent &rNEvt) override
void ImplInitSettings()
Definition: ctrl.cxx:428
sal_Int32 InsertEntry(sal_Int32 nPos, const OUString &rStr)
bool isSeparator(const sal_Int32 &n) const
Checks if the given number n is an element of the separator positions set.
reference_type * get() const
Get the body.
Definition: vclptr.hxx:143
Image maImage
Definition: listbox.hxx:549
OUString GetSelectedEntry(sal_Int32 nIndex) const
void SetTopEntry(sal_Int32 nTop)
OUString GetMRUEntries(sal_Unicode cSep) const
void SetFocusHdl(const Link< sal_Int32, void > &rLink)
Definition: listbox.hxx:485
void SelectEntry(sal_Int32 nPos, bool bSelect)
Link< sal_Int32, void > maSelectionChangedHdl
Definition: listbox.hxx:96
sal_Int32 mnUserDrawEntry
Definition: listbox.hxx:197
virtual void FillLayoutData() const override
bool IsReadOnly() const
Definition: listbox.hxx:361
OUString GetEntryText(sal_Int32 nPos) const
void StartFloat(bool bStartTracking)
sal_Int32 GetLastVisibleEntry() const
void SetEntryData(sal_Int32 nPos, void *pNewData)
virtual void MouseButtonDown(const MouseEvent &rMEvt) override
virtual void dispose() override
This is intended to be used to clear any locally held references to other Window-subclass objects...
void SetString(const OUString &rStr)
Definition: listbox.hxx:574
void SetLeftIndent(long n)
bool HasImages() const
Definition: listbox.hxx:128
void EnableUserDraw(bool bUserDraw)
Definition: listbox.hxx:328
bool mbInUserDraw
In UserDraw.
Definition: listbox.hxx:217
sal_Int32 GetItemPos() const
Definition: listbox.hxx:571
bool IsMirroring() const
Definition: listbox.hxx:367
bool mbGrabFocus
Grab focus at MBDown.
Definition: listbox.hxx:215
virtual vcl::StringEntryIdentifier NextEntry(vcl::StringEntryIdentifier _currentEntry, OUString &_out_entryText) const override
returns the next entry in the list.
SalLayoutGlyphs * GetTextGlyphs(const OutputDevice *pOutputDevice)
Computes maStr's text layout (glyphs), cached in maStrGlyphs.
void SetImplListBox(ImplListBox *pLB)
Definition: listbox.hxx:522
void SetListItemSelectHdl(const Link< LinkParamNone *, void > &rLink)
Definition: listbox.hxx:354
void SetEdgeBlending(bool bNew)
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect) override
void ShowProminentEntry(sal_Int32 nEntryPos)
ShowProminentEntry will set the entry corresponding to nEntryPos either at top or in the middle depen...
sal_Int32 InsertEntry(sal_Int32 nPos, ImplEntryType *pNewEntry, bool bSort)
void SetCancelHdl(const Link< LinkParamNone *, void > &rLink)
Definition: listbox.hxx:348
bool IsVisible(sal_Int32 nEntry) const
virtual void ApplySettings(vcl::RenderContext &rRenderContext) override
virtual void GetFocus() override
bool mbCallSelectionChangedHdl
Definition: listbox.hxx:97
sal_Int32 GetEntryCount() const
Definition: listbox.hxx:127
void SetMBDownHdl(const Link< void *, void > &rLink)
Definition: listbox.hxx:601
tools::Rectangle GetBoundingRectangle(sal_Int32 nItem) const
Link< ImplListBox *, void > maScrollHdl
Definition: listbox.hxx:395
virtual void dispose() override
This is intended to be used to clear any locally held references to other Window-subclass objects...
Link< LinkParamNone *, void > maSelectHdl
Definition: listbox.hxx:227
void ImplDraw(vcl::RenderContext &rRenderContext, bool bLayout=false)
void SetListItemSelectHdl(const Link< LinkParamNone *, void > &rLink)
Definition: listbox.hxx:486
bool mbTrackingSelect
Selected at a MouseMove.
Definition: listbox.hxx:212
bool mbRight
right align Text output
Definition: listbox.hxx:221
void SetDoubleClickHdl(const Link< ImplListBoxWindow *, void > &rLink)
Definition: listbox.hxx:349