Fixes#4877.
If a keyboard is invalid for any reason (missing, wrong version),
then it would not appear in Configuration, which would break the
row indexing, causing crashes.
Cherry-picked from stable-14.0 branch.
Relates to #5316.
Keyman for mac is still reading from kmp.inf, but was treating it as
UTF-8. However, it is windows-1252 encoding. This was stopping Keyman
from loading the file due to the presence of a (C) symbol.
Keyman for mac *should* be loading kmp.json. This needs to be addressed
as a separate issues.
When working on a new build script, I tripped over the `-?` question
mark help parameter here, as it needs to be escaped. Opted to fix all
the instances in our scripts, although AFAICT there would not have been
current bugs arising from this, as there were no conflicting one
character options lower in the case list.
Fixes#4058.
Fixes#4528.
Prevents duplicate keyboards from appearing in the list. If there are
already duplicates in the list, they will be cleaned up the next time a
keyboard is added or removed in Configuration.
Fixes#3979.
Instead of loading help.keyman.com in the support frame, we now load a
local copy of the help. External links within the help will open in the
user's browser. This avoids issues of navigation to keyboard download
and other sites which won't work well.
Also, adds Back, Forward and Home buttons to the window so the user can
navigate more easily with mouse.
Finally, this means that the local help will always be synchronised with
the app version and brings the macOS help in line with the other
platforms.
Fixes#3972.
Ensure that window controllers are released when we close the window, so
that we are starting again when we want to use the window again in the
future.
There are a number of ugly patterns in this code, but fixing those is
outside scope for the beta.
Fixes#3945.
When the configuration window is opened via `showPreferences`, we were
not aware that the configuration window had been opened, so subsequent
references to it would recreate it.
If multiple copies of a package are saved by a browser, the browser will
typically append a ` (#)` to the filename, where `#` is a number. This
should be stripped off before installation to prevent duplicates of the
package being installed.
Fixes#2488.