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