Решение должно быть универсальным для любых возможных ситуаций. Причины могут быть самые разные - отключил/подключил плагины → перегрузился, сменил верисию JOSM → упал какой-то плагин и т.д.
Давайте придумаем что-то более-менее универсальное и протолкнем…
В карточке предлагалось сделать в заголовке каждой панели кнопку фиксации высоты, а остальные распределять пропорционально (как сейчас).
Проблема только в том, что панелей может стать слишком много (или окно уменьшится). Пропорционально уменьшать, чтобы все влезло?
если я правильно понял вопрос, который поддерживаю двумя руками - необходимо сохранить размер и расположение как основного окна так и боковой панелей при выходе и последующем запуске JOSM. просто сохранить состояние, хоть как-нибудь…
UPD: как вариант - сделать пункт меню или кнопку, по которой JOSM записывает в файл текущие параметры и расположение окна, при запуске проверяется на наличие файла и читает параметры. Частота сохранения в файл регулировать через настройки по таймеру или оставить на совести пользователя…
Или действительно доработать функционал сохранения сеанса.
Я посмотрел код и, кажется, понял, почему эту карточку никто не трогает:
Чтобы всё работало нормально, надо встроить правильные костыли вот в это и это.
Туда и смотреть-то никому не хочется
P.S. Хотя, если удастся обойтись изменениями файла по первой ссылке - разобраться при желании можно.
Обязательно. У меня на рабочем месте один монитор 19201080, а второй 16001200. А когда я выдёргиваю их из ноута , то 1366*768. И это будет изменение между запусками JOSM.
Поэтому предлагаю делать только пропорционально. А потом продумывать поведение в “нештатных” ситуациях.
Согласен, пока сделать хотя бы сохранение пропорций, а в случае нештатных ситуаций оставить текущее поведение (равномерно распределять высоту на все панели).
Сейчас там не просто поровну. Оно, теоретически, распределяет пропорционально предпочитаемым размерам, при этом учитывает какие-то “большие” и “маленькие” панели (ну и сворачивание диалогов).
Как это взаимодействует потом с движением разделителей мышкой - никому не ведомо. В коде все гораздо хуже, чем просто массив чисел-размеров. Там два наложенных друг на друга самописных автовыравнивателя (DialogsPanel.reconstruct и MultiSplitLayout) плюс отдельный код для движения разделителей (в MultiSplitPanel).
Работает всё это как придётся. Сдвинуть-свернуть-развернуть диалог - и размер уже забыт.
Пытаться вставлять костыли в это зоопарк - значит что-нибудь порушить (т.е. панели спрячутся насовсем или начнут ползать куда попало). Переписать так, чтобы всё работало и было просто - тоже малореально.