/ 最近 .rdf 追記 編集 設定 本棚

脳log[20090622] メニューバー右端のメッセージ表示改善



2009年06月22日 (月) 関数の外の const intと static const intは同じ?

[SakuraEditor] メニューバー右端のメッセージ表示改善

縦書き編集機能とか実装できるほどのスキルがあればいいんだけどねえ。


2chに化けるという書き込みがあって試してみたら表示が消しゴムで消すように欠ける。描画漏れだと思ったんだけど、後で調べたらそもそもメッセージを保存していなくて再描画するつもりがない。だったら改善す"べき"とまでは思えないんだよね。(タイポのようなものの指摘はできても、自分の考えを押しつけることまではできないし)


ステータスバーが非表示のときにメニューバー右端に表示されるメッセージの、再描画に対応。一時メッセージだとしてもメッセージが半欠けの状態で表示されてたらバグととられても仕方ないから。> fix_menubarmessage.diff

この修正中にこんな処理が行われていたことを知ったのだけど……

 // 編集ウィンドウ切替中(タブまとめ時)はタイトルバーのアクティブ/非アクティブ状態をできるだけ変更しないように(1)	// 2007.04.03 ryoji
 // 前面にいるのが編集ウィンドウならアクティブ状態を保持する

タブ切り替え時に二つのサクラエディタウィンドウが重なる瞬間があって、Aero Glass効果が有効だとこの時にタイトルバーの透明度が下がる(色が濃くなる)。結果、対策もむなしくちらついて見える。これに対応した対処法はあるかな?


 ツッコミを受けての追記。

行・列番号の表示よりも右の部分にゴミが表示されます。

Vistaしかないので制御文字が半角空白に置き換えられたときに区別できるように、メッセージの余白を「 」ではなく「*」で埋めて表示してみたけれど表示は変わらない。この、メッセージの余白を埋める文字がすべてゴミになっているのだろうか。2chの

ステータスバーを消すとメニューバーの右端が化けちゃうんだけどどうすれば

というのを読んで俺は表示が欠けることを指して化けると言っているのかと思ったんだけど(繰り返すけど Vistaだとゴミは見えないので)、この書き込み主は Windows2000でも使っていて半角の「・」のことを指して化けると言っている可能性もあるかも(俺がバグを仕込んだのではないと思いたい)。

タブ切り替え時のちらつき防止はノーアイディア(あったら書いてる)。せっかく見映えの細かいところにまで気が配られているのに自分の環境で働いていないってのは悲しいから、Aero Glassにも対応できたらいいよね。


_tcsncpyが、コピー元が短いときにコピー先の末尾に埋める '\0' が「・」に変換されるんだ。Cの林立する文字列操作関数が大嫌いでいつも(といって片手で数えられるほど)は std::stringに逃げるんだよね。元々のソースはちゃんとやってたのに、俺がテケトーなことをしたわけだ。確保した領域の一つ先に書き込むとか言い訳できないミスもしてるし……。

今度は右端に埋め文字(「 」の代わりの「*」)が見えた > fix_menubarmessage(rev2).diff


さらなるチョンボ(泥沼の様相を呈してきました)。さっきの改訂でメッセージが空になることがなくなったので、表示したメッセージのクリアが行われないはずだ。

もう最後にしたい > fix_menubarmessage(rev3).diff

本日のツッコミ(全1件)
ryoji 2009年06月22日 (月) 15:57 JST

パッチ(fix_menubarmessage.diff)を適用したものだと、<br>行・列番号の表示よりも右の部分にゴミが表示されます。<br>CEditWnd::PrintMenubarMessageの変更ミスだと思いますが...<br><br>XPやVistaだとNULL文字のような制御文字はすべて半角空白になる<br>ので気づきにくいかもしれないですが、9x/2000だとたいてい半角の<br>「・」で表示されるので、はっきりゴミとして見えます。<br><br>タブ切り替えの処理なんかも、OS依存の手続きを避けたうえで、<br>全OSで問題なく、平均的にはうまいこと動くようにあれこれと<br>何ヶ月もかけて試行錯誤・テストを繰り返し、かつ特定の操作<br>手順でだけ発生する問題報告なども反映してきた結果、<br>現在の(少し煩雑かもしれない)コードに落ち着いているです。<br>変更のアイデアがあったとしても動作確認はかなりたいへんだと<br>思います。<br>#多少見苦しくなるOSがあるのは許せるけど、致命的に見苦しく<br>#なったり誤動作するOSがひとつでもあったらNGという基準で<br>#やっているので。。。