[OSASK 6635] FORM: re: ウィンドウ移動アルゴリズムについて

このメールは、OSASK-ML投稿フォームから書き込まれた内容です。


お名前: I.Tak.

[OSASK 6628]に返信です。

>ウィンドウ内が動くもの(ゲームや動画)は
>描画を停止せずに描画しつづけて、
>ウィンドウ内が止まっているもの(テキストや静止画)は
>描画(画像の更新)を停止するのはどうでしょうか?

ええと、それぞれのアプリは好き勝手にウィンドウに描画してい
ますが、実は画面に何が表示されているか知りません。知らない
うちに別のウィンドウが乗っかってきて自分のウィンドウが荒ら
されても、知らないんです。でも、ウィンドウの表示内容を保つ
のはアプリ側の責任です。どうするか。

シェルなら、ウィンドウの位置関係を把握しています。だから、
シェルが
「こいつは下敷きになったな。描画を我慢しなさい」
「上のやつがどいたか。描画し直しなさい」
などと肩を叩いてまわるわけです。OSASKの平和は保たれました。

さて、ウィンドウ移動のときは一旦「全員我慢」になります。
好き勝手に描画されると、移動中のウィンドウ枠 (シェルが描い
てます) が消されてカッコ悪いことになります。ところが、事が
済んだ後、シェルはあろうことか「君たち全員描き直しなさい」
と言ってしまいます (下敷きになってるやつには言いませんが)。
ほとんどのウィンドウは移動してないし、我慢開始前の状態の
ままなのに。これが問題です。

「もう我慢しなくていいよ、吐き出しなさい」といって、アプリ
が吐き出すに任せればいいんです。もちろん、下敷きから開放さ
れたやつには描き直しを命じるべきです。今のシェルは、下敷き
とそうでないやつをごっちゃにしてるわけで、おつむがよろしく
ない。

もう一つの解決策は「全員我慢」をやめることです。この場合、
シェルがウィンドウ枠を描いても、誰かに上書きされてしまう
可能性があります。シェルは誰がどこに描画しているかまでは
知りませんから。どうするのかというと、描画担当のしたっぱに
丸投げするしかありません。「こっからここまでウィンドウ枠だ
から、誰かに頼まれて上書きしたら責任もって書き直してね」と。
マウスカーソルはそういう方法で描いてます。丸投げ。

どっちがいいかなあ、というのが[OSASK 6622]なんですけど、
arigayasさんは丸投げが好きですか。私はシェルがちょっと賢く
なればいいと思うんですが…… (したっぱは画面モードや機種に
合わせて六人もいます^^; シェルは一人しかいません)。


そういえば別の手段として、Windowsで言うところの「ドラッグ中
もウィンドウの内容を表示する」というやつもあります。これを
まじめにやるときは、「ウィンドウの右上のほうを書き直してね」
みたいな細かい要求にアプリが対応できないといけません。でき
ないと、下敷きになったウィンドウまるごと再描画しまくりで
大変です。




ML番号でジャンプ
ML単語検索