LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

У этих функций в документации указано, что их может перехватывать оконный менеджер и подменять их поведение. Если ты пишешь оконный менеджер - то они будут работать точно так, как там описано. Если ты используешь оконный менеджер, которых их не перехватывает - то тоже.

Причём перехват не всегда чтобы заблокировать. Вот пример: допустим, у проги есть окно 100х100 пикселей, и она хочешь его поставить (левый верхний угол) на x=10, y=10. Но оконный менеджер вокруг этого окна рисует рамку и заголовок. Рамка, допустим, занимает 3 пикселя, заголовок 20 пикселей. И так вот, программа шлёт команду «переместить окно на 10,10», оконный менеджер её перехватывает и заменяет на:

1) переместить рамку на 10,10

2) переместить заголовок на 13,13

3) переместить основное окно (то самое) на 13,33

В итоге окно расположено немного не так, где хотела прога, потому что прога не учитывает что над окном есть ещё 23 пикселя служебным элементов. Аналогично и с ресайзом - прога хочет размер 100х100, а оконный менеджер должен думать как всё сделать чтобы ещё и заголовок с рамкой влезли - то ли уменьшить настоящий размер окна, то ли увеличить размер окна+заголовка+рамки.

Есть, конечно, и другой вариант - окно переместить на 10,10, как прога и хотела, а заголовок пририсовать выше (он на y=-10 окажется и уползёт за границу экрана).

Но и для блокировки перемещения этот перехват тоже, конечно, может использоваться.

Исходная версия firkax, :

У этих функций в документации указано, что их может перехватывать оконный менеджер и подменять их поведение. Если ты пишешь оконный менеджер - то они будут работать точно так, как там описано. Если ты используешь оконный менеджер, которых их не перехватывает - то тоже.

Причём перехват не всегда чтобы заблокировать. Вот пример: допустим, у проги есть окно 100х100 пикселей, и она хочешь его поставить (левый верхний угол) на x=10, y=10. Но оконный менеджер вокруг этого окна рисует рамку и заголовок. Рамка, допустим, занимает 3 пикселя, заголовок 20 пикселей. И так вот, программа шлёт команду «переместить окно на 10,10», оконный менеджер её перехватывает и заменяет на:

1) переместить рамку на 10,10

2) переместить заголовок на 13,13

3) переместить основное окно (то самое) на 13,33

В итоге окно расположено немного не так, где хотела прога, потому что прога не учитывает что над окном есть ещё 23 пикселя служебным элементов. Аналогично и с ресайзом - прога хочет размер 100х100, а оконный менеджер должен думать как всё сделать чтобы ещё и заголовок с рамкой влезли - то ли уменьшить настоящий размер окна, то ли увеличить размер окна+заголовка+рамки.

Но и для блокировки перемещения этот перехват тоже, конечно, может использоваться.