Editable combo-boxes

An editable combo-box replaces the label with an input field. Typing text in the input field uses the combo-box's items to auto-complete the typed text. It's also possible to type in something different, that doesn't match any of the combo-box items. Running combobox.C with the -e option creates an editable combo-box instead of a standard combo-box.

x::w::new_editable_comboboxlayoutmanager
	nclm([]
	     (const x::w::editable_combobox_selection_changed_info_t &info)
	     {
                  // ...
             });

auto container=factory->create_focusable_container([]
                                                  (const auto &container)
                                                  {
                                                  }, nclm);
// ...
x::w::editable_comboboxlayoutmanager lm=container->get_layoutmanager();

x::w::input_lock lock{lm};

Passing an x::w::new_editable_comboboxlayoutmanager instead of a x::w::new_standard_comboboxlayoutmanager to create_focusable_container() constructs an x::w::focusable_container whose layout manager is an x:;w::editable_comboboxlayoutmanager.

x:;w::editable_comboboxlayoutmanager is a subclass of a x::w::new_standard_comboboxlayoutmanager and inherits all of its methods. Additionally, an x:;w::editable_comboboxlayoutmanager can be passed as a parameter to an x::w::input_lock's constructor in order to access the contents of combo-box's x::w::input_field.