Ticket #3574: t3574_list_item_doubleclicks_v1.patch
File t3574_list_item_doubleclicks_v1.patch, 4.7 KB (added by , 9 years ago) |
---|
-
binaries/data/mods/public/gui/lobby/lobby.xml
171 171 <!-- Middle panel: Filters, game list, chat box. --> 172 172 <object name="middlePanel" size="20%+5 5% 100%-255 97.2%"> 173 173 <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"> 174 174 <action on="SelectionChange">updateGameSelection();</action> 175 175 <action on="SelectionColumnChange">updateGameListOrderSelection();</action> 176 <action on="mouseleftdoubleclick ">joinSelectedGame();</action>176 <action on="mouseleftdoubleclick_item">joinSelectedGame();</action> 177 177 <def id="name" color="0 60 0" width="27%"> 178 178 <translatableAttribute id="heading">Name</translatableAttribute> 179 179 </def> 180 180 <!--<def id="ip" heading="IP" color="0 128 128" width="170"/>--> 181 181 <def id="mapName" color="128 128 128" width="25%"> -
binaries/data/mods/public/gui/replaymenu/replay_menu.xml
62 62 <!-- Replay List in that left panel --> 63 63 <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"> 64 64 65 65 <action on="SelectionChange">displayReplayDetails();</action> 66 66 <action on="SelectionColumnChange">displayReplayList();</action> 67 <action on="mouseleftdoubleclick ">startReplay();</action>67 <action on="mouseleftdoubleclick_item">startReplay();</action> 68 68 69 69 <!-- Columns --> 70 70 <!-- We have to call one "name" as the GUI expects one. --> 71 71 <def id="name" color="172 172 212" width="12%"> 72 72 <translatableAttribute id="heading" context="replay">Date / Time</translatableAttribute> -
source/gui/CGUI.h
CGUI 42 42 43 43 #include <boost/unordered_set.hpp> 44 44 45 45 ERROR_TYPE(GUI, JSOpenFailed); 46 46 47 extern const double SELECT_DBLCLICK_RATE; 48 47 49 /** 48 50 * Contains a list of values for new defaults to objects. 49 51 */ 50 52 struct SGUIStyle 51 53 { -
source/gui/CList.cpp
25 25 #include "ps/CLogger.h" 26 26 #include "soundmanager/ISoundManager.h" 27 27 28 28 29 29 CList::CList() 30 : m_Modified(false) 30 : m_Modified(false), m_PrevSelectedItem(-1), m_LastItemClickTime(0) 31 31 { 32 32 // Add sprite_disabled! TODO 33 33 34 34 AddSetting(GUIST_float, "buffer_zone"); 35 35 AddSetting(GUIST_CStrW, "font"); … … void CList::HandleMessage(SGUIMessage& M 214 214 UpdateAutoScroll(); 215 215 216 216 CStrW soundPath; 217 217 if (g_SoundManager && GUI<CStrW>::GetSetting(this, "sound_selected", soundPath) == PSRETURN_OK && !soundPath.empty()) 218 218 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; 219 224 } 220 225 break; 221 226 } 222 227 223 228 case GUIM_LOAD: -
source/gui/CList.h
protected: 106 106 std::vector<float> m_ItemsYPositions; 107 107 108 108 private: 109 109 // Whether the list's items have been modified since last handling a message. 110 110 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; 111 117 }; 112 118 113 119 #endif // INCLUDED_CLIST -
source/gui/GUIbase.h
enum EGUIMessageType 62 62 GUIM_MOUSE_PRESS_LEFT, 63 63 GUIM_MOUSE_PRESS_RIGHT, 64 64 GUIM_MOUSE_DOWN_LEFT, 65 65 GUIM_MOUSE_DOWN_RIGHT, 66 66 GUIM_MOUSE_DBLCLICK_LEFT, 67 GUIM_MOUSE_DBLCLICK_LEFT_ITEM, // Triggered when doubleclicking on a list item 67 68 GUIM_MOUSE_DBLCLICK_RIGHT, 68 69 GUIM_MOUSE_RELEASE_LEFT, 69 70 GUIM_MOUSE_RELEASE_RIGHT, 70 71 GUIM_MOUSE_WHEEL_UP, 71 72 GUIM_MOUSE_WHEEL_DOWN,