💥 Replaced ArrowUp and ArrowDown in ComboBox by a single Arrow property
parent
3388c98a79
commit
a223933ab7
|
@ -245,79 +245,40 @@ namespace tgui
|
|||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Changes the image of the up arrow
|
||||
/// @brief Changes the image of the arrow
|
||||
///
|
||||
/// @param texture The new up arrow texture
|
||||
///
|
||||
/// When this image and the down image are set, the arrow color properties will be ignored.
|
||||
/// @param texture The new arrow texture
|
||||
///
|
||||
/// When this image is set, the arrow color properties will be ignored.
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void setTextureArrowUp(const Texture& texture);
|
||||
void setTextureArrow(const Texture& texture);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Returns the image of the up arrow
|
||||
/// @brief Returns the image of the arrow
|
||||
///
|
||||
/// @return Up arrow texture
|
||||
/// @return Arrow texture
|
||||
///
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Texture& getTextureArrowUp() const;
|
||||
Texture& getTextureArrow() const;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Changes the image of the up arrow that is displayed when the mouse is on top of it
|
||||
/// @brief Changes the image of the arrow that is displayed when the mouse is on top of it
|
||||
///
|
||||
/// @param texture The new hover up arrow texture
|
||||
/// @param texture The new hover arrow texture
|
||||
///
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void setTextureArrowUpHover(const Texture& texture);
|
||||
void setTextureArrowHover(const Texture& texture);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Returns the image of the up arrow that is displayed when the mouse is on top of it
|
||||
/// @brief Returns the image of the arrow that is displayed when the mouse is on top of it
|
||||
///
|
||||
/// @return Hover up arrow texture
|
||||
/// @return Hover arrow texture
|
||||
///
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Texture& getTextureArrowUpHover() const;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Changes the image of the down arrow
|
||||
///
|
||||
/// @param texture The new down arrow texture
|
||||
///
|
||||
/// When this image and the up image are set, the arrow color properties will be ignored.
|
||||
///
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void setTextureArrowDown(const Texture& texture);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Returns the image of the down arrow
|
||||
///
|
||||
/// @return Down arrow texture
|
||||
///
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Texture& getTextureArrowDown() const;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Changes the image of the down arrow that is displayed when the mouse is on top of it
|
||||
///
|
||||
/// @param texture The new hover down arrow texture
|
||||
///
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void setTextureArrowDownHover(const Texture& texture);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Returns the image of the down arrow that is displayed when the mouse is on top of it
|
||||
///
|
||||
/// @return Hover down arrow texture
|
||||
///
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
Texture& getTextureArrowDownHover() const;
|
||||
Texture& getTextureArrowHover() const;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -591,10 +591,8 @@ namespace tgui
|
|||
ExpandDirection m_expandDirection = ExpandDirection::Down;
|
||||
|
||||
Sprite m_spriteBackground;
|
||||
Sprite m_spriteArrowUp;
|
||||
Sprite m_spriteArrowDown;
|
||||
Sprite m_spriteArrowUpHover;
|
||||
Sprite m_spriteArrowDownHover;
|
||||
Sprite m_spriteArrow;
|
||||
Sprite m_spriteArrowHover;
|
||||
|
||||
// Cached renderer properties
|
||||
Borders m_bordersCached;
|
||||
|
|
|
@ -42,10 +42,8 @@ namespace tgui
|
|||
TGUI_RENDERER_PROPERTY_COLOR(ComboBoxRenderer, BorderColor, sf::Color::Black)
|
||||
|
||||
TGUI_RENDERER_PROPERTY_TEXTURE(ComboBoxRenderer, TextureBackground)
|
||||
TGUI_RENDERER_PROPERTY_TEXTURE(ComboBoxRenderer, TextureArrowUp)
|
||||
TGUI_RENDERER_PROPERTY_TEXTURE(ComboBoxRenderer, TextureArrowUpHover)
|
||||
TGUI_RENDERER_PROPERTY_TEXTURE(ComboBoxRenderer, TextureArrowDown)
|
||||
TGUI_RENDERER_PROPERTY_TEXTURE(ComboBoxRenderer, TextureArrowDownHover)
|
||||
TGUI_RENDERER_PROPERTY_TEXTURE(ComboBoxRenderer, TextureArrow)
|
||||
TGUI_RENDERER_PROPERTY_TEXTURE(ComboBoxRenderer, TextureArrowHover)
|
||||
|
||||
TGUI_RENDERER_PROPERTY_TEXT_STYLE(ComboBoxRenderer, TextStyle, sf::Text::Regular)
|
||||
|
||||
|
|
|
@ -58,10 +58,8 @@ namespace tgui
|
|||
m_text {other.m_text},
|
||||
m_expandDirection {other.m_expandDirection},
|
||||
m_spriteBackground {other.m_spriteBackground},
|
||||
m_spriteArrowUp {other.m_spriteArrowUp},
|
||||
m_spriteArrowDown {other.m_spriteArrowDown},
|
||||
m_spriteArrowUpHover {other.m_spriteArrowUpHover},
|
||||
m_spriteArrowDownHover {other.m_spriteArrowDownHover},
|
||||
m_spriteArrow {other.m_spriteArrow},
|
||||
m_spriteArrowHover {other.m_spriteArrowHover},
|
||||
m_bordersCached {other.m_bordersCached},
|
||||
m_paddingCached {other.m_paddingCached},
|
||||
m_borderColorCached {other.m_borderColorCached},
|
||||
|
@ -84,10 +82,8 @@ namespace tgui
|
|||
m_text {std::move(other.m_text)},
|
||||
m_expandDirection {std::move(other.m_expandDirection)},
|
||||
m_spriteBackground {std::move(other.m_spriteBackground)},
|
||||
m_spriteArrowUp {std::move(other.m_spriteArrowUp)},
|
||||
m_spriteArrowDown {std::move(other.m_spriteArrowDown)},
|
||||
m_spriteArrowUpHover {std::move(other.m_spriteArrowUpHover)},
|
||||
m_spriteArrowDownHover {std::move(other.m_spriteArrowDownHover)},
|
||||
m_spriteArrow {std::move(other.m_spriteArrow)},
|
||||
m_spriteArrowHover {std::move(other.m_spriteArrowHover)},
|
||||
m_bordersCached {std::move(other.m_bordersCached)},
|
||||
m_paddingCached {std::move(other.m_paddingCached)},
|
||||
m_borderColorCached {std::move(other.m_borderColorCached)},
|
||||
|
@ -115,10 +111,8 @@ namespace tgui
|
|||
std::swap(m_text, temp.m_text);
|
||||
std::swap(m_expandDirection, temp.m_expandDirection);
|
||||
std::swap(m_spriteBackground, temp.m_spriteBackground);
|
||||
std::swap(m_spriteArrowUp, temp.m_spriteArrowUp);
|
||||
std::swap(m_spriteArrowDown, temp.m_spriteArrowDown);
|
||||
std::swap(m_spriteArrowUpHover, temp.m_spriteArrowUpHover);
|
||||
std::swap(m_spriteArrowDownHover, temp.m_spriteArrowDownHover);
|
||||
std::swap(m_spriteArrow, temp.m_spriteArrow);
|
||||
std::swap(m_spriteArrowHover, temp.m_spriteArrowHover);
|
||||
std::swap(m_bordersCached, temp.m_bordersCached);
|
||||
std::swap(m_paddingCached, temp.m_paddingCached);
|
||||
std::swap(m_borderColorCached, temp.m_borderColorCached);
|
||||
|
@ -145,10 +139,8 @@ namespace tgui
|
|||
m_text = std::move(other.m_text);
|
||||
m_expandDirection = std::move(other.m_expandDirection);
|
||||
m_spriteBackground = std::move(other.m_spriteBackground);
|
||||
m_spriteArrowUp = std::move(other.m_spriteArrowUp);
|
||||
m_spriteArrowDown = std::move(other.m_spriteArrowDown);
|
||||
m_spriteArrowUpHover = std::move(other.m_spriteArrowUpHover);
|
||||
m_spriteArrowDownHover = std::move(other.m_spriteArrowDownHover);
|
||||
m_spriteArrow = std::move(other.m_spriteArrow);
|
||||
m_spriteArrowHover = std::move(other.m_spriteArrowHover);
|
||||
m_bordersCached = std::move(other.m_bordersCached);
|
||||
m_paddingCached = std::move(other.m_paddingCached);
|
||||
m_borderColorCached = std::move(other.m_borderColorCached);
|
||||
|
@ -226,13 +218,10 @@ namespace tgui
|
|||
updateListBoxHeight();
|
||||
}
|
||||
|
||||
if (m_spriteArrowUp.isSet() && m_spriteArrowDown.isSet())
|
||||
if (m_spriteArrow.isSet())
|
||||
{
|
||||
m_spriteArrowUp.setSize({m_spriteArrowUp.getTexture().getImageSize().x * (height / m_spriteArrowUp.getTexture().getImageSize().y), height});
|
||||
m_spriteArrowDown.setSize({m_spriteArrowDown.getTexture().getImageSize().x * (height / m_spriteArrowDown.getTexture().getImageSize().y), height});
|
||||
|
||||
m_spriteArrowUpHover.setSize(m_spriteArrowUp.getSize());
|
||||
m_spriteArrowDownHover.setSize(m_spriteArrowDown.getSize());
|
||||
m_spriteArrow.setSize({m_spriteArrow.getTexture().getImageSize().x * (height / m_spriteArrow.getTexture().getImageSize().y), height});
|
||||
m_spriteArrowHover.setSize(m_spriteArrow.getSize());
|
||||
}
|
||||
|
||||
m_text.setCharacterSize(m_listBox->getTextSize());
|
||||
|
@ -574,23 +563,14 @@ namespace tgui
|
|||
{
|
||||
m_spriteBackground.setTexture(getSharedRenderer()->getTextureBackground());
|
||||
}
|
||||
else if (property == "texturearrowup")
|
||||
else if (property == "texturearrow")
|
||||
{
|
||||
m_spriteArrowUp.setTexture(getSharedRenderer()->getTextureArrowUp());
|
||||
m_spriteArrow.setTexture(getSharedRenderer()->getTextureArrow());
|
||||
setSize(m_size);
|
||||
}
|
||||
else if (property == "texturearrowuphover")
|
||||
else if (property == "texturearrowhover")
|
||||
{
|
||||
m_spriteArrowUpHover.setTexture(getSharedRenderer()->getTextureArrowUpHover());
|
||||
}
|
||||
else if (property == "texturearrowdown")
|
||||
{
|
||||
m_spriteArrowDown.setTexture(getSharedRenderer()->getTextureArrowDown());
|
||||
setSize(m_size);
|
||||
}
|
||||
else if (property == "texturearrowdownhover")
|
||||
{
|
||||
m_spriteArrowDownHover.setTexture(getSharedRenderer()->getTextureArrowDownHover());
|
||||
m_spriteArrowHover.setTexture(getSharedRenderer()->getTextureArrowHover());
|
||||
}
|
||||
else if (property == "listbox")
|
||||
{
|
||||
|
@ -625,10 +605,8 @@ namespace tgui
|
|||
Widget::rendererChanged(property);
|
||||
|
||||
m_spriteBackground.setOpacity(m_opacityCached);
|
||||
m_spriteArrowUp.setOpacity(m_opacityCached);
|
||||
m_spriteArrowUpHover.setOpacity(m_opacityCached);
|
||||
m_spriteArrowDown.setOpacity(m_opacityCached);
|
||||
m_spriteArrowDownHover.setOpacity(m_opacityCached);
|
||||
m_spriteArrow.setOpacity(m_opacityCached);
|
||||
m_spriteArrowHover.setOpacity(m_opacityCached);
|
||||
|
||||
m_text.setOpacity(m_opacityCached);
|
||||
}
|
||||
|
@ -752,31 +730,17 @@ namespace tgui
|
|||
else
|
||||
drawRectangleShape(target, states, getInnerSize(), m_backgroundColorCached);
|
||||
|
||||
// Check if we have textures for the arrow
|
||||
// Check if we have a texture for the arrow
|
||||
float arrowSize;
|
||||
if (m_spriteArrowUp.isSet() && m_spriteArrowDown.isSet())
|
||||
if (m_spriteArrow.isSet())
|
||||
{
|
||||
// Set the arrow like it should (down when list box is invisible, up when it is visible)
|
||||
if (m_listBox->isVisible())
|
||||
{
|
||||
arrowSize = m_spriteArrowUp.getSize().x;
|
||||
states.transform.translate({getInnerSize().x - m_paddingCached.getRight() - arrowSize, m_paddingCached.getTop()});
|
||||
arrowSize = m_spriteArrow.getSize().x;
|
||||
states.transform.translate({getInnerSize().x - m_paddingCached.getRight() - arrowSize, m_paddingCached.getTop()});
|
||||
|
||||
if (m_mouseHover && m_spriteArrowUpHover.isSet())
|
||||
m_spriteArrowUpHover.draw(target, states);
|
||||
else
|
||||
m_spriteArrowUp.draw(target, states);
|
||||
}
|
||||
if (m_mouseHover && m_spriteArrowHover.isSet())
|
||||
m_spriteArrowHover.draw(target, states);
|
||||
else
|
||||
{
|
||||
arrowSize = m_spriteArrowDown.getSize().x;
|
||||
states.transform.translate({getInnerSize().x - m_paddingCached.getRight() - arrowSize, m_paddingCached.getTop()});
|
||||
|
||||
if (m_mouseHover && m_spriteArrowDownHover.isSet())
|
||||
m_spriteArrowDownHover.draw(target, states);
|
||||
else
|
||||
m_spriteArrowDown.draw(target, states);
|
||||
}
|
||||
m_spriteArrow.draw(target, states);
|
||||
}
|
||||
else // There are no textures for the arrow
|
||||
{
|
||||
|
@ -789,18 +753,9 @@ namespace tgui
|
|||
drawRectangleShape(target, states, {arrowSize, arrowSize}, m_arrowBackgroundColorCached);
|
||||
|
||||
sf::ConvexShape arrow{3};
|
||||
if (m_listBox->isVisible())
|
||||
{
|
||||
arrow.setPoint(0, {arrowSize / 5, arrowSize * 4/5});
|
||||
arrow.setPoint(1, {arrowSize / 2, arrowSize / 5});
|
||||
arrow.setPoint(2, {arrowSize * 4/5, arrowSize * 4/5});
|
||||
}
|
||||
else // The listbox is not visible, the arrow points down
|
||||
{
|
||||
arrow.setPoint(0, {arrowSize / 5, arrowSize / 5});
|
||||
arrow.setPoint(1, {arrowSize / 2, arrowSize * 4/5});
|
||||
arrow.setPoint(2, {arrowSize * 4/5, arrowSize / 5});
|
||||
}
|
||||
arrow.setPoint(0, {arrowSize / 5, arrowSize / 5});
|
||||
arrow.setPoint(1, {arrowSize / 2, arrowSize * 4/5});
|
||||
arrow.setPoint(2, {arrowSize * 4/5, arrowSize / 5});
|
||||
|
||||
if (m_mouseHover && m_arrowColorHoverCached.isSet())
|
||||
arrow.setFillColor(m_arrowColorHoverCached);
|
||||
|
|
|
@ -306,49 +306,37 @@ TEST_CASE("[ComboBox]")
|
|||
SECTION("textured")
|
||||
{
|
||||
tgui::Texture textureBackground("resources/Black.png", {0, 154, 48, 48}, {16, 16, 16, 16});
|
||||
tgui::Texture textureArrowUp("resources/Black.png", {60, 0, 32, 32});
|
||||
tgui::Texture textureArrowUpHover("resources/Black.png", {60, 32, 32, 32});
|
||||
tgui::Texture textureArrowDown("resources/Black.png", {92, 0, 32, 32});
|
||||
tgui::Texture textureArrowDownHover("resources/Black.png", {92, 32, 32, 32});
|
||||
tgui::Texture textureArrow("resources/Black.png", {92, 0, 32, 32});
|
||||
tgui::Texture textureArrowHover("resources/Black.png", {92, 32, 32, 32});
|
||||
|
||||
SECTION("set serialized property")
|
||||
{
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureBackground", tgui::Serializer::serialize(textureBackground)));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrowUp", tgui::Serializer::serialize(textureArrowUp)));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrowUpHover", tgui::Serializer::serialize(textureArrowUpHover)));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrowDown", tgui::Serializer::serialize(textureArrowDown)));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrowDownHover", tgui::Serializer::serialize(textureArrowDownHover)));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrow", tgui::Serializer::serialize(textureArrow)));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrowHover", tgui::Serializer::serialize(textureArrowHover)));
|
||||
}
|
||||
|
||||
SECTION("set object property")
|
||||
{
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureBackground", textureBackground));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrowUp", textureArrowUp));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrowUpHover", textureArrowUpHover));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrowDown", textureArrowDown));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrowDownHover", textureArrowDownHover));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrow", textureArrow));
|
||||
REQUIRE_NOTHROW(renderer->setProperty("TextureArrowHover", textureArrowHover));
|
||||
}
|
||||
|
||||
SECTION("functions")
|
||||
{
|
||||
renderer->setTextureBackground(textureBackground);
|
||||
renderer->setTextureArrowUp(textureArrowUp);
|
||||
renderer->setTextureArrowUpHover(textureArrowUpHover);
|
||||
renderer->setTextureArrowDown(textureArrowDown);
|
||||
renderer->setTextureArrowDownHover(textureArrowDownHover);
|
||||
renderer->setTextureArrow(textureArrow);
|
||||
renderer->setTextureArrowHover(textureArrowHover);
|
||||
}
|
||||
|
||||
REQUIRE(renderer->getProperty("TextureBackground").getTexture().getData() != nullptr);
|
||||
REQUIRE(renderer->getProperty("TextureArrowUp").getTexture().getData() != nullptr);
|
||||
REQUIRE(renderer->getProperty("TextureArrowUpHover").getTexture().getData() != nullptr);
|
||||
REQUIRE(renderer->getProperty("TextureArrowDown").getTexture().getData() != nullptr);
|
||||
REQUIRE(renderer->getProperty("TextureArrowDownHover").getTexture().getData() != nullptr);
|
||||
REQUIRE(renderer->getProperty("TextureArrow").getTexture().getData() != nullptr);
|
||||
REQUIRE(renderer->getProperty("TextureArrowHover").getTexture().getData() != nullptr);
|
||||
|
||||
REQUIRE(renderer->getTextureBackground().getData() == textureBackground.getData());
|
||||
REQUIRE(renderer->getTextureArrowUp().getData() == textureArrowUp.getData());
|
||||
REQUIRE(renderer->getTextureArrowUpHover().getData() == textureArrowUpHover.getData());
|
||||
REQUIRE(renderer->getTextureArrowDown().getData() == textureArrowDown.getData());
|
||||
REQUIRE(renderer->getTextureArrowDownHover().getData() == textureArrowDownHover.getData());
|
||||
REQUIRE(renderer->getTextureArrow().getData() == textureArrow.getData());
|
||||
REQUIRE(renderer->getTextureArrowHover().getData() == textureArrowHover.getData());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
@ -50,8 +50,7 @@ ChildWindow {
|
|||
}
|
||||
|
||||
ComboBox {
|
||||
TextureArrowUp = "BabyBlue.png" Part(199, 2, 20, 26);
|
||||
TextureArrowDown = "BabyBlue.png" Part(177, 2, 20, 26);
|
||||
TextureArrow = "BabyBlue.png" Part(177, 2, 20, 26);
|
||||
BackgroundColor = rgb(210, 210, 210);
|
||||
TextColor = rgb(100, 100, 100);
|
||||
BorderColor = White;
|
||||
|
|
BIN
themes/Black.png
BIN
themes/Black.png
Binary file not shown.
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
@ -48,10 +48,8 @@ ChildWindow {
|
|||
|
||||
ComboBox {
|
||||
TextureBackground = "Black.png" Part(0, 154, 48, 48) Middle(16, 16, 16, 16);
|
||||
TextureArrowDown = "Black.png" Part(60, 0, 32, 32);
|
||||
TextureArrowDownHover = "Black.png" Part(60, 32, 32, 32);
|
||||
TextureArrowUp = "Black.png" Part(92, 0, 32, 32);
|
||||
TextureArrowUpHover = "Black.png" Part(92, 32, 32, 32);
|
||||
TextureArrow = "Black.png" Part(60, 0, 32, 32);
|
||||
TextureArrowHover = "Black.png" Part(60, 32, 32, 32);
|
||||
TextColor = rgb(190, 190, 190);
|
||||
Padding = (3, 3, 3, 3);
|
||||
ListBox = &ListBox;
|
||||
|
|
Loading…
Reference in New Issue