Параметры положения
Параметры, описывающие смещения фрейма по X и Y, всегда измеряются в пикселях. Для обычного фрейма, не являющегося дочерним, они задают внешнее положение фрейма (см. Геометрия фрейма) относительно начала координат его дисплея. Для дочернего фрейма (см. Дочерние фреймы) они задают внешнее положение фрейма относительно нативного положения родительского фрейма. В текстовом терминале эти параметры имеют смысл только для дочерних фреймов.
-
left -
Положение левого внешнего края фрейма в пикселях относительно левого края дисплея фрейма или родительского фрейма. Его можно задать одним из следующих способов.
- целое число
-
Положительное целое число всегда задаёт положение левого края фрейма относительно левого края его дисплея или родительского фрейма. Отрицательное целое число задаёт положение правого края фрейма относительно правого края дисплея или родительского фрейма.
(+ pos)-
Задаёт положение левого края фрейма относительно левого края его дисплея или родительского фрейма. Целое число pos может быть положительным или отрицательным; отрицательное значение задаёт положение за пределами экрана или родительского фрейма либо на мониторе, отличном от основного (для многомониторных дисплеев).
(- pos)-
Задаёт положение правого края фрейма относительно правого края дисплея или родительского фрейма. Целое число pos может быть положительным или отрицательным; отрицательное значение задаёт положение за пределами экрана или родительского фрейма либо на мониторе, отличном от основного (для многомониторных дисплеев).
- число с плавающей точкой
-
Число с плавающей точкой в диапазоне от 0.0 до 1.0 задаёт смещение левого края с помощью коэффициента положения слева фрейма — отношения положения левого края внешней рамки фрейма к ширине рабочей области фрейма (см. Несколько терминалов) или нативного фрейма его родителя (см. Дочерние фреймы) за вычетом ширины внешней рамки. Таким образом, коэффициент положения слева 0.0 прижимает фрейм к левому краю, коэффициент 0.5 помещает его по центру, а коэффициент 1.0 прижимает его к правому краю дисплея или родительского фрейма. Аналогично, коэффициент положения сверху фрейма — это отношение положения верхнего края фрейма к высоте его рабочей области или родительского фрейма за вычетом высоты фрейма.
Emacs постарается сохранить коэффициенты положения дочернего фрейма неизменными, если у этого фрейма задан параметр
nilkeep-ratio(см. Параметры взаимодействия фреймов) и размер его родительского фрейма изменяется.Поскольку внешний размер фрейма (см. Геометрия фрейма) обычно неизвестен до тех пор, пока фрейм не станет видимым, при создании декорированных фреймов, как правило, не рекомендуется использовать числа с плавающей точкой. Такие числа лучше подходят для аккуратного размещения (недекорированного) дочернего фрейма в области родительского фрейма.
В настоящее время числа с плавающей точкой не обрабатываются для фреймов в текстовом терминале.
Некоторые оконные менеджеры игнорируют заданные программой положения. Чтобы гарантировать, что указанное вами положение не будет проигнорировано, задайте для параметра
user-positionзначение, отличное отnil, как в следующем примере:(modify-frame-parameters nil '((user-position . t) (left . (+ -4))))
В общем случае не рекомендуется задавать положение фрейма относительно правого или нижнего края дисплея. Задать точное положение начального или нового фрейма не получится (поскольку размер внешней рамки ещё не полностью известен до того, как фрейм станет видимым) либо это вызовет дополнительное мерцание (если после появления фрейм придётся переместить).
Обратите также внимание: положения, заданные относительно правого или нижнего края дисплея, рабочей области или родительского фрейма, а также смещения с плавающей точкой хранятся внутри программы как целочисленные смещения относительно левого или верхнего края дисплея, рабочей области или родительского фрейма. Функции, такие как
frame-parameters, также возвращают их в таком виде, и процедуры сохранения рабочего стола восстанавливают их в таком же виде. -
top -
Положение верхнего (или нижнего) края в пикселях относительно верхнего (или нижнего) края дисплея или родительского фрейма. Работает так же, как
left, но по вертикали, а не по горизонтали. -
icon-left -
Положение левого края значка фрейма на экране в пикселях, отсчитываемое от левого края экрана. Параметр действует, когда фрейм сворачивается в значок, если оконный менеджер поддерживает эту возможность. Если вы задаёте значение для этого параметра, необходимо также задать значение для
icon-top, и наоборот. Этот параметр не имеет смысла в текстовом терминале. -
icon-top -
Положение верхнего края значка фрейма на экране в пикселях, отсчитываемое от верхнего края экрана. Параметр действует, когда фрейм сворачивается в значок, если оконный менеджер поддерживает эту возможность. Этот параметр не имеет смысла в текстовом терминале.
-
user-position -
При создании фрейма и задании его положения на экране с помощью параметров
leftиtopиспользуйте этот параметр, чтобы указать, было ли заданное положение выбрано пользователем (явно запрошено человеком тем или иным способом) или задано программой (выбрано программой). Значение, отличное отnil, указывает, что положение задано пользователем. Этот параметр не имеет смысла в текстовом терминале.Оконные менеджеры обычно учитывают положения, заданные пользователем, а некоторые учитывают и положения, заданные программой. Однако многие игнорируют положения, заданные программой: размещают окно по умолчанию или позволяют пользователю расположить его с помощью мыши. Некоторые оконные менеджеры, включая
twm, позволяют пользователю указать, следует ли учитывать или игнорировать положения, заданные программой.При вызове
make-frameследует задать для этого параметра значение, отличное отnil, если значения параметровleftиtopотражают пожелание пользователя; в противном случае используйтеnil. -
z-group -
Этот параметр задаёт относительное положение окна фрейма в оконной системе в порядке наложения (по оси Z) дисплея фрейма. В текстовых терминалах он пока не реализован.
Если значение этого параметра равно
above, оконная система отобразит окно, соответствующее фрейму, поверх всех остальных окон оконной системы, у которых не задано свойствоabove. Если значение равноnil, окно фрейма отображается под всеми окнами, у которых задано свойствоabove, и над всеми окнами, у которых задано свойствоbelow. Если значение равноbelow, окно фрейма отображается под всеми окнами, у которых не задано свойствоbelow.Чтобы поместить фрейм выше или ниже определённого другого фрейма, используйте функцию
frame-restack(см. Поднятие, опускание и перестановка фреймов).
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Position-Parameters.html