diff options
author | rubidium <rubidium@openttd.org> | 2009-04-15 20:37:00 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-04-15 20:37:00 +0000 |
commit | d04ebf2fa5a894f14430d9dc059167140589956f (patch) | |
tree | 733a4607c46d51bc86a86445fc533685e2b3329c | |
parent | 3061d70387f48a4687688b8dc8fa6e34f4a80b85 (diff) | |
download | openttd-d04ebf2fa5a894f14430d9dc059167140589956f.tar.xz |
(svn r16065) -Fix: don't readd (and resolve) the last joined server each time the window gets repainted
-rw-r--r-- | src/network/core/address.h | 8 | ||||
-rw-r--r-- | src/network/network_gui.cpp | 14 |
2 files changed, 12 insertions, 10 deletions
diff --git a/src/network/core/address.h b/src/network/core/address.h index 212164c9d..863c43427 100644 --- a/src/network/core/address.h +++ b/src/network/core/address.h @@ -179,7 +179,7 @@ public: * @param address the other address. * @return < 0 if address is less, 0 if equal and > 0 if address is more */ - int CompareTo(NetworkAddress address) + int CompareTo(NetworkAddress &address) { int r = this->GetAddressLength() - address.GetAddressLength(); if (r == 0) r = this->address.ss_family - address.address.ss_family; @@ -193,7 +193,7 @@ public: * @param address the other address. * @return true if both match. */ - bool operator == (NetworkAddress address) + bool operator == (NetworkAddress &address) { return this->CompareTo(address) == 0; } @@ -203,7 +203,7 @@ public: * @param address the other address. * @return true if both match. */ - bool operator == (NetworkAddress address) const + bool operator == (NetworkAddress &address) const { return const_cast<NetworkAddress*>(this)->CompareTo(address) == 0; } @@ -212,7 +212,7 @@ public: * Compare the address of this class with the address of another. * @param address the other address. */ - bool operator < (NetworkAddress address) + bool operator < (NetworkAddress &address) { return this->CompareTo(address) < 0; } diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index 1aa201183..6f24c2aa9 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -120,10 +120,11 @@ protected: /* Constants for sorting servers */ static GUIGameServerList::SortFunction * const sorter_funcs[]; - byte field; ///< selected text-field - NetworkGameList *server; ///< selected server - GUIGameServerList servers; ///< list with game servers. - ServerListPosition list_pos; ///< position of the selected server + byte field; ///< selected text-field + NetworkGameList *server; ///< selected server + NetworkGameList *last_joined; ///< the last joined server + GUIGameServerList servers; ///< list with game servers. + ServerListPosition list_pos; ///< position of the selected server /** * (Re)build the network game list as its amount has changed because @@ -337,6 +338,8 @@ public: this->server = NULL; this->list_pos = SLP_INVALID; + this->last_joined = NetworkGameListAddItem(NetworkAddress(_settings_client.network.last_host, _settings_client.network.last_port)); + this->servers.SetListing(this->last_sorting); this->servers.SetSortFuncs(this->sorter_funcs); this->servers.ForceRebuild(); @@ -403,9 +406,8 @@ public: y += NET_PRC__SIZE_OF_ROW; } - const NetworkGameList *last_joined = NetworkGameListAddItem(NetworkAddress(_settings_client.network.last_host, _settings_client.network.last_port)); /* Draw the last joined server, if any */ - if (last_joined != NULL) this->DrawServerLine(last_joined, y = this->widget[NGWW_LASTJOINED].top + 3, last_joined == sel); + if (this->last_joined != NULL) this->DrawServerLine(this->last_joined, y = this->widget[NGWW_LASTJOINED].top + 3, this->last_joined == sel); /* Draw the right menu */ GfxFillRect(this->widget[NGWW_DETAILS].left + 1, 43, this->widget[NGWW_DETAILS].right - 1, 92, 157); |