|  |  |  | @ -1214,8 +1214,11 @@ IMPLEMENT_HOOKS_PRIO(df::viewscreen_unitlistst, unitlist_search, 100); | 
		
	
		
			
				|  |  |  |  | //
 | 
		
	
		
			
				|  |  |  |  | // START: Trade screen search
 | 
		
	
		
			
				|  |  |  |  | //
 | 
		
	
		
			
				|  |  |  |  | class trade_search_base : public search_twocolumn_modifiable<df::viewscreen_tradegoodsst, df::item*, char> | 
		
	
		
			
				|  |  |  |  | class trade_search_base : public search_multicolumn_modifiable<df::viewscreen_tradegoodsst, df::item*> | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  | protected: | 
		
	
		
			
				|  |  |  |  |     virtual vector<char> *get_selected_list() = 0; | 
		
	
		
			
				|  |  |  |  |     virtual vector<int32_t> *get_count_list() = 0; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | private: | 
		
	
		
			
				|  |  |  |  |     string get_element_description(df::item *element) const | 
		
	
	
		
			
				
					|  |  |  | @ -1257,6 +1260,59 @@ private: | 
		
	
		
			
				|  |  |  |  |         clear_search(); | 
		
	
		
			
				|  |  |  |  |         reset_all(); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     void do_post_init() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         search_multicolumn_modifiable::do_post_init(); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         selected = get_selected_list(); | 
		
	
		
			
				|  |  |  |  |         count = get_count_list(); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     void save_secondary_values() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         selected_s = *selected; | 
		
	
		
			
				|  |  |  |  |         count_s = *count; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     void reset_secondary_viewscreen_vectors() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         selected = NULL; | 
		
	
		
			
				|  |  |  |  |         count = NULL; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     void update_saved_secondary_list_item(size_t i, size_t j) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         selected_s[i] = (*selected)[j]; | 
		
	
		
			
				|  |  |  |  |         count_s[i] = (*count)[j]; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     void clear_secondary_viewscreen_vectors() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         selected->clear(); | 
		
	
		
			
				|  |  |  |  |         count->clear(); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     void add_to_filtered_secondary_lists(size_t i) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         selected->push_back(selected_s[i]); | 
		
	
		
			
				|  |  |  |  |         count->push_back(count_s[i]); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     void clear_secondary_saved_lists() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         selected_s.clear(); | 
		
	
		
			
				|  |  |  |  |         count_s.clear(); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     void restore_secondary_values() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         *selected = selected_s; | 
		
	
		
			
				|  |  |  |  |         *count = count_s; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     std::vector<char> *selected, selected_s; | 
		
	
		
			
				|  |  |  |  |     std::vector<int32_t> *count, count_s; | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -1286,11 +1342,6 @@ public: | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | private: | 
		
	
		
			
				|  |  |  |  |     vector<char> *get_secondary_list() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return &viewscreen->trader_selected; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     int32_t *get_viewscreen_cursor() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return &viewscreen->trader_cursor; | 
		
	
	
		
			
				
					|  |  |  | @ -1301,6 +1352,16 @@ private: | 
		
	
		
			
				|  |  |  |  |         return &viewscreen->trader_items; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     vector<char> *get_selected_list() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return &viewscreen->trader_selected; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     vector<int32_t> *get_count_list() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return &viewscreen->trader_count; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     char get_search_select_key() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return 'q'; | 
		
	
	
		
			
				
					|  |  |  | @ -1336,11 +1397,6 @@ public: | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | private: | 
		
	
		
			
				|  |  |  |  |     vector<char> *get_secondary_list() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return &viewscreen->broker_selected; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     int32_t *get_viewscreen_cursor() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return &viewscreen->broker_cursor; | 
		
	
	
		
			
				
					|  |  |  | @ -1351,6 +1407,16 @@ private: | 
		
	
		
			
				|  |  |  |  |         return &viewscreen->broker_items; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     vector<char> *get_selected_list() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return &viewscreen->broker_selected; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     vector<int32_t> *get_count_list() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return &viewscreen->broker_count; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     char get_search_select_key() | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         return 'w'; | 
		
	
	
		
			
				
					|  |  |  | 
 |