message: Move Context struct to be nested inside ListBoxItem
  The fields in the Context struct depend on what a particular ListBoxItem
  type supports. As such, it should be more closely associated with the
  ListBoxItem type.
diff: @@ -32,6 +32,22 @@ public:
  std::string text; /**< Text of the ListBoxItem. */
  int tag = 0; /**< User defined int data attached to the item. */
  + struct Context
  + {
  + const NAS2D::Font& font;
  +
  + NAS2D::Color borderColorNormal = NAS2D::Color{75, 75, 75};
  + NAS2D::Color borderColorActive = NAS2D::Color{0, 185, 0};
  +
  + NAS2D::Color itemBorderColorMouseHover = NAS2D::Color::DarkGreen;
  +
  + NAS2D::Color backgroundColorNormal = NAS2D::Color{0, 85, 0, 220};
  + NAS2D::Color backgroundColorSelected = NAS2D::Color{0, 100, 0, 231};
  +
  + NAS2D::Color textColorNormal = NAS2D::Color::White;
  + NAS2D::Color textColorMouseHover = NAS2D::Color::White;
  + };
  +
  bool operator==(const std::string& rhs) { return text == rhs; }
  bool operator<(const ListBoxItem& lhs) { return text < lhs.text; }
  };
  @@ -88,23 +104,7 @@ private:
  void onSizeChanged() override;
  void updateScrollLayout();
  - struct Context
  - {
  - const NAS2D::Font& font;
  -
  - NAS2D::Color borderColorNormal = NAS2D::Color{75, 75, 75};
  - NAS2D::Color borderColorActive = NAS2D::Color{0, 185, 0};
  -
  - NAS2D::Color itemBorderColorMouseHover = NAS2D::Color::DarkGreen;
  -
  - NAS2D::Color backgroundColorNormal = NAS2D::Color{0, 85, 0, 220};
  - NAS2D::Color backgroundColorSelected = NAS2D::Color{0, 100, 0, 231};
  -
  - NAS2D::Color textColorNormal = NAS2D::Color::White;
  - NAS2D::Color textColorMouseHover = NAS2D::Color::White;
  - };
  -
  - Context mContext;
  + ListBoxItem::Context mContext;
  std::size_t mHighlightIndex = constants::NO_SELECTION;
  std::size_t mSelectedIndex = 0;
  