From 27d0dcd033be9b1356a36d582f3d3665a53e11e4 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 30 Jul 2003 21:36:38 +0000 Subject: [PATCH] added wxVListBox::OnDrawBackground(); fixed warnings git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22394 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/htmllbox.h | 1 + include/wx/vlbox.h | 9 ++++++++ include/wx/vscroll.h | 4 +++- samples/htlbox/htlbox.cpp | 4 +++- src/generic/htmllbox.cpp | 2 ++ src/generic/vlbox.cpp | 45 ++++++++++++++++++++++----------------- 6 files changed, 44 insertions(+), 21 deletions(-) diff --git a/include/wx/htmllbox.h b/include/wx/htmllbox.h index 5098935c17..49405b94b9 100644 --- a/include/wx/htmllbox.h +++ b/include/wx/htmllbox.h @@ -120,6 +120,7 @@ private: DECLARE_EVENT_TABLE() + DECLARE_NO_COPY_CLASS(wxHtmlListBox) }; #endif // _WX_HTMLLBOX_H_ diff --git a/include/wx/vlbox.h b/include/wx/vlbox.h index 276076ece7..6b30ac122e 100644 --- a/include/wx/vlbox.h +++ b/include/wx/vlbox.h @@ -202,6 +202,14 @@ protected: // the base class version doesn't do anything virtual void OnDrawSeparator(wxDC& dc, wxRect& rect, size_t n) const; + // this method is used to draw the items background and, maybe, a border + // around it + // + // the base class version implements a reasonable default behaviour which + // consists in drawing the selected item with the standard background + // colour and drawing a border around the item if it is either selected or + // current + virtual void OnDrawBackground(wxDC& dc, const wxRect& rect, size_t n) const; // we implement OnGetLineHeight() in terms of OnMeasureItem() because this // allows us to add borders to the items easily @@ -269,6 +277,7 @@ private: DECLARE_EVENT_TABLE() + DECLARE_NO_COPY_CLASS(wxVListBox) }; #endif // _WX_VLBOX_H_ diff --git a/include/wx/vscroll.h b/include/wx/vscroll.h index 1cdc9d1e48..eb2185bb1c 100644 --- a/include/wx/vscroll.h +++ b/include/wx/vscroll.h @@ -146,7 +146,8 @@ protected: // // finally note that lineMin is inclusive, while lineMax is exclusive, as // usual - virtual void OnGetLinesHint(size_t lineMin, size_t lineMax) const { } + virtual void OnGetLinesHint(size_t WXUNUSED(lineMin), + size_t WXUNUSED(lineMax)) const { } // when the number of lines changes, we try to estimate the total height // of all lines which is a rather expensive operation in terms of lines @@ -194,6 +195,7 @@ private: DECLARE_EVENT_TABLE() + DECLARE_NO_COPY_CLASS(wxVScrolledWindow) }; #endif // _WX_VSCROLL_H_ diff --git a/samples/htlbox/htlbox.cpp b/samples/htlbox/htlbox.cpp index 1a87b03df6..dfb89455fb 100644 --- a/samples/htlbox/htlbox.cpp +++ b/samples/htlbox/htlbox.cpp @@ -45,7 +45,7 @@ // you can also have a file containing HTML strings for testing, enable this if // you want to use it -//#define USE_HTML_FILE +#define USE_HTML_FILE #ifdef USE_HTML_FILE #include "wx/textfile.h" #endif @@ -84,6 +84,8 @@ protected: #ifdef USE_HTML_FILE wxTextFile m_file; #endif + + DECLARE_NO_COPY_CLASS(MyHtmlListBox) }; class MyFrame : public wxFrame diff --git a/src/generic/htmllbox.cpp b/src/generic/htmllbox.cpp index dff147a45c..0c5578c11a 100644 --- a/src/generic/htmllbox.cpp +++ b/src/generic/htmllbox.cpp @@ -144,6 +144,8 @@ public: private: const wxHtmlListBox& m_hlbox; + + DECLARE_NO_COPY_CLASS(wxHtmlListBoxStyle) }; diff --git a/src/generic/vlbox.cpp b/src/generic/vlbox.cpp index 938b9d331c..fedb4496a4 100644 --- a/src/generic/vlbox.cpp +++ b/src/generic/vlbox.cpp @@ -319,7 +319,30 @@ void wxVListBox::OnDrawSeparator(wxDC& WXUNUSED(dc), { } -void wxVListBox::OnPaint(wxPaintEvent& event) +void wxVListBox::OnDrawBackground(wxDC& dc, const wxRect& rect, size_t n) const +{ + // we need to render selected and current items differently + const bool isSelected = IsSelected(n), + isCurrent = IsCurrent(n); + if ( isSelected || isCurrent ) + { + if ( isSelected ) + { + dc.SetBrush(wxBrush(m_colBgSel, wxSOLID)); + } + else // !selected + { + dc.SetBrush(*wxTRANSPARENT_BRUSH); + } + + dc.SetPen(*(isCurrent ? wxBLACK_PEN : wxTRANSPARENT_PEN)); + + dc.DrawRectangle(rect); + } + //else: do nothing for the normal items +} + +void wxVListBox::OnPaint(wxPaintEvent& WXUNUSED(event)) { wxPaintDC dc(this); @@ -344,25 +367,9 @@ void wxVListBox::OnPaint(wxPaintEvent& event) // don't allow drawing outside of the lines rectangle wxDCClipper clip(dc, rectLine); - // we need to render selected and current items differently - const bool isSelected = IsSelected(line); - if ( isSelected || IsCurrent(line) ) - { - if ( isSelected ) - { - dc.SetBrush(wxBrush(m_colBgSel, wxSOLID)); - } - else // !selected - { - dc.SetBrush(*wxTRANSPARENT_BRUSH); - } - - dc.SetPen(*(IsCurrent(line) ? wxBLACK_PEN : wxTRANSPARENT_PEN)); - - dc.DrawRectangle(rectLine); - } - wxRect rect = rectLine; + OnDrawBackground(dc, rect, line); + OnDrawSeparator(dc, rect, line); rect.Deflate(m_ptMargins.x, m_ptMargins.y); -- 2.47.2