previously this attribute always had to be spcified in networked mp.
This was specially annoing in unsyced contexts where this attribute was
ignored anyway.
See http://gna.org/bugs/?23686
'
This gets rid of invalid tags ([event]) serialized at toplevel when the campaign is started
and all the util macros being redefined by an in-scenario inclusion
This fixes an issue where visible children widgets can be interacted
with even if one of their parents is hidden. This fix is particularly
important for the implementation of layer selection in tstacked_widget.
This effectively allows us to use stacked_widget as part of the
implementation of tabbed dialogs like Preferences.
The most important thing here is making sure individual layers are
selected so that they can receive events. This works fine in testing,
and it's much easier for me to take an existing widget and adapt it for
my purposes rather than build a new one from scratch.
Another important thing is not selecting the same layer twice. This
apparently deselects it instead.
Finally, existing applications like the titlescreen are unaffected.
font::manager::init() had a call to the font::describe_versions()
function I just dropped since there's little point in having that line
there when one can just run wesnoth --version to get the full table now.
Registers library versions in a single structure that can be queried
later as many times as necessary (say, from the game UI) instead of
relying on recording this information in different object files in an
inconsistent fashion. Also, it provides a pretty formatter for console
usage (e.g., in --version).
libpng also gets to join in the fun.
This is more efficient, specially when std::advance is used on these
iterators
Also this migth fix a bug related to
boost::iterator_range<config::const_child_iterator> on boost 1.57 and
later
Using synced_context::ask_server_choice has some advantages over the
previous implementation:
Instead of calculating which client controls a side separately on each
client, we now calculate that on the server and send the result to the
clients. This makes it more robust against calculation mismatches on the
clients (OOS).
The mechanism which notifies the server about controller changes is more
robust because previously only the currently active side sent that message
to the server, but now all clients send that information to the server (and
the server ignores non-first notifications). Specially this fixes the rare
case that none of the clients control the currently active client during
that event (which can for example happen if the currently active side
disconnected from the game after the action was invoked but before the side
was modified on that client.).
We automatically get non-undoability (just like for random seed requests)
A format string with a trailing '%' character at the end would cause an
implementation detail to dereference the end iterator of a string. Since
the underlying storage is a null-terminated string, this would be
harmless in practice.
Found by cppcheck.