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:
parent
a3a77e626f
commit
7a1ab1fc61
@ -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,
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user