Further improve list widget header

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@8619 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria 2011-05-17 01:06:12 +00:00
parent a3a77e626f
commit 7a1ab1fc61
3 changed files with 16 additions and 4 deletions

View File

@ -1284,15 +1284,17 @@ void Skin::drawListHeader(const irr::core::rect< irr::s32 > &rect, Widget* widge
//ListWidget* list = dynamic_cast<ListWidget*>(widget);
//assert(list != NULL);
IGUIButton* btn = widget->getIrrlichtElement<IGUIButton>();
//IGUIButton* btn = widget->getIrrlichtElement<IGUIButton>();
bool isSelected = (((ListWidget*)widget->m_event_handler)->m_selected_column == widget);
drawBoxFromStretchableTexture(widget, rect,
(btn->isPressed() ? SkinConfig::m_render_params["list_header::down"] :
SkinConfig::m_render_params["list_header::neutral"]),
(isSelected ? SkinConfig::m_render_params["list_header::down"] :
SkinConfig::m_render_params["list_header::neutral"]),
false, NULL /* clip */);
if (btn->isPressed())
if (isSelected)
{
ITexture* img = SkinConfig::m_render_params["list_sort_up::neutral"].getImage();
core::rect< s32 > destRect(rect.UpperLeftCorner,

View File

@ -36,6 +36,7 @@ ListWidget::ListWidget() : Widget(WTYPE_LIST)
m_use_icons = false;
m_icons = NULL;
m_listener = NULL;
m_selected_column = NULL;
}
// -----------------------------------------------------------------------------
@ -273,6 +274,7 @@ void ListWidget::elementRemoved()
m_children.remove( m_header_elements.get(n) );
}
m_header_elements.clearAndDeleteAll();
m_selected_column = NULL;
}
// -----------------------------------------------------------------------------
@ -318,11 +320,14 @@ EventPropagation ListWidget::transmitEvent(Widget* w, std::string& originator, c
{
int col = originator[ (m_properties[PROP_ID] + "_column_").size() ] - '0';
m_selected_column = m_header_elements.get(col);
/*
for (int n=0; n<m_header_elements.size(); n++)
{
m_header_elements[n].getIrrlichtElement<IGUIButton>()->setPressed(false);
}
m_header_elements[col].getIrrlichtElement<IGUIButton>()->setPressed(true);
*/
if (m_listener) m_listener->onColumnClicked(col);

View File

@ -45,6 +45,9 @@ namespace GUIEngine
*/
class ListWidget : public Widget
{
friend class Skin;
/** \brief whether this list has icons */
bool m_use_icons;
@ -61,6 +64,8 @@ namespace GUIEngine
PtrVector< ButtonWidget > m_header_elements;
ButtonWidget* m_selected_column;
/** Leave empty for no header */
std::vector< irr::core::stringw > m_header;