2007/10/17 (水) 02:02:41 ryoji  
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7
[5129] IME Watcher対応について
data:6367 「IME Watcher 併用時の不具合」の件です。
IME Watcherは、キャレット所有ウィンドウのクライアント領域内のキャレット位置を取得し、キャレット所有ウィンドウ=フォーカスウィンドウとみなしてフォーカスウィンドウからの位置で情報表示しているものと思われます。
ごく一般的な処理構造のアプリではそれでOKなのですが、サクラではキャレット所有ウィンドウは各ビューであり、フォーカスはフレームウィンドウが持っています。
IME Watcherはサクラがそのような動作になっていることを知らないので、その分だけ上方に表示がずれているものと思われます。

一般的な処理構造になるようにしてみました。
→Patches#1814571 FocusActiveView1.patch
従来は普段CEditWndがフォーカスを持ち、CEditViewがキャレットを表示していましたが、フォーカスをCEditViewに持たせるように変更しています。
CEditWndのWM_SETFOCUSでCEditViewにフォーカスを移動し、キーボードからのコマンドはフォーカスを持っているCEditViewからCEditWndへルーティングするようにしています。

2007/10/17 (水) 21:45:15 AC  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
[5130] Re:IME Watcher対応について
▼ ryojiさん
すぐに確認できないのですが、
Alt+Tabで出る情報が違ったものになることないですか

2007/10/17 (水) 22:06:05 AC  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
[5131] Re2:IME Watcher対応について
追記:
昔あったなと思って検索したら↓でした。

[671] フォーカスが戻らない
▽ 2001/9/8

2007/10/18 (木) 00:42:48 ryoji  
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7
[5132] Re3:IME Watcher対応について
▼ ACさん
> [671] フォーカスが戻らない
> ▽ 2001/9/8

↑の報告をもとにWin98で再現テストしてみました。
・当時のバージョンでは[671]の現象が再現
・1.6.1.0+Patches#1814571では問題なし

でした。
当時の現象としては、フォーカスが戻らないというよりフォアグラウンドにもアクティブにもならなかったんですね。
以前、CTipWndはフォアグラウンドにいなければ不可視になるようにした覚えがあるので、おそらく間違っても当時のような現象は起きないと思います。
ちなみに、当時のバージョンでもフレームウィンドウがフォーカスを持つという構造は現在と同じだったようですね〜。

2007/10/18 (木) 01:03:40 ryoji  
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7
[5133] Re4:IME Watcher対応について
> 以前、CTipWndはフォアグラウンドにいなければ不可視になるようにした覚えがあるので、おそらく間違っても当時のような現象は起きないと思います。
ユーザに見せるとき以外は常時不可視にしたのでした。(^^;
>>data:4952 Re3: クリップアウト2000
そういえば、これも外部ツール対応の処置だった...

2007/10/25 (木) 03:53:16 ryoji  
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.8) Gecko/20071008 Firefox/2.0.0.8
[5138] Re:IME Watcher対応について
>サクラではキャレット所有ウィンドウは各ビューであり、フォーカスはフレームウィンドウが持っています。
アウトライン解析画面で、
自動的に閉じる:OFF
フォーカスを移す:ON
でフォーカス移動したとき

検索画面で、
検索ダイアログを自動的に閉じる:OFF
で検索して検索文字列が見つかったとき

などは、現状でもフォーカスがビューに移るんですね〜。
このあたりの動作はちょっと由来が不明です...(^^;

INCM/CMT
Cyclamen v3.81
[ut:0.010][st:0.000]