From 76de93fb16f8f2bb08fa2cde106a621169b973ee Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 13 Mar 2022 21:10:36 +0100 Subject: [PATCH] Replace class shim with a custom comparator. --- src/wx/screens_panel.cc | 14 ++------------ src/wx/screens_panel.h | 32 ++++++++++++-------------------- 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/src/wx/screens_panel.cc b/src/wx/screens_panel.cc index 02ef2f62c..90fb71246 100644 --- a/src/wx/screens_panel.cc +++ b/src/wx/screens_panel.cc @@ -55,9 +55,10 @@ ScreensPanel::ScreensPanel (wxWindow* parent) sizer->Add (_search, 0, wxBOTTOM, DCPOMATIC_SIZER_GAP); auto targets = new wxBoxSizer (wxHORIZONTAL); - _targets = new TreeListCtrl (this); + _targets = new wxTreeListCtrl (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTL_MULTIPLE | wxTL_3STATE | wxTL_NO_HEADER); _targets->AppendColumn (wxT("foo")); _targets->SetSortColumn (0); + _targets->SetItemComparator (&_comparator); targets->Add (_targets, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_GAP); @@ -502,14 +503,3 @@ ScreensPanel::checkbox_changed (wxTreeListEvent& ev) } - -wxIMPLEMENT_DYNAMIC_CLASS (TreeListCtrl, wxTreeListCtrl); - - -int -TreeListCtrl::OnCompareItems (wxTreeListItem const& a, wxTreeListItem const& b) -{ - return strcoll (wx_to_std(GetItemText(a)).c_str(), wx_to_std(GetItemText(b)).c_str()); -} - - diff --git a/src/wx/screens_panel.h b/src/wx/screens_panel.h index 4885a8454..fc7e9751c 100644 --- a/src/wx/screens_panel.h +++ b/src/wx/screens_panel.h @@ -36,25 +36,6 @@ namespace dcpomatic { class Cinema; -/** Shim around wxTreeListCtrl so we can use strcoll() to compare things */ -class TreeListCtrl : public wxTreeListCtrl -{ -public: - wxDECLARE_DYNAMIC_CLASS (TreeListCtrl); - - TreeListCtrl () {} - - TreeListCtrl (wxWindow* parent) - : wxTreeListCtrl (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTL_MULTIPLE | wxTL_3STATE | wxTL_NO_HEADER) - {} - - virtual ~TreeListCtrl () {} - -private: - int OnCompareItems (wxTreeListItem const& a, wxTreeListItem const& b); -}; - - class ScreensPanel : public wxPanel { public: @@ -83,7 +64,7 @@ private: boost::optional>> cinema_for_operation () const; wxSearchCtrl* _search; - TreeListCtrl* _targets; + wxTreeListCtrl* _targets; wxButton* _add_cinema; wxButton* _edit_cinema; wxButton* _remove_cinema; @@ -100,4 +81,15 @@ private: ScreenMap _selected_screens; bool _ignore_selection_change; + + class Comparator : public wxTreeListItemComparator + { + public: + int Compare (wxTreeListCtrl* tree_list, unsigned, wxTreeListItem a, wxTreeListItem b) override + { + return strcoll(wx_to_std(tree_list->GetItemText(a)).c_str(), wx_to_std(tree_list->GetItemText(b)).c_str()); + } + }; + + Comparator _comparator; }; -- 2.30.2