There's an issue with textboxes across separate window instances (e.g.
when firing up the New Folder dialog in the file dialog) each getting a
blinking cursor simultaneously displayed on the screen due to timer
events persisting even when a GUI2 window isn't running. This may cause
repaint issues since the whole textbox may need to be redrawn each time
the timer fires, so it's best to disable it until I figure out a better
way to implement a unique global blinking cursor.
This is done because the code will not complain but silently produce
non-sensical results if, for example, the filter is passed as the first
argument to get_visible_units().
Users can add and remove bookmarks from the end of the bookmarks list.
These correspond to the currently viewed directory and have its name as
their label. It's not possible to remove hardcoded bookmarks. A bookmark
may only be removed after selecting it.
In order to ensure that users will be able to remove their own bookmarks
if they match predefined paths, the bookmarks bar now matches items from
bottom to top instead of the other way around.
The path label above the fileview now stands on its own without the
"Location:" label since it's self-explanatory for anyone who's managed
to get this far and install Wesnoth. The Delete and New Folder buttons
have had their order reversed so that destructive actions are on the
side opposite to the dialog's control buttons (OK/Cancel), the "Places"
heading no longer has a colon.
The bookmarks bar holds predefined bookmarks (as in the stuff
src/desktop/paths.hpp exposes) and allows users to easily browse to them
in a single click. It will eventually be possible for the user to add or
remove custom bookmarks as well.
I might add a method to disable specific irrelevant bookmarks later, not
sure (e.g. nobody cares about the preferences dir when trying to find
wesnothd).
This is used by all widgets that inherit from the textbox abstract
class, ttext_. The cursor is updated every 750 ms by toggling the
cursor alpha every time. When the cursor position is set by a method
(e.g. in reaction to a keyboard event), the cursor is reset to full
alpha, and the blink timer restarted.
The color attribute specifically doesn't support formulas. Adding
support for formulas to it would present us with the issue that commas
are already part of the formula language, so we'd need to update all
existing instances accordingly. So, instead, there's this short hack
used for a very particular piece of functionality coming in the next
commit.
For some reason, I swapped these grow factors in the past since the chatbox was growing... not sure why.
It works fine like this, and plus, the chatbox is now equal in height those in Staging and Join.
This makes it so the "selected" segment of the groove (towards the
slider origin) is drawn with a brighter color than the "empty" segment
(opposite from the origin). Since this obviously wouldn't work with
RGB #FFFFFF, and the color is too distracting anyway (it was pretty much
the only widget using the general *text* color), we now use the standard
UI border colors to match buttons, checkboxes and so on. This should
hopefully help with harmonizing Wesnoth's UI color scheme across the
board.
For this purpose we also introduce a macro for a darker/shaded disabled
text color, used for the unselected segment of disabled sliders.
The standing animation prevented the new unit type from appearing on the map. Once it showed, scrolling made it less noticable; so pre-scroll to Karrag and hold there for a while. Also, switching back failed to show immediately due to a missing redraw.
The scene makes no sense at all if you don't capture a village. So, if you sight the Masked Dwarves before you find Ollin, have him appear and run the conversation!
When you lose the last Mage from Master Perrin’s academy, you lose the ability to recruit Mages immediately instead of at the start of the next scenario.
Also, the check was omitted from S11.
Ratheln must remain a Hero thoughout this scenario since, if he dies, the end sequence suffers terribly. On EASY, for later scenario, he is no longer a Hero; simply Loyal.
It was possible to bypass Ratheln. Use enter_hex to stop the triggering unit, and extend the tripwire to the full height of the map. No need to check Ratheln is not there since this is a one-shot which creates him.
Separate commit because this is a logic change. Use the previous owner (owner_side) to determine if the village should spawn indigenous units. This removes a large number of variable artifacts.