Это, кажется, начато с удара 4.2. Можно сообщить об этом как об ошибке разработчикам удара.
window-maximizable-p
возвращает false, если окно имеет максимальную подсказку размера, которая меньше, чем дисплей. Максимальная подсказка размера max_width
и max_height
значения в XSizeHints
структура, возвращенная как ответ на a WM_SIZE_HINTS
сообщение.
Firefox 17 объявляет максимальные высоты и ширины со значением 0x40000000. В Пиле-рыбе, window-size-hints
функционируйте сообщают эти значения как 0. Как это происходит, реализация Lisp Пилы-рыбы использует 2 бита тега на целочисленных значениях, который оставляет 30 битов на 32-разрядных машинах и 62 бита на 64-разрядной машине. Так, чтобы значение 230 было тихо усеченным к 0.
Я взглянул на код C и способ, которым он записан, это усечение происходит даже на 64-разрядной машине (потому что 32-разрядное XSizeHints
участник смещен сначала, затем продвинут на long
).
Поскольку John Siu нашел, это - ошибка Ubuntu № 1083260, который был зафиксирован, будучи замеченным относительно Firefox 17 с обсуждением в списке рассылки.
Теперь для обходного решения можно вставить Ваш .sawfishrc
, по крайней мере, заставить Firefox 17 работать.
Учитывая, что максимальное значение 0 не имеет смысла, возможно отфильтровать это значение в Lisp и удалить подсказку, когда это, кажется, 0. Это только решает проблему для максимальных подсказок размера, которые являются кратными числами 230, но это достаточно хорошо здесь.
Предупреждение: код довольно ужасен — пиле-рыбе не нравится исправлять модули только для подпрограммы (Вы не можете сделать многого без rep
в пространстве имен — включая (require 'rep)
).
(let ((struct (get-structure 'sawfish.wm.windows.subrs)))
(unless (structure-bound-p struct 'window-size-hints-before-max-truncation-fix)
(let ((old-window-size-hints (eval 'window-size-hints struct)))
(structure-define struct 'window-size-hints-before-max-truncation-fix
old-window-size-hints)
(structure-set struct 'window-size-hints
(lambda (#!rest args)
(let* ((hints (apply old-window-size-hints args))
(cell (cons nil hints)))
(mapc (lambda (key)
(let ((cell (assq key hints)))
(if (zerop (cdr cell))
(setq hints (delq cell hints)))))
'(max-height max-width))
hints))))))
Вы, кажется, поражает ошибку пилы-рыбы:
https://bugs.launchpad.net/ubuntu / + источник/пила-рыба / + ошибка/1083260
PS: И это - плохая идея протестировать пилу-рыбу с человечностью repo, не может даже войти в ссылку.