7.1.10 改变窗口大小
改变窗口大小与移动窗口的操作逻辑上基本相同,这里只简要讨论实现的逻辑,就不再列出具体代码了,请读者自行参考随书光盘中附带的源代码。
在用户按下鼠标事件时,将鼠标指针所在的标识移动区域的窗口,也就是结构体Client中以rsz_开头的窗口,记录到窗口对象的成员resizing_area中。
然后,当收到鼠标移动事件时,如果窗口对象的成员resizing_area非0,那就说明用户正在试图改变窗口大小。根据resizing_area与8个标识移动区域的窗口对比,推断出用户正在如何更改窗口的大小,然后计算出窗口改变后的几何信息,请求X服务器改变窗口大小。
当鼠标释放时,将resizing_area清0。