Ticket #3391: t3391_fix_sortable_list_column_header_v1.patch

File t3391_fix_sortable_list_column_header_v1.patch, 1.7 KB (added by elexis, 9 years ago)
  • source/gui/COList.cpp

     
    143143    {
    144144    // If somebody clicks on the column heading
    145145    case GUIM_MOUSE_PRESS_LEFT:
    146146    {
    147147        bool sortable;
    148148        GUI<bool>::GetSetting(this, "sortable", sortable);
    149149        if (!sortable)
    150150            return;
    151151
    152152        CPos mouse = GetMousePos();
    153153        if (!m_CachedActualSize.PointInside(mouse))
    154154            return;
    155155
    156156        float xpos = 0;
    157157        for (size_t def = 0; def < m_ObjectsDefs.size(); ++def)
    158158        {
    159159            float width = m_ObjectsDefs[def].m_Width;
    160160            // Check if it's a decimal value, and if so, assume relative positioning.
    161161            if (m_ObjectsDefs[def].m_Width < 1 && m_ObjectsDefs[def].m_Width > 0)
    162162                width *= m_TotalAvalibleColumnWidth;
    163             CPos leftTopCorner = m_CachedActualSize.TopLeft() + CPos(xpos, 4);
     163            CPos leftTopCorner = m_CachedActualSize.TopLeft() + CPos(xpos, 0);
    164164            if (mouse.x >= leftTopCorner.x &&
    165165                mouse.x < leftTopCorner.x + width &&
    166166                mouse.y < leftTopCorner.y + m_HeadingHeight)
    167167            {
    168168                if (def != m_SelectedDef)
    169169                {
    170170                    m_SelectedColumnOrder = 1;
    171171                    m_SelectedDef = def;
    172172                }
    173173                else
    174174                    m_SelectedColumnOrder = -m_SelectedColumnOrder;
    175175                GUI<CStr>::SetSetting(this, "selected_column", m_ObjectsDefs[def].m_Id.substr(5));
    176176                GUI<int>::SetSetting(this, "selected_column_order", m_SelectedColumnOrder);
    177177                GUI<int>::SetSetting(this, "selected_def", def);
    178178                ScriptEvent("selectioncolumnchange");
    179179
    180180                CStrW soundPath;
    181181                if (g_SoundManager && GUI<CStrW>::GetSetting(this, "sound_selected", soundPath) == PSRETURN_OK && !soundPath.empty())
    182182                    g_SoundManager->PlayAsUI(soundPath.c_str(), false);
    183183