Ticket #3905: 3905_COList_refresh_v2.patch

File 3905_COList_refresh_v2.patch, 2.7 KB (added by Imarok, 8 years ago)

Rename m_SelectedDef to m_SelectedColumn. Update on GUIM_SETTINGS_UPDATED

  • source/gui/COList.cpp

     
    2424#include "soundmanager/ISoundManager.h"
    2525
    2626COList::COList()
    27     : CList(), m_HeadingHeight(30.f), m_SelectedDef(-1), m_SelectedColumnOrder(0)
     27    : CList(), m_HeadingHeight(30.f), m_SelectedColumn(-1), m_SelectedColumnOrder(0)
    2828{
    2929    AddSetting(GUIST_CGUISpriteInstance,    "sprite_heading");
    3030    AddSetting(GUIST_bool,                  "sortable"); // The actual sorting is done in JS for more versatility
     
    9090        *text = GetGUI()->GenerateText(gui_string, font, width, buffer_zone, this);
    9191        AddText(text);
    9292
    93         if (m_SelectedDef == (size_t)-1 && defaultColumn == m_ObjectsDefs[c].m_Id)
    94             m_SelectedDef = c;
     93        if (m_SelectedColumn == (size_t)-1 && defaultColumn == m_ObjectsDefs[c].m_Id)
     94            m_SelectedColumn = c;
    9595    }
    9696
    97     if (m_SelectedDef != (size_t)-1)
    98         GUI<CStr>::SetSetting(this, "selected_column", m_ObjectsDefs[m_SelectedDef].m_Id.substr(5));
     97    if (m_SelectedColumn != (size_t)-1)
     98        GUI<CStr>::SetSetting(this, "selected_column", m_ObjectsDefs[m_SelectedColumn].m_Id.substr(5));
    9999
    100100    if (m_SelectedColumnOrder == 0)
    101101    {
     
    147147
    148148    switch (Message.type)
    149149    {
     150    case GUIM_SETTINGS_UPDATED:
     151        {
     152            if (Message.value == "selected_column_order")
     153                GUI<int>::GetSetting(this, "selected_column_order", m_SelectedColumnOrder);
     154            if (Message.value == "selected_column")
     155            {
     156                CStr selectedColumn;
     157                GUI<CStr>::GetSetting(this, "selected_column", selectedColumn);
     158                for (size_t c = 0; c < m_ObjectsDefs.size(); ++c)
     159                {
     160                    if (m_ObjectsDefs[c].m_Id.substr(5) == selectedColumn)
     161                        m_SelectedColumn = c;
     162                }
     163            }
     164            return;
     165        }
    150166    // If somebody clicks on the column heading
    151167    case GUIM_MOUSE_PRESS_LEFT:
    152168    {
     
    171187                mouse.x < leftTopCorner.x + width &&
    172188                mouse.y < leftTopCorner.y + m_HeadingHeight)
    173189            {
    174                 if (def != m_SelectedDef)
     190                if (def != m_SelectedColumn)
    175191                {
    176192                    m_SelectedColumnOrder = 1;
    177                     m_SelectedDef = def;
     193                    m_SelectedColumn = def;
    178194                }
    179195                else
    180196                    m_SelectedColumnOrder = -m_SelectedColumnOrder;
     
    391407
    392408        CGUISpriteInstance* sprite;
    393409        // If the list sorted by current column
    394         if (m_SelectedDef == def)
     410        if (m_SelectedColumn == def)
    395411            sprite = sprite_order;
    396412        else
    397413            sprite = sprite_not_sorted;
  • source/gui/COList.h

     
    6868    /**
    6969     * Index of the selected column.
    7070     */
    71     size_t m_SelectedDef;
     71    size_t m_SelectedColumn;
    7272
    7373    /**
    7474     * +1 for ascending, -1 for descending sort order.