rime / squirrel

【鼠鬚管】Rime for macOS
https://rime.im
GNU General Public License v3.0
4.54k stars 413 forks source link

部分應用(如Chrome)首次輸入候選框可能位於窗口外 #870

Closed LokChunYu closed 1 month ago

LokChunYu commented 2 months ago
iShot_2024-05-05_06 00 35

1、Chrome浏览器124.0.6367.119(正式版本)和edge浏览器版本 124.0.2478.80 (正式版本) ,macOS14.4.1,首次启动输入法,候选框仍在一角;

iShot_2024-05-05_06 03 05

2、“检查新版本”按钮点击不起作用。

LEOYoon-Tsaw commented 2 months ago
  1. 左上角的問題沒完全修復的話,那就再繼續研究吧,多謝反饋。 但我並不能成功復現你的問題,你能詳細描述一下如何復現嗎?
  2. 檢查新版本還不能用是故意的,過一兩週才會開始推送
LokChunYu commented 2 months ago

非常感谢回复。关于第一点,每次打开浏览器在输入框内首次会出现这样的问题。

LEOYoon-Tsaw commented 2 months ago

非常感谢回复。关于第一点,每次打开浏览器在输入框内首次会出现这样的问题。

那我確實無法復現,我的Chrome是123,Edge是124。打開瀏覽器第一次輸入沒有問題

doviscn commented 2 months ago

非常感谢回复。关于第一点,每次打开浏览器在输入框内首次会出现这样的问题。

那我確實無法復現,我的Chrome是123,Edge是124。打開瀏覽器第一次輸入沒有問題

Chrome 124,完全复现,只要新开标签页也默认光标焦点位置是在搜索框内的(比如Google、百度、淘宝),首次打字就会发现这个问题。

LEOYoon-Tsaw commented 2 months ago

反正我沒法復現,等別人研究吧(Chrome已升124)

https://github.com/rime/squirrel/assets/4469383/5cfadfe7-8290-4c0b-a8bf-6f1a1bf46809

cobaltdisco commented 2 months ago

反正我沒法復現,等別人研究吧(Chrome已升124)

Screen.Recording.2024-05-05.at.10.42.30.mov

需要在Google的主页输入框上进行,标签页的话是没法复现的。

不过我刚自己试了下,其实v16.2也有一样的问题。

LEOYoon-Tsaw commented 2 months ago

需要在Google的主页输入框上进行

我打開新標籤焦點默認在地址欄

yuhuangniu commented 2 months ago

需要在Google的主页输入框上进行

我打開新標籤焦點默認在地址欄

进入google首页:[https://www.google.com/],然后在主页的搜索框里输入,会复现这个问题

LEOYoon-Tsaw commented 2 months ago

確實,找到方法復現了。輪入google網址進入google,光標自動聚焦到搜索框,此時輪入,候選欄在窗口外

groverlynn commented 2 months ago

確實,找到方法復現了。輪入google網址進入google,光標自動聚焦到搜索框,此時輪入,候選欄在窗口外

  NSRect IbeamRect = NSZeroRect;
  [self.client attributesForCharacterIndex:0
                       lineHeightRectangle:&IbeamRect];
  if (NSEqualRects(IbeamRect, NSZeroRect) && _inlineString.length == 0) {
    if (self.client.selectedRange.length == 0) {
      // activate inline session, in e.g. table cells, by fake inputs
      [self.client setMarkedText:@" "
                  selectionRange:NSMakeRange(0, 0)
                replacementRange:NSMakeRange(NSNotFound, NSNotFound)];
      [self.client attributesForCharacterIndex:0
                           lineHeightRectangle:&IbeamRect];
      [self.client setMarkedText:@""
                  selectionRange:NSMakeRange(0, 0)
                replacementRange:NSMakeRange(NSNotFound, NSNotFound)];
    } else {
      [self.client attributesForCharacterIndex:self.client.selectedRange.location
                           lineHeightRectangle:&IbeamRect];
    }
  }
ksqsf commented 2 months ago

我傾向於認爲這是 Chrome 的 BUG。

  1. google.com 搜索條的 selectedRange 永遠是 {0,0} ,而在 Safari 和 Firefox 上無此問題。
  2. 幾乎所有輸入法,包括 macOS 自己的輸入法,在 Chrome 上都有這個問題。 image
LEOYoon-Tsaw commented 1 month ago

系統輸入法有同樣的表現,認為是Chromium的問題