-
Notifications
You must be signed in to change notification settings - Fork 168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ツールバーを非表示から表示に切り替える際にアイコンの状態を設定する処理を呼び出し #464
Conversation
1125863 で |
積極的なPRありがとうございます。 懸念の内容なんですが、描画が切り替わらない原因に心当たりがあるんです。
仮にウインドウの生成に 0.3秒以上 かかったとすると、 この PR でやろうとしてることは、 いまんとこ、裏が取れてなくて不安なので休日にゆっくり調べてみたい感じです。 |
ツールバーの生成に 0.3 秒以上かかるPCは窓から投げ捨てておきましょう。 |
押し続けるとキーリピートの速さでツールバーの表示・非表示が切り替わってさすがに変化を目で追えないと思います。 サクラエディタを起動直後だと 何回か繰り返すと、有効状態から無効状態に変化するのが確認できると思います。 |
ツールバーのウィンドウ生成の流れで、共有メモリが書き換えられる、というのが自分がわかっていないところです。どこらへんでその処理が行われているか教えて頂けないでしょうか? |
変更前41行目、変更後42行目の m_bDispTOOLBAR を指しています。 厳密には、各ツールバーボタンの有効無効切替は別の変数を見てるはずなので違うかも知れません。 |
あ、本当ですね。どうもありがとうございます。 再度コメント返信します。
一時的につじつまが合わない状態が生じたとしても後でタイマーで 「いや、駄目だ。このPRでそれもきちんと直さないと駄目だ。」と @berryzplus さんに執拗にコメントされたら、ターバンのガキがあなたの所へ行く事を祈願します。 |
あざっす。 これを見た感じだと、ツールバーの有効無効が設定される前に描画されちゃってるのかもです。 このPRでは、有効無効処理が走るタイミングが遅れる対策として、表示したらすぐに有効無効チェックを走らせる変更なので、発生事象に対する低減効果はあると思います。 |
元のコードの41行目~43行目を貼り付けます。 GetDllShareData().m_Common.m_sWindow.m_bDispTOOLBAR = ((NULL == pCEditWnd->m_cToolbar.GetToolbarHwnd())? TRUE: FALSE); /* ツールバー表示 */
pCEditWnd->LayoutToolBar();
pCEditWnd->EndLayoutBars(); 41行目では共有メモリ上の変数を書き換えています。 かなり端折った解説ですが、有効無効を設定する処理は(300 ms 間隔の)タイマーで動くので、これらの処理の実行タイミングと同期していません。
アクティブな編集ウィンドウに対しては問題が解消出来ると思います。アクティブではないウィンドウについては対策入れてません。 そちらはタイマー任せにしてますが |
書き忘れてましたが、キャプチャーソフトはScreenToGifというソフトで日本語表記にも対応してます。 |
分かりやすいですね。百聞は一見に如かず、って感じですね。 |
@beru さんへ。 |
rebase しました。あと必要のない変更は取り消しました。 差分は1行だけなので、とても単純な変更内容だと思います。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
対応ありがとうございます。LGTMです。
レビューありがとうございました。Merge します。 |
ツールバーを非表示から表示に切り替える際にアイコンの状態を設定する処理を呼び出し
キーボードの
Ctrl + 1
を繰り返し押してツールバーの表示切替を行っていると、非表示 → 表示 した直後にツールバーのアイコンの見た目が無効から有効に変化する場合がある事に気づきました。これはタイマーでツールバーのアイコンを設定する
CMainToolBar::UpdateToolbar
が呼び出されている為に、切替タイミングによってはまだアイコンの見た目が設定されていない状態が見えてしまう為です。この PR では
CViewCommander::Command_SHOWTOOLBAR
の中においても明示的に呼び出す事で、ツールバーを 非表示 → 表示 に切り替えた直後からアイコンが適切な表示状態になるようにしました。