The lobby calls tlistbox::set_row_shown() every single time there is *any*
change in the gamelist. Most of the time, the visibility of rows hasn't
even changed.
Tlistbox::set_row_shown() calls content_resize_request() to determine if
twindow::invalidate_layout() needs to be called. Content_resize_request()
unconditionally calls show_content_rect() that checks if the selected item
is visible and scrolls to it if it isn't.
With this commit, set_row_shown() returns early if visibility of rows
hasn't changed. This reduces the frequency of scrolling.
This commit isn't a complete fix, since the selected game will still come
into view when, for example, a new game is created. However, at least this
improves the situation.
Instead of immediately regenerating the side configs and pushing them to server in every widget callback (which
is especially expensive in the case of the gold and income sliders), we push updates to the server when the
network callback is called if the state_changed_ flag has been set.
This also cleans up some code from the previous attempt to make both the host and clients utilize this dialog.
Additionally, this fixes gold/income changes not being sent to the server.
For some reason, the left/right borders made them even more out of alignment. Optimally, these should still be
shifted 5 px to the right each, but that's a problem for another day (it'd likely mean a new label definition).
I figure it's silly to state different minimum requirements for various
Boost libs when different versions are not guaranteed to be compatible.
Also add some minor notes related to Mac and Windows.
This adds a large number of people gleaned from the logs with:
git log --merges --since=Jan.1.2015
If any of the people added in this commit wish to change how they
are referenced, they are of course free to contact us.
Turns out unsigned long(true) is not a comprehensive enough value for
setting a boost::dynamic_bitset to have all bits initially on.
Regression introduced by commit
fe08701b7ca3639b17dca20023d2bb34433042c6.
Fixes the more visible half of bug #25073.
This is the first step towards creating artificial load and testing if the
GUI2 lobby still performs well under load.
I also implemented ability to leave the game in the GUI2 MP staging dialog.
Previously the server continued to believe that the player remains in the
game when he/she closed the MP staging dialog.
This occurred when selecting a new faction if the old selection's leader choice had an index value
larger than the size of the new selection's leader list.