Cairo on Windows (at least the latest available version from gtk.org
as of 2014-02-22, version 1.10.2) has issues with ClearType resulting
in glitchy anti-aliasing with CAIRO_ANTIALIAS_SUBPIXEL or
CAIRO_ANTIALIAS_DEFAULT, but not CAIRO_ANTIALIAS_GRAY, so we should
use that as a workaround until the Windows package is updated to use
a newer version of Cairo.
Fixes the map and its background being missing for all scenarios but
scenario 1, which has had its LOW_BIGMAP inclusion moved into its
corresponding journey map macro, TO_THE_UPROOTING.
Fixes the somewhat unlikely situation of him clobbering whichever unit
happens to be standing on 31,11 and causing it to disappear from the
game forever (especially bad if it's a player unit).
This commit is dedicated to my loyal Knight Haldiel, who became victim
to this oversight.
Previously, the Unknown icon only received TC if the leader unit for
that side supported TC, and it'd only use the source palette specified
in the unit configuration. Our Unknown icon, however, always needs TC,
and it must always be on the magenta palette.
This truncates long Advanced Preferences list entry labels and values
with ellipses using hardcoded character count limits in order to avoid
stretching out the listbox too much over the dialog's width.
Currently, this is notably necessary for the German translation.
The character count limits chosen for this commit (46 for the label, 8
for the value) only really work with the basic ASCII character set. Some
Unicode characters may be rendered wider. Furthermore, the Preferences
page selection list may container longer entries that push this listbox
further to the right, closer to the dialog's right edge.
Also, I really hope most languages have words for 'yes' or 'no' that are
at most 8 characters in length or can at least be read without ambiguity
when truncated to that limit. At least none of the translations we
support which have translated those words hit the limit.
(thunderstruck, you may want to review this.)
It appears that using a a function or method that returns a temporary as
the second argument of BOOST_FOREACH does something unexpected:
BOOST_FOREACH(const config* faction, engine_->flg().choosable_factions()) {
...
}
mp::flg_manager()::choosable_factions() returns a new object by value
rather than reference. Somehow this may result in invalid memory
accesses with some Boost and gcc versions (e.g. gcc 4.6.3 and Boost
1.46.1 from the bug report crashes, gcc 4.8.2 and Boost 1.54.0 here does
not), apparently.
I don't know the code well enough to determine whether
choosable_factions() returning an object by const value rather than
const reference is a typing mistake, so for now create a temporary const
reference before the BOOST_FOREACH loop.