Commit graph

151 commits

Author SHA1 Message Date
Marc Durdin
92a3000c8d chore(windows): fix comments in Makefile
Shockingly bad choice for nmake Makefiles to not allow whitespace before
comment # marker.
2023-03-20 07:30:55 +07:00
Marc Durdin
1a3cc078b5 chore(windows): sentry cleanup and signing
Addresses review comments.

Use SENTRY_SDK_VERSION where possible, and codesign sentry components
during build.
2023-03-19 07:35:06 +07:00
Steven R. Loomis
bc14f18460 Merge remote-tracking branch 'origin/master' into chore/core/mergemaster4-epic-ldml 2022-12-15 17:55:13 -06:00
Marc Durdin
c0e640fe73
Merge pull request #7710 from keymanapp/chore/windows/keyman-debug-symbols
chore(windows): include debug info in keyman build
2022-11-14 11:57:26 +11:00
Marc Durdin
2e58174092 chore(windows): include debug info in keyman build
Same as #7600, but for keyman.dpr.
2022-11-14 10:52:20 +11:00
Marc Durdin
0eb39dc9ea fix(windows): click in 1 pixel high box in Language Switch window caused crash
Fixes #7698.

Due to a `>` instead of a `>=` check, there was a one pixel high box at
the bottom of each list of input methods for each language which would
reuslt in an invalid value for `FNewHoverKeyboard`
(`lang.KeyboardCount`).

As well as fixing this, I changed the result for clicking below the
input method list to the more logical last item in the list rather than
the first.
2022-11-12 10:23:32 +11:00
Marc Durdin
4738b6a514 fix(windows): Improve shutdown robustness
Relates to KEYMAN-WINDOWS-B.

While this doesn't address the root cause of the exception, it should
prevent this unhandled exception, and adds breadcrumbs to help us see
which code path might be triggering the issue.
2022-11-10 16:10:49 +11:00
Steven R. Loomis
93a9509302 chore(core): delete crc32.cpp and crc32.pas from some places 2022-09-21 18:13:19 -05:00
Marc Durdin
385045e978 chore(windows): fixup refs and move StockFileNames
* StockFileNames.pas was missed in earlier moves.
* Cleaned up references in various dproj files
* Fixed up broken references to common files
2022-06-23 09:47:59 +10:00
Marc Durdin
2aaa31eae2 chore(windows): move general keyboard units to common 2022-06-23 06:33:16 +10:00
Marc Durdin
331c9d2d71 chore(windows): move shared general units to common 2022-06-22 13:58:58 +10:00
Marc Durdin
eba8a4ab35 chore(windows): move CRC32.pas to common 2022-06-22 10:36:55 +10:00
Marc Durdin
46c314cbb7 chore(windows): move BCP47Tag.pas to common 2022-06-22 10:35:18 +10:00
Marc Durdin
092c149f31 chore(windows): delete unused WideStringClass.pas 2022-06-21 09:55:52 +10:00
Marc Durdin
34d3ea5899 chore(windows): delete unused MLang.pas 2022-06-21 09:51:02 +10:00
Marc Durdin
7583fa64fe chore(windows): delete unused exceptionw.pas 2022-06-21 09:46:01 +10:00
Marc Durdin
9dbe33e36e chore(windows): move KeymanVersion.pas to common and update refs 2022-06-21 09:39:04 +10:00
Marc Durdin
ad4039b5db chore(windows): move RegistryKeys.pas, ErrorControlledRegistry.pas, Glossary.pas, ScanCodeMap.pas to common 2022-06-21 09:39:03 +10:00
Marc Durdin
f163ceb6d5 chore(windows): move Unicode.pas to common 2022-06-21 09:39:01 +10:00
Marc Durdin
ff9a4c5edb chore(windows): move GetOSVersion to common 2022-06-21 09:39:00 +10:00
Marc Durdin
9db6293b84 chore(windows): move usp10 to common 2022-06-21 09:38:59 +10:00
Marc Durdin
58230160b0 chore(windows): move CleartypeDrawCharacter to common 2022-06-21 09:38:58 +10:00
Marc Durdin
4a15809ae1 chore(windows): move PaintPanel to common 2022-06-21 09:38:57 +10:00
Marc Durdin
4b2fa6cc05 chore(windows): move keybtn and onscreenkeyboard to common
Components are related so moved together.
2022-06-21 09:38:56 +10:00
Marc Durdin
636cbc0469 chore(windows): update refs to FixedTrackbar 2022-06-21 09:38:55 +10:00
Marc Durdin
7ff83dcc1f chore(windows): move ExtShiftState to common 2022-06-21 09:38:52 +10:00
Marc Durdin
ba642cf06d chore(windows): rearrange global/delphi/ui units
Moves:
* Keyman.System.Util.RenderLanguageIcon.pas -> common
* UfrmKeymanBase.dfm -> kmshell
* UfrmKeymanBase.pas -> kmshell
* UfrmWebContainer.dfm -> kmshell
* UfrmWebContainer.pas -> kmshell
* XMLRenderer.pas -> kmshell
* UFixupMissingFile.pas -> kmshell

Also:
* Removes duplicate GenericXMLRenderer.pas
* Removes unused unit references in keyman.dpr
2022-06-13 10:01:39 +10:00
Marc Durdin
1eff4dbca4 chore(windows): move global/delphi/visualkeyboard to common 2022-06-13 06:57:46 +10:00
Marc Durdin
6a56fca2d6 chore(windows): move global/delphi/tlb to common 2022-06-13 06:29:23 +10:00
Marc Durdin
99b04a4240 chore(windows): move global/delphi/charmap to common
Moves character map units to common folder, and updates project refs.
2022-06-13 05:54:23 +10:00
Marc Durdin
36b70758a9 chore(windows): remove unused OnlineConstants 2022-06-12 14:26:53 +10:00
Marc Durdin
3632582522 chore(windows): move keymanversion.h to common 2022-06-12 13:56:13 +10:00
Marc Durdin
1006be8914 chore(windows): update sentry references 2022-06-06 15:48:24 +10:00
Marc Durdin
de87a5199b chore(windows): update dcpcrypt proj refs 2022-06-02 10:39:26 +10:00
Marc Durdin
4992472561 chore(windows): update dcpcrypt refs 2022-06-02 08:51:58 +10:00
Marc Durdin
ce1cf9d56a chore(windows): update resource references 2022-06-01 06:56:43 +10:00
Ross
bf44bc8ff6 chore(windows): Remove core icon from system tray 2022-02-28 16:38:18 +10:00
Marc Durdin
c9dc10cc33 chore(windows): replace mkver with mkver.sh 2021-12-08 07:10:29 +01:00
Marc Durdin
ff01477075 chore(windows): use findstr instead of Borland grep
Removes one more dependency on Delphi tools
2021-12-08 07:10:07 +01:00
Marc Durdin
dee896b4c6 chore(windows): move from Borland make to nmake
While it may be smarter to move to a different build system altogether,
it is also a *lot* more work. This was a fairly minor syntax refresh to
get nmake working with our existing Makefile system. This is now no
longer compatible with Borland make, so you will need to use `nmake` to
build.

The presence of NMAKE.md informs builds systems that nmake should be
used instead of make.
2021-12-06 12:47:31 +04:00
Marc Durdin
e00ff063c8 chore(windows): version.rc use macros instead of mkver 2021-12-05 17:12:56 +11:00
Marc Durdin
4523a04409 chore(windows): address review comments and fix installer bug 2021-09-29 15:05:41 +10:00
Marc Durdin
f82fa96449 chore(windows): Keyman Core UI and Settings
* Adds a taskbar icon to highlight to user when Keyman Core library is
  in use, with a crummy core.ico. This visual feedback will be removed
  in late beta.
* Renames the 'use common core' registry setting to match other flags
* Adds a System Setting to make the Keyman Core setting visible in
  System Settings and kmconfig.
2021-09-29 13:51:51 +10:00
Marc Durdin
845d65e5e4 chore(windows): remove backup build step
We no longer need to backup debug files as they are saved to the symbol
store during a release build. This reduces the amount of storage
required for a release build and should speed up the build also.

Also fixes the broken build where backup had not been updated for the
new consistent build paths.
2021-07-07 08:09:26 +10:00
Marc Durdin
deb01d1a63 chore(windows): make build paths consistent
Move to all projects using bin/ and obj/ for outputs, and
cleanup all Makefiles and project files accordingly. Remove
some obsolete projects along the way. Cleanup .gitignore
also.
2021-07-01 07:38:00 +10:00
Marc Durdin
c4d7a6d58c fix(windows): start keymanx64 with ShellExecute
Fixes #5196.

It is complicated to start a `UIAccess=true` process with
`CreateProcess`, so instead we'll use `ShellExecute`. This means passing
a PID instead of a process handle to keymanx64.

I took the opportunity to refactor slightly the main function in
keymanx64, as the failure modes were pretty WET.
2021-05-31 19:26:36 +10:00
Marc Durdin
8e435f67d1 chore(windows): cleanup old .dof, .bdsproj and .cfg files
Fixes #519.

I have removed these .cfg, .dof, and .bdsproj files from the primary
projects in the Windows source. There is some ambiguity as to whether
.cfg files are used by the command line compiler (I checked with procmon
and they *are* read by dcc32.exe), so we will need to make sure that
no adverse changes have been made by this. In theory at least, the
.dproj data trumps .cfg data -- and all the projects in question have
a .dproj file -- so this should be a safe cleanup.

I have opted not to touch the /buildutils, /ext, /support and
/test folders at this point.
2021-05-24 10:22:28 +10:00
Marc Durdin
c078661a0f chore(windows): remove unused keymanx64 parameter
With the recent refactor in #5060, we no longer need the main form
window handle parameter in keymanx64.
2021-05-11 16:03:19 +10:00
Marc Durdin
fbcfd62678 fix(windows): refactor controller windows
Fixes #5004.

This cleans up the use of controller windows. A single window is now
given the responsibility of being the master controller, which receives
messages from Keyman32 and other components around UI activation, active
keyboard, etc.

The master controller is keyman.exe's `TApplication` window, which does
not get destroyed and recreated, unlike the main form window.

Any thread which has responsibility for Keyman UI (keyman.exe main
thread, keymanx64.exe main thread) is also registered as a controller
thread. A controller thread has special handling for interactions with
keyman32 around focus tracking.

Caveats:

* While keymanx64 does not have a visible window and thus probably does
  not need to be registered as a controller thread, it doesn't really
  hurt.
* Note that keymanx64 registers the 32-bit controller thread as well,
  which again is probably unnecessary as the 64-bit process cannot
  interact with the 32-bit thread.
* Keyman's main form still handles wm_keyman_control messages, as there
  are a number of other components which post to that window (e.g. text
  editor, com library visual keyboard interactions). Unlike the original
  problem trigger, the reference handle is not stored long-term and so
  there is unlikely to be a problem with main form window re-creation
  causing an issue in these contexts.

There are several TODO items in this which I will address in follow-ups,
to reduce the scope of these changes.

I hope to cherry-pick this to stable-14.0, but will run for a while in
15.0 before doing so.
2021-05-11 14:47:17 +10:00
Marc Durdin
ee6f8590a6 fix(windows): make keymanx64 responsible for its own lifecycle
Fixes #4976.
Fixes KEYMAN-WINDOWS-2K.
Fixes KEYMAN-WINDOWS-3F.
Fixes KEYMAN-WINDOWS-5A.
Fixes KEYMAN-WINDOWS-3E.

This fix reworks keymanx64's lifecycle, moving responsibility for
process shutdown from keyman.exe to keymanx64.exe.

This eliminates the need for interprocess communication, and simplifies
the startup and shutdown of keymanx64.exe. Removing this means that we
can more safely handle situations where two instances of keymanx64 may
be started, as one of them will rapidly terminate when it discovers that
its parent process has disappeared.
2021-04-30 15:02:18 +10:00