30.11 框架的可见性

图形显示器上的框架可以是 可见的(visible)不可见的(invisible)图标化的(iconified)。如果可见,其内容会以常规方式显示。 如果图标化,其内容不会显示,但某处会有一个小图标用于将框架恢复显示 (部分窗口管理器将此状态称为 最小化(minimized) 而非 图标化的(iconified),但在 Emacs 看来二者是同一概念)。 如果框架不可见,则它完全不会被显示。

可见性概念与(非)映射框架紧密相关。 一个框架(更准确地说是其窗口系统窗口)在首次显示时, 以及每当其可见状态从 iconifiedinvisible 变为 visible 时,就会成为 已映射的(mapped)。 反之,每当框架状态从 visible 变为 iconifiedinvisible 时,就会成为 未映射的(unmapped)

可见性在文本终端上没有意义,因为无论如何都只会显示选中的框架。

Function: frame-visible-p frame

此函数返回框架 frame 的可见状态。 若 frame 可见,返回值为 t; 若不可见,返回 nil; 若已图标化,返回 icon

在文本终端上,此函数将所有框架视为可见, 即使实际只显示一个框架。 See 框架的置顶、置底与堆叠调整.

Command: iconify-frame &optional frame

此函数将框架 frame 图标化。 若省略 frame,则对选中框架执行图标化。 这通常会使 frame 的所有子框架(及其后代)变为不可见 (see 子框架)。

Command: make-frame-visible &optional frame

此函数使框架 frame 变为可见。 若省略 frame,则使选中框架可见。 该操作不会提升框架层级,但可通过 raise-frame 实现 (see 框架的置顶、置底与堆叠调整)。

使框架可见通常也会使其所有子框架(及其后代)变为可见 (see 子框架)。

Command: make-frame-invisible &optional frame force

此函数使框架 frame 变为不可见。 若省略 frame,则使选中框架不可见。 通常,这也会使 frame 的所有子框架(及其后代)变为不可见 (see 子框架)。

除非 force 为非 nil, 否则当所有其他框架均不可见时,此函数拒绝将 frame 设为不可见。

框架的可见状态也可通过框架参数获取。 可以直接读取或修改该参数。See 窗口管理参数。 用户也可通过窗口管理器对框架进行图标化与取消图标化操作。 该操作发生在 Emacs 无法直接控制的底层,但 Emacs 提供了相应事件 用于跟踪此类变化。See 其他系统事件

Function: x-double-buffered-p &optional frame

frame 当前使用双缓冲渲染,此函数返回非 nilframe 默认为当前选中框架。