Skip to content

Commit 9952cde

Browse files
Robyt3def-
authored andcommitted
Delay double click handling one frame after item activation
1 parent 8bb3d18 commit 9952cde

File tree

4 files changed

+13
-12
lines changed

4 files changed

+13
-12
lines changed

src/game/client/components/menus_browser.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ void CMenus::RenderServerbrowserServerList(CUIRect View)
215215
View.y -= s_ScrollValue * ScrollNum * s_aCols[0].m_Rect.h;
216216

217217
int NewSelected = -1;
218-
int DoubleClicked = 0;
218+
bool DoubleClicked = false;
219219
int NumPlayers = 0;
220220

221221
m_SelectedIndex = -1;
@@ -300,7 +300,7 @@ void CMenus::RenderServerbrowserServerList(CUIRect View)
300300
{
301301
NewSelected = ItemIndex;
302302
if(NewSelected == m_DoubleClickIndex)
303-
DoubleClicked = 1;
303+
DoubleClicked = true;
304304
m_DoubleClickIndex = NewSelected;
305305
}
306306
}
@@ -474,7 +474,7 @@ void CMenus::RenderServerbrowserServerList(CUIRect View)
474474
// select the new server
475475
const CServerInfo *pItem = ServerBrowser()->SortedGet(NewSelected);
476476
str_copy(g_Config.m_UiServerAddress, pItem->m_aAddress, sizeof(g_Config.m_UiServerAddress));
477-
if(Input()->MouseDoubleClick() && DoubleClicked)
477+
if(DoubleClicked && Input()->MouseDoubleClick())
478478
{
479479
if(Client()->State() == IClient::STATE_ONLINE && Client()->GetCurrentRaceTime() / 60 >= g_Config.m_ClConfirmDisconnectTime && g_Config.m_ClConfirmDisconnectTime >= 0)
480480
{

src/game/client/components/menus_demo.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1090,8 +1090,8 @@ void CMenus::RenderDemoList(CUIRect MainView)
10901090
int ScrollNum = maximum(m_lDemos.size() - Num + 1, 0);
10911091
ListBox.y -= s_ScrollValue * ScrollNum * s_aCols[0].m_Rect.h;
10921092

1093-
int NewSelected = -1;
10941093
int ItemIndex = -1;
1094+
bool DoubleClicked = false;
10951095

10961096
for(sorted_array<CDemoItem>::range r = m_lDemos.all(); !r.empty(); r.pop_front())
10971097
{
@@ -1132,10 +1132,10 @@ void CMenus::RenderDemoList(CUIRect MainView)
11321132

11331133
if(UI()->DoButtonLogic(r.front().m_aName /* TODO: */, "", Selected, &SelectHitBox))
11341134
{
1135-
NewSelected = ItemIndex;
1135+
DoubleClicked |= ItemIndex == m_DoubleClickIndex;
11361136
str_copy(g_Config.m_UiDemoSelected, r.front().m_aName, sizeof(g_Config.m_UiDemoSelected));
11371137
DemolistOnUpdate(false);
1138-
m_DoubleClickIndex = NewSelected;
1138+
m_DoubleClickIndex = ItemIndex;
11391139
}
11401140
}
11411141
else
@@ -1194,7 +1194,7 @@ void CMenus::RenderDemoList(CUIRect MainView)
11941194
UI()->ClipDisable();
11951195

11961196
bool Activated = false;
1197-
if(m_EnterPressed || (NewSelected >= 0 && Input()->MouseDoubleClick()))
1197+
if(m_EnterPressed || (DoubleClicked && Input()->MouseDoubleClick()))
11981198
{
11991199
UI()->SetActiveItem(0);
12001200
Activated = true;

src/game/client/components/menus_ingame.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,7 @@ void CMenus::RenderGhost(CUIRect MainView)
10461046
View.y -= s_ScrollValue * ScrollNum * s_aCols[0].m_Rect.h;
10471047

10481048
int NewSelected = -1;
1049+
bool DoubleClicked = false;
10491050

10501051
for(int i = 0; i < NumGhosts; i++)
10511052
{
@@ -1078,6 +1079,8 @@ void CMenus::RenderGhost(CUIRect MainView)
10781079
if(UI()->DoButtonLogic(pItem, "", 0, &SelectHitBox))
10791080
{
10801081
NewSelected = i;
1082+
DoubleClicked |= NewSelected == m_DoubleClickIndex;
1083+
m_DoubleClickIndex = NewSelected;
10811084
}
10821085
}
10831086

@@ -1165,7 +1168,7 @@ void CMenus::RenderGhost(CUIRect MainView)
11651168

11661169
static int s_GhostButton = 0;
11671170
const char *pText = pGhost->Active() ? Localize("Deactivate") : Localize("Activate");
1168-
if(DoButton_Menu(&s_GhostButton, pText, 0, &Button) || (NewSelected != -1 && Input()->MouseDoubleClick()))
1171+
if(DoButton_Menu(&s_GhostButton, pText, 0, &Button) || (DoubleClicked && Input()->MouseDoubleClick()))
11691172
{
11701173
if(pGhost->Active())
11711174
{

src/game/editor/editor.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4071,11 +4071,9 @@ void CEditor::AddFileDialogEntry(int Index, CUIRect *pView)
40714071
str_copy(m_aFileDialogFileName, m_FileList[Index].m_aFilename, sizeof(m_aFileDialogFileName));
40724072
else
40734073
m_aFileDialogFileName[0] = 0;
4074-
m_FilesSelectedIndex = Index;
40754074
m_PreviewImageIsLoaded = false;
4076-
4077-
if(Input()->MouseDoubleClick())
4078-
m_FileDialogActivate = true;
4075+
m_FileDialogActivate |= Index == m_FilesSelectedIndex && Input()->MouseDoubleClick();
4076+
m_FilesSelectedIndex = Index;
40794077
}
40804078
}
40814079

0 commit comments

Comments
 (0)