Ticket #3574: t3574_list_item_doubleclicks_v1.patch

File t3574_list_item_doubleclicks_v1.patch, 4.7 KB (added by elexis, 9 years ago)
  • binaries/data/mods/public/gui/lobby/lobby.xml

     
    171171        <!-- Middle panel: Filters, game list, chat box. -->
    172172        <object name="middlePanel" size="20%+5 5% 100%-255 97.2%">
    173173            <object name="gamesBox" style="ModernList" sprite_asc="ModernArrowDown" default_column="name" sprite_desc="ModernArrowUp" sprite_not_sorted="ModernNotSorted" type="olist" sortable="true" size="0 25 100% 48%" font="sans-stroke-13">
    174174                <action on="SelectionChange">updateGameSelection();</action>
    175175                <action on="SelectionColumnChange">updateGameListOrderSelection();</action>
    176                 <action on="mouseleftdoubleclick">joinSelectedGame();</action>
     176                <action on="mouseleftdoubleclick_item">joinSelectedGame();</action>
    177177                <def id="name" color="0 60 0" width="27%">
    178178                    <translatableAttribute id="heading">Name</translatableAttribute>
    179179                </def>
    180180                <!--<def id="ip" heading="IP" color="0 128 128" width="170"/>-->
    181181                <def id="mapName" color="128 128 128" width="25%">
  • binaries/data/mods/public/gui/replaymenu/replay_menu.xml

     
    6262            <!-- Replay List in that left panel -->
    6363            <object name="replaySelection" size="0 35 100% 100%" style="ModernList" type="olist" sortable="true" default_column="name" sprite_asc="ModernArrowDown" sprite_desc="ModernArrowUp" sprite_not_sorted="ModernNotSorted" font="sans-stroke-13">
    6464
    6565                <action on="SelectionChange">displayReplayDetails();</action>
    6666                <action on="SelectionColumnChange">displayReplayList();</action>
    67                 <action on="mouseleftdoubleclick">startReplay();</action>
     67                <action on="mouseleftdoubleclick_item">startReplay();</action>
    6868
    6969                <!-- Columns -->
    7070                <!-- We have to call one "name" as the GUI expects one. -->
    7171                <def id="name" color="172 172 212" width="12%">
    7272                    <translatableAttribute id="heading" context="replay">Date / Time</translatableAttribute>
  • source/gui/CGUI.h

    CGUI  
    4242
    4343#include <boost/unordered_set.hpp>
    4444
    4545ERROR_TYPE(GUI, JSOpenFailed);
    4646
     47extern const double SELECT_DBLCLICK_RATE;
     48
    4749/**
    4850 * Contains a list of values for new defaults to objects.
    4951 */
    5052struct SGUIStyle
    5153{
  • source/gui/CList.cpp

     
    2525#include "ps/CLogger.h"
    2626#include "soundmanager/ISoundManager.h"
    2727
    2828
    2929CList::CList()
    30     : m_Modified(false)
     30    : m_Modified(false), m_PrevSelectedItem(-1), m_LastItemClickTime(0)
    3131{
    3232    // Add sprite_disabled! TODO
    3333
    3434    AddSetting(GUIST_float,                 "buffer_zone");
    3535    AddSetting(GUIST_CStrW,                 "font");
    void CList::HandleMessage(SGUIMessage& M  
    214214            UpdateAutoScroll();
    215215
    216216            CStrW soundPath;
    217217            if (g_SoundManager && GUI<CStrW>::GetSetting(this, "sound_selected", soundPath) == PSRETURN_OK && !soundPath.empty())
    218218                g_SoundManager->PlayAsUI(soundPath.c_str(), false);
     219
     220            if (timer_Time() - m_LastItemClickTime < SELECT_DBLCLICK_RATE && set == m_PrevSelectedItem)
     221                this->SendEvent(GUIM_MOUSE_DBLCLICK_LEFT_ITEM, "mouseleftdoubleclick_item");
     222            m_LastItemClickTime = timer_Time();
     223            m_PrevSelectedItem = set;
    219224        }
    220225        break;
    221226    }
    222227
    223228    case GUIM_LOAD:
  • source/gui/CList.h

    protected:  
    106106    std::vector<float> m_ItemsYPositions;
    107107
    108108private:
    109109    // Whether the list's items have been modified since last handling a message.
    110110    bool m_Modified;
     111
     112    // Used for doubleclick registration
     113    int m_PrevSelectedItem;
     114
     115    // Last time a click on an item was issued
     116    double m_LastItemClickTime;
    111117};
    112118
    113119#endif // INCLUDED_CLIST
  • source/gui/GUIbase.h

    enum EGUIMessageType  
    6262    GUIM_MOUSE_PRESS_LEFT,
    6363    GUIM_MOUSE_PRESS_RIGHT,
    6464    GUIM_MOUSE_DOWN_LEFT,
    6565    GUIM_MOUSE_DOWN_RIGHT,
    6666    GUIM_MOUSE_DBLCLICK_LEFT,
     67    GUIM_MOUSE_DBLCLICK_LEFT_ITEM, // Triggered when doubleclicking on a list item
    6768    GUIM_MOUSE_DBLCLICK_RIGHT,
    6869    GUIM_MOUSE_RELEASE_LEFT,
    6970    GUIM_MOUSE_RELEASE_RIGHT,
    7071    GUIM_MOUSE_WHEEL_UP,
    7172    GUIM_MOUSE_WHEEL_DOWN,