Commit Graph
47 Commits
Author SHA1 Message Date
fanlusky 608eac7552 Fix the issue where the menu displays a scrollbar. 2026-08-09 21:24:51 +08:00
fanlusky ac8d47ef09 Change the candidate window to a stable transparent host window occupying about 1/4 of the screen (updating with the cursor monitor/DPI), with content wrapping according to the host width and scrolling according to the host height, and fix the issues of high-DPI edge cropping and inconsistency between measurement and CSS limits. 2026-08-08 21:37:09 +08:00
fanlusky 73fd24b53d Strengthen the adaptive sizing of the FTB when the resolution changes. 2026-08-08 19:49:19 +08:00
fanlusky 5a11c7dc87 Attempt to fix the issue where the candidate window is truncated in some windows, such as in CAD. 2026-08-04 12:20:33 +08:00
fanlusky f0b9932c3e Continue trying to stabilize the WebView2 loading process during server initialization. 2026-07-31 19:51:56 +08:00
fanlusky c029fb7222 fix(webview2): prevent TOPMOST from blocking controller creation in uiAccess process
In a uiAccess=true process, a WS_EX_TOPMOST parent window causes
WebView2's internal cross-process SetParent to be rejected by UIPI,
returning E_INVALIDARG (0x80070057) from CreateCoreWebView2Controller.

This was triggered when the watchdog restarted the server while the IME
was already active: the floating toolbar showed early, which mistakenly
raised the DWM-cloaked (warmup) menu host to TOPMOST before its
controller existed. Manual launches never hit this because the IME was
inactive at startup time.

Changes:
- Gate RaiseTrayMenuAboveSmallWindows on menu controller existence so
  a cloaked warmup host is never prematurely pinned TOPMOST.
- Strip WS_EX_TOPMOST from any host window before requesting its
  controller; the lazy-topmost gate re-pins all three once ready.
- Serialize controller creation (one in-flight at a time) to avoid
  E_INVALIDARG from concurrent CreateCoreWebView2Controller calls on
  the same environment.
- Rotate past a persistently failing host so it cannot starve siblings.
- Harden LOCALAPPDATA resolution with SHGetKnownFolderPath fallback.
- Increase watchdog restart delay to 2s for user-data-folder lock drain.
- Add diagnostic logging (traymenu-diag.log) for WebView2 init states.
2026-07-30 03:08:42 +08:00
fanlusky 2bacc57b91 fix(candwnd): measure wrapped horizontal candidates correctly
Allow candidate items to wrap at the width limit so the native window height accounts for additional rows.
2026-07-29 23:13:23 +08:00
fanlusky 380e465bb5 feat(theme): add per-surface themes for Direct2D input interfaces
- add independent theme settings for the emoji panel, on-screen keyboard,
  handwriting panel, and voice input overlay
- support follow-global, dark, and light modes
- add light color palettes for each Direct2D interface
- load the shared theme configuration when standalone panels start
- reload the voice overlay theme before it is displayed
- expose the new theme options through the settings backend
2026-07-28 16:14:14 +08:00
fanlusky 27885a6fa4 fix(candwnd): use stable 720 DIP host with internal card offset
Keep the transparent candidate HWND at wrap-cap width so right-edge
growth adjusts MarginLeft/Top instead of SetWindowPos-moving the host,
which was flashing through layered transparency. Measure/layout keep
horizontal candidates on one row and wrap only inside long items.
2026-07-28 04:06:16 +08:00
fanlusky 02d5a3ff37 fix(candwnd): measure and size candidate wrap at 600 DIP
Force wrap-aware measure, serialize FineTune after measure content
updates, and preserve flip-up host height via MarginTop.

feat: lazily load single-letter Pinyin candidates

- query the top 24 single-letter candidates from the database
- load the complete candidate list on the first page-down action
- apply the same behavior to Shuangpin and Quanpin
- resolve Shuangpin initials according to the active profile
- preserve candidate frequency adjustment and pinning
- disable deletion for single-letter candidates
- add regression tests for Shuangpin v-to-zh mapping and lazy expansion
2026-07-27 16:12:46 +08:00
fanlusky e2af2c49d2 chore(logging): remove server debug logging
- remove OutputDebugString calls across the server
- remove spdlog calls and file logger initialization
- disable IPC and WebView debug output
- remove temporary database performance instrumentation
- update the MetasequoiaImeEngine submodule revision
2026-07-27 15:13:51 +08:00
fanlusky b01a73e336 fix: stop horizontal candidate wrap flash on long lists
Keep horizontal candidates on one line with max-content/nowrap, and resize the host/WebView before painting so content is never laid out in a still-narrow viewport.
2026-07-24 02:07:27 +08:00
fanlusky f70804d89f Defer small-window TopMost until WebViews are ready on first show.
Avoid uiAccess + HWND WebView2 init races that blanked the candidate UI,
and stop parking the floating toolbar off-screen until WebView starts.
2026-07-23 11:28:39 +08:00
fanlusky 611ba63321 Add anti-multiple-instance to the applications. 2026-07-20 16:55:56 +08:00
fanlusky fd0cff71e9 Fix the issue where the language bar right-click menu does not respond. 2026-07-17 23:38:14 +08:00
fanlusky 6a3ddeb1b6 Bidirectional synchronization of the paging settings in the settings interface. Support comma, period, and slash for page turning, support PageUp and PageDown for page turning, support up and down arrow keys to move the highlighted candidate selection, and left and right arrow keys to move the caret. 2026-07-12 22:28:14 +08:00
fanlusky a53d3c76c0 [Regression]: The boundary overflow issue of the vertical candidate window should be determined and resolved based on the maximum possible window size. 2026-07-11 18:42:59 +08:00
fanlusky 29ac206583 Fix the position offset issue of the horizontal candidate window when encountering boundary overflow. 2026-07-11 17:03:01 +08:00
fanlusky c83b0f6ead Refactor 2026-06-19 22:05:53 +08:00
fanlumaster a66c1f1561 Wrap log with macros. 2026-03-14 00:21:34 +08:00
fanlumaster 6a815c069b remove log new lines 2026-03-12 02:23:26 +08:00
fanlumaster 9bfa8160e1 log format 2026-03-12 01:34:41 +08:00
fanlumaster 28d11c0d9f [config]: Read toml config file from appdata location 2026-01-30 12:27:23 +08:00
fanlumaster 69efed6068 [ftb]: Hide ftb when fullscreen detected 2026-01-03 14:01:09 +08:00
fanlumaster bbcce141be [ftb]: Adjust initial position 2025-12-31 15:36:18 +08:00
fanlumaster f6382391db [fix]: fix menu wnd size when started 2025-11-10 00:01:06 +08:00
fanlumaster b3696e26fc [feat]: Conduct an experiment where the keymap hint is placed below the candidate wnd 2025-11-09 18:06:52 +08:00
fanlumaster cd7297de6f [log]: add line break 2025-11-08 16:37:39 +08:00
fanlumaster 1441fbc387 [refactor]: tidy some codes 2025-10-31 16:07:26 +08:00
fanlumaster f3fe087075 [fix]: fix get preedit sometimes string out of range 2025-10-28 16:50:19 +08:00
fanlumaster c9e4ec2685 squashed commits for create word feat 2025-10-25 12:48:22 +08:00
fanlumaster 081602f518 [ui]: Make webview2 rendering more stable 2025-09-18 13:54:46 +08:00
fanlumaster 9849b09cd5 [ui]: Adjust size and position in some cases 2025-09-17 17:18:40 +08:00
fanlumaster a934f1d988 [UI]: Make window not flickering when especially when bottom edge touch the monitor edge 2025-06-17 19:15:45 +08:00
fanlumaster 5b19b102b3 [Render]: Replace sciter with direct2d and directwrite, now only support basic layout(hard code) 2025-06-16 17:04:05 +08:00
fanlumaster 976e17864a [env]: Make it more generic 2025-05-31 06:44:30 +08:00
fanlumaster 886977d308 [dev]: webview2 appdata path 2025-05-14 16:30:09 +08:00
fanlumaster d83644002b [fix]: Telegram workaround 2025-05-06 07:17:04 +08:00
fanlumaster c3174d23cd [feat]: VK_SPACE to commit first candidate 2025-04-23 03:22:07 +08:00
fanlumaster 1f7bb99c5d [chore]: add some utils 2025-04-16 00:47:10 +08:00
fanlumaster 436782c8b4 [feat]: UI 2025-03-29 10:52:19 +08:00
fanlumaster be6c0bdd1d [feat]: adjust window 2025-03-29 09:54:26 +08:00
fanlumaster 9e90c4280d Make candidate window position more accurate 2025-03-28 07:37:12 +08:00
fanlumaster 6a1d360b09 adjust candidate window position when coming across edge condition 2025-03-27 16:27:30 +08:00
fanlumaster b48b731a1b get webview dom size 2025-03-27 11:25:39 +08:00
fanlumaster 2dd6a19ffc set up spdlog 2025-03-26 17:34:43 +08:00
fanlumaster efa57fe37f refactor 2025-03-26 16:36:21 +08:00