しばらく色々な需要にKozanebaを使った

分量が多くなると重たくなる問題

Kozaneba開発日記2021-11-26 Kozaneba開発日記2021-12-10

高負荷時グループ消滅問題

  • 選択状態からグループをドラッグした時に、ドラッグ開始後に選択状態解除の再描画が走ることが最初の原因
  • このバグによって「ドラッグ中のものはドロップ対象にならない」が壊れ「トップレベルのXをXにドロップしたので、トップレベルの描画リストからXを削除して、Xの子にXを追加」が発生する、これによって画面上から消える

リリースノート

  • 選択がある状態で選択範囲外のグループ上でドラッグをした場合にグループが非表示になるバグを修正しました
  • 選択がある状態での選択範囲外のドラッグは単に選択を解除するだけになりました
  • 選択範囲に何も選択対象がなかった場合、選択を自動で解除するようになりました

長い二項関係を半透明にする

image

image image image imageimage image image image

あー、なるほど。

そしてもっと激しく壊す方法を発見した

  • image

まず前半の問題に関しては線とボーダーの交点を計算する時にボーダー自体の太さやヘッダーの高さが考慮に入っていないことが原因 後半に関してはネストされたグループの中のこざねの位置が更新された時に、親の親のグループのなんらかの値が更新されてない 今回複雑な文章の構造化をした時にこざねのジャンプが起きるなと思っていたがおそらくこの更新漏れが原因だろう

後者の方が影響範囲や問題が大きいのでまず直す 前者に関してはそもそも線の描画コードがグループのヘッダの高さとか知る必要があるのはおかしいのでバウンダリボックスを取得してそこから計算するといいのではないか

2021-12-23 時間軸逆順の整理

  • 水曜日に入れた線を半透明にする機能をまだデプロイしてなかった
    • これはすごく有益だということがわかった
    • 「線が下のものにかぶって読めないから動かそう」と考えなくて良くなる
  • 全部つながって、これはまだ「元の文章で近接していた」という関係を保持している=既存の構造を保っている
    • 今のこの状態はバックアップしたので、ここから「元の構造を保たなくて良い」=「離れたところ繋ぐ矢印が近接するように、元の構造を破壊して移動する」をやれば「苦痛を伴うジャンプなしに新しい構造へ到達できる」
    • これ機械的にアシストできないかな…つまり近接が弱いバネ、矢印が強いバネで、矢印が適度な長さになるように物理演算をかければ…
  • 「選択範囲の90度回転」が欲しい

next Kozaneba開発日記2021-12-27