Adjustment
GTK中很多widget能够被用户通过键盘或鼠标进行调整,这些调整在视觉上能够被看见。例如range widget. 还有一些widget 能够实现局部调整,例如text widget 和 viewport widget 。
以range widget为例,当用户使用键盘或鼠标对widget进行调整时,应用程序该如何对用户的命令进行响应呢。一种方式是,当widget发生调整时,各个widget都发送自己的信号,这些信号的类型可能不同。另一种方式是将调整后的新数据传递到信号处理函数或者让应用查看widget的数据结构以确保调整已经发生。但,也可以将几个widget的调整绑定到一起,当对一个widget进行调整时,其他相关的widget会自动进行相应的调整。对于此种方式,很能说明问题的一个例子是,scrollbar与scrolling text area。
对于此问题,GTK定义了一个叫Adjustment的object,Adjustment不是widget,而是一种以更抽象、更灵活的形式对各个widget的调整进行传递和存储的方式。