diff options
| author | Carl Hetherington <cth@carlh.net> | 2022-03-19 19:11:35 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2022-03-19 19:11:35 +0100 |
| commit | 06581bf43d6471acc33740a1e8384f71cb8951f2 (patch) | |
| tree | c9cb03c2171c4fed9075fd357501ec200f1f155b /src/wx/screens_panel.h | |
| parent | 9c17e94cac5e9d48fe170b8e5288cb764d8145ad (diff) | |
Fix _selected_* to only store pointers to things.
The wxWidgets item IDs can easily become outdated (when a search
is done).
Diffstat (limited to 'src/wx/screens_panel.h')
| -rw-r--r-- | src/wx/screens_panel.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/wx/screens_panel.h b/src/wx/screens_panel.h index 7a075bf49..bf68870a6 100644 --- a/src/wx/screens_panel.h +++ b/src/wx/screens_panel.h @@ -28,6 +28,7 @@ DCPOMATIC_ENABLE_WARNINGS #include <boost/signals2.hpp> #include <list> #include <map> +#include <set> namespace dcpomatic { @@ -64,7 +65,7 @@ private: void selection_changed (); void search_changed (); void checkbox_changed (wxTreeListEvent& ev); - boost::optional<std::pair<wxTreeListItem, std::shared_ptr<Cinema>>> cinema_for_operation () const; + std::shared_ptr<Cinema> cinema_for_operation () const; void set_screen_checked (wxTreeListItem item, bool checked); void setup_cinema_checked_state (wxTreeListItem screen); int compare (std::string const& utf8_a, std::string const& utf8_b); @@ -88,16 +89,17 @@ private: Cinemas _cinemas; Screens _screens; + /* We want to be able to search (and so remove selected things from the view) * but not deselect them, so we maintain lists of selected cinemas and screens. */ - Cinemas _selected_cinemas; - Screens _selected_screens; + std::vector<std::shared_ptr<Cinema>> _selected_cinemas; + std::vector<std::shared_ptr<dcpomatic::Screen>> _selected_screens; /* Likewise with checked screens, except that we can work out which cinemas * are checked from which screens are checked, so we don't need to store the * cinemas. */ - Screens _checked_screens; + std::set<std::shared_ptr<dcpomatic::Screen>> _checked_screens; std::map<wxTreeListItem, std::shared_ptr<Cinema>> _item_to_cinema; std::map<wxTreeListItem, std::shared_ptr<dcpomatic::Screen>> _item_to_screen; |
