From 15df35b4acac0756f027dd74ac2b6de5caad0aa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D1=81=D0=BB=D0=B0=D0=B2=20?= =?UTF-8?q?=D0=A1=D1=83=D1=85=D0=BE=D0=B2?= <22411953+Vladislav4KZ@users.noreply.github.com> Date: Fri, 6 Feb 2026 20:21:02 +0000 Subject: [PATCH 1/2] ServerBrowser: prevent duplicate entries in Favorites tab --- menus/ServerBrowser.cpp | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/menus/ServerBrowser.cpp b/menus/ServerBrowser.cpp index cd6d593..ddc4d82 100644 --- a/menus/ServerBrowser.cpp +++ b/menus/ServerBrowser.cpp @@ -966,22 +966,37 @@ void CMenuServerBrowser::AddServer( void ) // FIXME: for now we can only show custom servers at favorites tab + // Check for duplicates in favorites list + FOR_EACH_VEC( favoritesList, i ) + { + if( !strcmp( favoritesList[i].sadr, addressField.GetBuffer() ) && + !strcmp( favoritesList[i].prot, proto )) + { + UI_ShowMessageBox( L( "Server already in favorites" )); + return; + } + } + favlist_entry_t entry( addressField.GetBuffer(), proto, false ); favoritesList.AddToTail( entry ); if( tabSwitch.GetState() != 2 ) + { tabSwitch.SetState( 2 ); + } + else + { + CUtlString fakeInfoString; + entry.GenerateDummyInfoString( fakeInfoString ); - CUtlString fakeInfoString; - entry.GenerateDummyInfoString( fakeInfoString ); - - server_t serv( adr, fakeInfoString, false, true ); - serv.UpdateData(); - serv.SetPing( MAX_PING ); - gameListModel.servers.AddToTail( serv ); + server_t serv( adr, fakeInfoString, false, true ); + serv.UpdateData(); + serv.SetPing( MAX_PING ); + gameListModel.servers.AddToTail( serv ); - entry.QueryServer(); - UI_MenuResetPing_f(); + entry.QueryServer(); + UI_MenuResetPing_f(); + } } /* From 10c7499255907d4b64fcd16e1ef05a6a6a191daa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D1=81=D0=BB=D0=B0=D0=B2=20?= =?UTF-8?q?=D0=A1=D1=83=D1=85=D0=BE=D0=B2?= <22411953+Vladislav4KZ@users.noreply.github.com> Date: Fri, 6 Feb 2026 20:27:12 +0000 Subject: [PATCH 2/2] ServerBrowser: parse favorites and history lists only from current gamedir --- menus/ServerBrowser.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/menus/ServerBrowser.cpp b/menus/ServerBrowser.cpp index ddc4d82..96e760d 100644 --- a/menus/ServerBrowser.cpp +++ b/menus/ServerBrowser.cpp @@ -1291,8 +1291,10 @@ void CMenuServerBrowser::Show() favoritesList.RemoveAll(); historyList.RemoveAll(); - ParseServerListFromFile( "favorite_servers.lst", favoritesList ); - ParseServerListFromFile( "history_servers.lst", historyList ); + if( EngFuncs::FileExists( "favorite_servers.lst", true ) ) + ParseServerListFromFile( "favorite_servers.lst", favoritesList ); + if( EngFuncs::FileExists( "history_servers.lst", true ) ) + ParseServerListFromFile( "history_servers.lst", historyList ); } RealignButtons();