Page 28 of 28

PanelTabs — Панели с закладками

Posted: Sun 28 Jul, 2019 15:02
by a'Lexus

Latest post of the previous page:

Честно говоря, не очень понял почему данный глюк был перенесен в топик плагина. Как я понимаю задача плагина после получения новой позиции и размера панели перерисовать шорткаты. А задача самого FAR очистить фон перед перерисовкой. (Что с моей точки зрения реализуется проще и универсальнее.)
Или я ошибаюсь, и плагин перед изменением размера окна получает событие об изменении и должен за собой убраться, пережде чем перерисует шорткаты по новому событию - новый размер окна?

PanelTabs — Панели с закладками

Posted: Sun 28 Jul, 2019 15:49
by DrKnS
a'Lexus wrote:
Sun 28 Jul, 2019 15:02
А задача сомго FAR очистить фон перед перерисовкой
Far:
- Не предоставляет интерфейсов для фоновой записи в произвольные места экрана.
- Не предполагает, что кто-то ещё может писать в консоль.
- При перерисовке обновляет только те участки, которые изменились с его точки зрения.
- Иногда делает снимки экрана (например, когда вы что-то запускаете) чтобы было что показать под панелями.

Если плагину захотелось втихаря что-то нарисовать поверх того, что рисует Far, то это что-то может быть:
- Затёрто сразу же.
- Просуществовать примерно столько, сколько плагин ожидает, если звёзды сложились удачно.
- Висеть на экране ещё очень долго, если попало в снимок.
почему данный глюк был перенесен в топик плагина
Потому что в Far чинить в этом случае нечего (возможно, в плагине тоже и остаётся только смириться).

PanelTabs — Панели с закладками

Posted: Sun 28 Jul, 2019 19:32
by a'Lexus
DrKnS wrote:
Sun 28 Jul, 2019 15:49
Потому что в Far чинить в этом случае нечего
Странный, с моей точки зрения, ответ. И я понимаю еще, если бы при изменении размеров окна API позволяло плагину узнать о предстоящей перерисовке и подготовится к этому. Именно поэтому данная задача становится задачей FAR.
DrKnS wrote:
Sun 28 Jul, 2019 15:49
Не предполагает, что кто-то ещё может писать в консоль.
Вот конкретный случай, когда можно уже предположить и избежать в дальнейшем, предоставляя таким образом расширенный функционал.
Очистка "задника" открытого окна целиком перед перерисовкой панелей не является задачей которая сильно снизила бы производительность. Зато устранила, как глюк текущего плагина, так и и возможные другие артефакты в будущем.

Не собираюсь никого учить, как писать программы. Просто излагаю свой подход к программированию.
И тем более, что FAR для меня остается основной консолью больше 20 лет!

PanelTabs — Панели с закладками

Posted: Sun 28 Jul, 2019 20:15
by DrKnS
a'Lexus wrote:
Sun 28 Jul, 2019 19:32
Странный, с моей точки зрения, ответ
Некто забирается ночью в трамвайное депо и рисует картину на корпусе трамвая.
Утром выясняется, что трамвай уехал и вообще его помыли.
Некто считает это странным, ведь обеспечение сохранности его работы теперь становится задачей депо.


Плагин делает то, что делать не предусмотрено, т.е. является большим хаком.
То, что он не всегда работает адекватно - неизбежно.

PanelTabs — Панели с закладками

Posted: Sun 28 Jul, 2019 20:33
by a'Lexus
DrKnS wrote:
Sun 28 Jul, 2019 20:15
Плагин делает то, что делать не предусмотрено, т.е. является большим хаком.
Ну хорошо. Докустим, что так.
Но с ArcLite дела обстоят ни сколько не лучше!
Capture.JPG
Capture.JPG
Это значит, с моей точки зрения,что с этим надо что-то делать.

PanelTabs — Панели с закладками

Posted: Sun 28 Jul, 2019 20:43
by DrKnS
Windows 10, да?
Console properties, Layout, снимите Wrap text output on resize.

PanelTabs — Панели с закладками

Posted: Mon 29 Jul, 2019 09:04
by a'Lexus
DrKnS wrote:
Sun 28 Jul, 2019 20:43
Windows 10, да?
Тем более, что известно существование проблемы. И такое решения я бы рассматривал, как временное. Т.к. оно влияет не исключительно работу FAR, а на работу консоли как таковой.
Я понимаю,что проект не коммерческий, да еще и FAR инструмент для людей квалифицированных. Но в этом случае раздел "known issues" будет иметь достаточно много пунктов.

PanelTabs — Панели с закладками

Posted: Mon 29 Jul, 2019 10:13
by DrKnS
a'Lexus wrote:
Mon 29 Jul, 2019 09:04
И такое решения я бы рассматривал, как временное
Когда вы, например, в cmd вводите что-то типа echo 11111111...еще пара сотен символов...111111111 то вывод ожидаемо разобъётся на несколько строк, чтобы влезло в ширину консоли.
Когда в Windows 10 добавили ресайз окна (и буфера) мышью, какой-то альтернативно одарённый сотрудник Microsoft придумал при ресайзе склеивать эти строки обратно в одну большую строку и разбивать её заново по новой ширине.
Я не знаю, зачем. Наверное, в линуксовых терминалах есть такая фича.
Проблема только в том, что разбиение это необратимо, т.е. ОС не знает, что именно когда-то было одной строкой и что нет, а поэтому включает AI и пытается угадывать в стиле "если строка N закончилась вплотную к правому краю без пробелов и если строка N + 1 началась вплотную к левому краю без пробелов то, наверное, это одна строка".
Такой дебильный алгоритм более-менее работает только с голым текстом в примитивном шелле типа cmd или bash.
В случае фара угадывать получается очень паршиво, т.к. вплотную к краям экрана находятся символы рамок панели.
У нас нет возможности узнать, что хосту захотелось перетасовать всё выведенное ранее.
И нет, "стереть всё" - это не выход.

Иными словами, вы можете рассматривать предложенное решение как хотите, но бананов у нас, увы, нет.

PanelTabs — Панели с закладками

Posted: Tue 30 Jul, 2019 11:17
by a'Lexus
DrKnS wrote:
Mon 29 Jul, 2019 10:13
И нет, "стереть всё" - это не выход.
Позволю себе не согласиться. Как раз очистить окно консоли, изменить размер и перерисовать было бы самым простым и эффективным решением.
Тем более, что FAR, насколько я вижу, хранит содержимое консоли в буфере.

PanelTabs — Панели с закладками

Posted: Tue 30 Jul, 2019 12:13
by DrKnS
a'Lexus wrote:
Tue 30 Jul, 2019 11:17
хранит содержимое консоли в буфере
Только то, которое в пределах окна.
Всё, что выше и правее хранит ОС.
Когда вы увеличиваете размер с включенной опцией - ОС сначала туда молча гадит, потом фар видит, что размер изменился и копирует уже испорченные блоки сверху и справа себе.
Стереть там всё, естественно, можно, но это будет варварством и вряд ли порадует аудиторию.

PanelTabs — Панели с закладками

Posted: Wed 31 Jul, 2019 08:13
by a'Lexus
DrKnS wrote:
Tue 30 Jul, 2019 12:13
Стереть там всё, естественно, можно, но это будет варварством и вряд ли порадует аудиторию.
Мне по прежнему кажется, что решение возможно. Да подход должен изменяться. Да это потребует написание нового кода.
При выводе в консоль панели скрыты и можно перед выводом панелей сохранить содержимое в буфер. Это не сильно увеличит потребляемую память и не потребует много времени. Этот буфер понадобится только при изменении размера окна. Это можно сделать опцией или использовать только в консолях Windows 10.

PanelTabs — Панели с закладками

Posted: Wed 31 Jul, 2019 08:44
by 2useven10
a'Lexus wrote:
Wed 31 Jul, 2019 08:13
Мне по прежнему кажется, что решение возможно. Да подход должен изменяться. Да это потребует написание нового кода.
Обратите внимание на пункты правил 2.2.*
a'Lexus wrote:
Wed 31 Jul, 2019 08:13
При выводе в консоль панели скрыты и можно перед выводом панелей сохранить содержимое в буфер. Это не сильно увеличит ...
Напишите патч, проведите тесты подтверждающие ваши заявления (буфер 9999x200), или см. выше.
Вы хотите слишком много приседаний от других вместо отключения проблемной фичи консоли у себя.

PanelTabs — Панели с закладками

Posted: Wed 31 Jul, 2019 09:03
by a'Lexus
2useven10 wrote:
Wed 31 Jul, 2019 08:44
Обратите внимание на пункты правил 2.2.*
Обратил. Ничего относящегося к теме нашего обсуждения с уважаемым DrKnS не увидел.
2useven10 wrote:
Wed 31 Jul, 2019 08:44
Вы хотите слишком много приседаний от других вместо отключения проблемной фичи консоли у себя.
Я ничего не хочу, я предлагаю. Обсуждаю возможные варианты обхода проблемы, если хотите.

PanelTabs — Панели с закладками

Posted: Wed 31 Jul, 2019 10:30
by DrKnS
a'Lexus wrote:
Wed 31 Jul, 2019 08:13
Мне по прежнему кажется, что решение возможно.
Сомневаться - это ваше право.
Как уже справедливо отмечено выше, код доступен, вы можете попробовать найти решение самостоятельно. Если получится (адекватно) - мы с радостью примем ваши изменения.

Мне же не кажется, потому что я уже пробовал.
С моей точки зрения, тактическое решение - отключить опцию и забыть о ней (т.к. вреда больше, чем пользы), а стратегическое - ходить по ссылке выше и голосовать за баг, привлекая внимание Microsoft к проблеме.

PanelTabs — Панели с закладками

Posted: Wed 31 Jul, 2019 12:07
by John Doe
Можно написать плагин, который на каждый чих будет сохранять буфер целиком, и при изменении размеров окна корректировать по вкусу.

PanelTabs — Панели с закладками

Posted: Thu 03 Oct, 2019 15:33
by buniak_a_h
Игорь Юдинцев wrote:
Tue 07 Jul, 2009 11:52
Max Rusov wrote:Мне не нравится, что при этом мелькает окно.
При установленной галке «Запретить вывод на экран» окно мигать не будет.
Не нашёл я такой галки. Пришлось снести плагин - мелькание, возникающее в непредсказуемый момент, стало сильно раздражать.
Версия плагина 1.15 (с плагринга)
FAR 3/0/5478 x64
Windows 10 Pro