Fix _selected_* to only store pointers to things.
[dcpomatic.git] / src / wx / screens_panel.h
index 7a075bf49069008aa599d30bed2991653f3b0464..bf68870a6f5f71fa03b103b75f3d2431fa7dd552 100644 (file)
@@ -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;