mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-02-18 12:55:38 +00:00
Change grid creation flow
- This changes make sure the buildTiles function is called only one time, at the end of the applyTheme function. - The buildTiles function now call calcGridDimension as both are linked to the same events
This commit is contained in:
parent
7f1dca23c5
commit
a52a2f5597
|
@ -91,8 +91,6 @@ ImageGridComponent<T>::ImageGridComponent(Window* window) : IList<ImageGridData,
|
||||||
mTileSize = GridTileComponent::getDefaultTileSize();
|
mTileSize = GridTileComponent::getDefaultTileSize();
|
||||||
|
|
||||||
mScrollDirection = SCROLL_VERTICALLY;
|
mScrollDirection = SCROLL_VERTICALLY;
|
||||||
|
|
||||||
calcGridDimension();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
@ -166,7 +164,6 @@ void ImageGridComponent<T>::render(const Transform4x4f& parentTrans)
|
||||||
|
|
||||||
if(mEntriesDirty)
|
if(mEntriesDirty)
|
||||||
{
|
{
|
||||||
buildTiles();
|
|
||||||
updateTiles();
|
updateTiles();
|
||||||
mEntriesDirty = false;
|
mEntriesDirty = false;
|
||||||
}
|
}
|
||||||
|
@ -193,7 +190,10 @@ void ImageGridComponent<T>::render(const Transform4x4f& parentTrans)
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void ImageGridComponent<T>::applyTheme(const std::shared_ptr<ThemeData>& theme, const std::string& view, const std::string& element, unsigned int properties)
|
void ImageGridComponent<T>::applyTheme(const std::shared_ptr<ThemeData>& theme, const std::string& view, const std::string& element, unsigned int properties)
|
||||||
{
|
{
|
||||||
GuiComponent::applyTheme(theme, view, element, properties);
|
using namespace ThemeFlags;
|
||||||
|
|
||||||
|
// Apply theme to GuiComponent but not size property, which will be applied at the end of this function
|
||||||
|
GuiComponent::applyTheme(theme, view, element, properties ^ SIZE);
|
||||||
|
|
||||||
// Keep the theme pointer to apply it on the tiles later on
|
// Keep the theme pointer to apply it on the tiles later on
|
||||||
mTheme = theme;
|
mTheme = theme;
|
||||||
|
@ -262,8 +262,8 @@ void ImageGridComponent<T>::applyTheme(const std::shared_ptr<ThemeData>& theme,
|
||||||
elem->get<Vector2f>("size") * screen :
|
elem->get<Vector2f>("size") * screen :
|
||||||
GridTileComponent::getDefaultTileSize();
|
GridTileComponent::getDefaultTileSize();
|
||||||
|
|
||||||
// Recalculate grid dimension after theme changed
|
// Apply size property, will trigger a call to onSizeChanged() which will build the tiles
|
||||||
calcGridDimension();
|
GuiComponent::applyTheme(theme, view, element, SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
@ -288,6 +288,8 @@ void ImageGridComponent<T>::buildTiles()
|
||||||
{
|
{
|
||||||
mTiles.clear();
|
mTiles.clear();
|
||||||
|
|
||||||
|
calcGridDimension();
|
||||||
|
|
||||||
Vector2f startPosition = mTileSize / 2;
|
Vector2f startPosition = mTileSize / 2;
|
||||||
Vector2f tileDistance = mTileSize + mMargin;
|
Vector2f tileDistance = mTileSize + mMargin;
|
||||||
|
|
||||||
|
@ -321,9 +323,6 @@ void ImageGridComponent<T>::buildTiles()
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void ImageGridComponent<T>::updateTiles()
|
void ImageGridComponent<T>::updateTiles()
|
||||||
{
|
{
|
||||||
if(mTiles.empty())
|
|
||||||
buildTiles();
|
|
||||||
|
|
||||||
int img = getStartPosition();
|
int img = getStartPosition();
|
||||||
|
|
||||||
for(int ti = 0; ti < mTiles.size(); ti++)
|
for(int ti = 0; ti < mTiles.size(); ti++)
|
||||||
|
|
Loading…
Reference in a new issue