changeset 19196:914938be9309 draft

(svn r24070) -Fix [FS#5098]: the 'last joined' server was not properly selected anymore (adf88)
author rubidium <rubidium@openttd.org>
date Sun, 25 Mar 2012 19:46:59 +0000
parents 2ac659d8719e
children 6880d0499ff8
files src/network/network_gamelist.cpp src/network/network_gui.cpp src/network/network_internal.h src/network/network_udp.cpp
diffstat 4 files changed, 10 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/network/network_gamelist.cpp
+++ b/src/network/network_gamelist.cpp
@@ -62,7 +62,7 @@
 			}
 			item->manually |= ins_item->manually;
 			if (item->manually) NetworkRebuildHostList();
-			UpdateNetworkGameWindow(false);
+			UpdateNetworkGameWindow();
 		}
 		free(ins_item);
 	}
@@ -105,7 +105,7 @@
 	}
 	DEBUG(net, 4, "[gamelist] added server to list");
 
-	UpdateNetworkGameWindow(false);
+	UpdateNetworkGameWindow();
 
 	return item;
 }
@@ -132,7 +132,7 @@
 
 			DEBUG(net, 4, "[gamelist] removed server from list");
 			NetworkRebuildHostList();
-			UpdateNetworkGameWindow(false);
+			UpdateNetworkGameWindow();
 			return;
 		}
 		prev_item = item;
--- a/src/network/network_gui.cpp
+++ b/src/network/network_gui.cpp
@@ -72,9 +72,9 @@
  * found on the network.
  * @param unselect unselect the currently selected item
  */
-void UpdateNetworkGameWindow(bool unselect)
+void UpdateNetworkGameWindow()
 {
-	InvalidateWindowData(WC_NETWORK_WINDOW, WN_NETWORK_WINDOW_GAME, unselect ? 1 : 0);
+	InvalidateWindowData(WC_NETWORK_WINDOW, WN_NETWORK_WINDOW_GAME, 0);
 }
 
 typedef GUIList<NetworkGameList*> GUIGameServerList;
@@ -438,6 +438,9 @@
 public:
 	NetworkGameWindow(const WindowDesc *desc) : QueryStringBaseWindow(NETWORK_CLIENT_NAME_LENGTH)
 	{
+		this->list_pos = SLP_INVALID;
+		this->server = NULL;
+
 		this->CreateNestedTree(desc);
 		this->vscroll = this->GetScrollbar(WID_NG_SCROLLBAR);
 		this->FinishInitNested(desc, WN_NETWORK_WINDOW_GAME);
@@ -447,8 +450,6 @@
 		InitializeTextBuffer(&this->text, this->edit_str_buf, this->edit_str_size, 120);
 		this->SetFocusedWidget(WID_NG_CLIENT);
 
-		UpdateNetworkGameWindow(true);
-
 		this->field = WID_NG_CLIENT;
 		this->last_joined = NetworkGameListAddItem(NetworkAddress(_settings_client.network.last_host, _settings_client.network.last_port));
 		this->server = this->last_joined;
@@ -791,10 +792,6 @@
 	 */
 	virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
 	{
-		if (data == 1) {
-			this->server = NULL;
-			this->list_pos = SLP_INVALID;
-		}
 		this->servers.ForceRebuild();
 		this->SetDirty();
 	}
--- a/src/network/network_internal.h
+++ b/src/network/network_internal.h
@@ -145,7 +145,7 @@
 void GetBindAddresses(NetworkAddressList *addresses, uint16 port);
 void NetworkAddServer(const char *b);
 void NetworkRebuildHostList();
-void UpdateNetworkGameWindow(bool unselect);
+void UpdateNetworkGameWindow();
 
 bool IsNetworkCompatibleVersion(const char *version);
 
--- a/src/network/network_udp.cpp
+++ b/src/network/network_udp.cpp
@@ -395,7 +395,7 @@
 
 	item->online = true;
 
-	UpdateNetworkGameWindow(false);
+	UpdateNetworkGameWindow();
 }
 
 void ClientNetworkUDPSocketHandler::Receive_MASTER_RESPONSE_LIST(Packet *p, NetworkAddress *client_addr)