expose event
马正初
2023-12-01
Expose Event
当窗口的某一个区域由不可见变为可见,这时X Server必需通知相应client,以便client做相应处理。比如,当我们同时打开两个窗口时,这两个窗口的某些部分可能会相互重叠。重叠部分,下面的窗口也许原本有内容显示,但现在被上面的窗口覆盖了。经过了一些操作后(比如关闭上面的窗口或者把上面的窗口最小化),原本被盖住的部分又会重新被显示出来。当这些被上层盖住的区域被再度裸露时,X Server 必需重新描画该区域,以使产生上层窗口被移掉,而下层窗口浮出来的显示效果。这个过程中X Server往往只记录了被覆盖区域的位置和大小,而并没有记录下这些被遮盖的内容,这时就需要 client的协助,重新把这个失落的环节补上。窗口被重新裸露出来时,被裸露出来的部分往往并不是规则的矩形。被裸露出来的部分可能成梯状或某种由 四方形方块相叠而形成的图形。每个 Expose Event 都包含着 一个在视窗内被裸露出来的方形区块的位置和大小,X Server 会为每个该被重新补上的方形区块产生一个 Expose Event。 而 X Server 会把同一次裸露事件所产生的 Expose Evnet 一 起且连续的送出。要接收 Expose Event 的 client 必需在 event mask 设定 ExposureMask。