Bug 1540 IMEの未確定文字の反転はシステムカラー(選択色)を使うべき(エディタの背景色にあわせて、必要なら反転もさせるべき) #2
初回投稿日時: 2005年09月09日02時26分18秒
最終更新日時: 2005年09月09日03時41分01秒
カテゴリ: Mozilla Core
SNS:
Tweet (list)
パッチを分割して提出して時間をかけている間にパッチの単純化方法を考慮中。
よくよく考えてみればDrawSelectionIterator::GetSelectionColors
と、これで必要としている各種色情報がDrawSelectionIterator
にあること自体がおかしいのではないかと言う感じがしてきた。
nsTextFrame
内でDrawSelectionIterator
を利用していない場所でこのクラスの算出する色情報が必要になったのだが、このクラスを色取得のためだけに動的に生成するには無駄が多いし(一回の描画用の処理経路で数個、同じ内容のメンバを持つクラスを複製しなくてはいけなくなる)、数々の不足情報を補うために膨大な修正が必要になる。こういう場合(修正箇所が多岐にわたる場合)、経験上、設計そのものが悪いことがほとんどだ。
という方向で検討してみたところ、色の情報なんだからnsTextFrame::TextPaintStyle
に持たせときゃいいんじゃないかという答えが見えてくる。そしてこの構造体を見てみれば、選択色情報を持っているではないか。しかもただ単にDrawSelectionIterator
に色情報を渡すのに使っているだけだ。ということは、最初にDrawSelectionIterator
にも色情報を分散させて保存させだした当たりから大きな間違いが始まっていたのだろう。前回の私の選択色反転のパッチもこの流れにのってしまっていた。反省。