summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-02-04 00:03:50 +0100
committerCarl Hetherington <cth@carlh.net>2021-02-04 00:03:50 +0100
commit81e16caf6414a011bbbe6e8c788f9dc1e4c0ce52 (patch)
treed283c680abfacd30992e75bf70b05df513d8a416 /src
parent5a8f1059efce6eeac2f1f3c01acc41424f3950d6 (diff)
Use strcoll() to compare cinemas/screens in the KDM dialog (#1904).
Diffstat (limited to 'src')
-rw-r--r--src/wx/screens_panel.cc13
-rw-r--r--src/wx/screens_panel.h23
2 files changed, 34 insertions, 2 deletions
diff --git a/src/wx/screens_panel.cc b/src/wx/screens_panel.cc
index 6bc821feb..8d631ce90 100644
--- a/src/wx/screens_panel.cc
+++ b/src/wx/screens_panel.cc
@@ -61,7 +61,7 @@ ScreensPanel::ScreensPanel (wxWindow* parent)
sizer->Add (_search, 0, wxBOTTOM, DCPOMATIC_SIZER_GAP);
auto targets = new wxBoxSizer (wxHORIZONTAL);
- _targets = new wxTreeCtrl (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_HIDE_ROOT | wxTR_MULTIPLE | wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT);
+ _targets = new TreeCtrl (this);
targets->Add (_targets, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_GAP);
add_cinemas ();
@@ -455,3 +455,14 @@ ScreensPanel::search_changed ()
_ignore_selection_change = false;
}
+
+
+wxIMPLEMENT_DYNAMIC_CLASS (TreeCtrl, wxTreeCtrl);
+
+
+int
+TreeCtrl::OnCompareItems (wxTreeItemId const& a, wxTreeItemId 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 70b12a1d6..7703d69aa 100644
--- a/src/wx/screens_panel.h
+++ b/src/wx/screens_panel.h
@@ -32,8 +32,29 @@ namespace dcpomatic {
class Screen;
}
+
class Cinema;
+
+/** Shim around wxTreeCtrl so we can use strcoll() to compare things */
+class TreeCtrl : public wxTreeCtrl
+{
+public:
+ wxDECLARE_DYNAMIC_CLASS (TreeCtrl);
+
+ TreeCtrl () {}
+
+ TreeCtrl (wxWindow* parent)
+ : wxTreeCtrl (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_HIDE_ROOT | wxTR_MULTIPLE | wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT)
+ {}
+
+ virtual ~TreeCtrl () {}
+
+private:
+ int OnCompareItems (wxTreeItemId const& a, wxTreeItemId const& b);
+};
+
+
class ScreensPanel : public wxPanel
{
public:
@@ -60,7 +81,7 @@ private:
void search_changed ();
wxSearchCtrl* _search;
- wxTreeCtrl* _targets;
+ TreeCtrl* _targets;
wxButton* _add_cinema;
wxButton* _edit_cinema;
wxButton* _remove_cinema;