Page 1 of 2

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Fri 20 Oct, 2017 08:28
by awson
Запускаете что-нибудь консольное с длинной выдачей, давите Ctrl-O, пытаетесь прокрутить консоль назад с помощью Ctrl-Alt-PgUp.

Не работат, только дергается.

Прокрутка мышкой скроллбара работает.

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Sun 05 Nov, 2017 09:03
by awson
Еще у кого-нибудь эта проблема есть?

Если кто-нибудь из разработчиков смотрел, не мог бы он прокомментировать кратко что там?

"MS опять накосорезил с консольным API, ну их нафик, пусть сами чинят" или что?

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Sun 26 Nov, 2017 11:30
by stefanenko
Да никто не будет разбираться с инсайдерскими версиями Windows 10.
К примеру уже 3 версии подряд голый Far x64 не выгружается или валится с werfault.
Живем и ждем стабильности...

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Sun 26 Nov, 2017 12:23
by 2useven10
stefanenko wrote: Sun 26 Nov, 2017 11:30Да никто не будет разбираться с инсайдерскими версиями Windows 10.
1709 уже не инсайдерская.
stefanenko wrote: Sun 26 Nov, 2017 11:30К примеру уже 3 версии подряд голый Far x64 не выгружается или валится с werfault.
Живем и ждем стабильности...
Это вы о чём? На 1709 ничего подобного не наблюдаю.

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Wed 14 Feb, 2018 18:44
by awson
Решил сам посмотреть в чем дело.

Оказалось, что 1709 дополнительно генерит `WINDOW_BUFFER_SIZE_EVENT`, после чего `ProcessBufferSizeEvent` возвращает всё взад.

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

Я себе сделал тривиальный кривой костыль (добавил глобальный флаг inScroll, который взводится в `ConsoleScrollHook` и проверяется (очищается) в `ProcessBufferSizeEvent`. У меня, вроде, работает, так что если кому надо -- просите мейнтейнеров сделать по уму.

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Thu 01 Mar, 2018 08:50
by GMax
хотелось бы, да

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Thu 01 Mar, 2018 11:33
by 2useven10
Если до багтрекера не дошли, значит хотелось не сильно.

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Thu 11 Oct, 2018 10:41
by awson
Положу-ка я этот патч сюда, просто чтоб мейнтейнерам было понятно о чем речь.

Code: Select all

diff -urN a/far/interf.cpp b/far/interf.cpp
--- a/far/interf.cpp	2018-10-01 17:43:10.507269200 +0300
+++ b/far/interf.cpp	2018-10-07 18:52:04.306438500 +0300
@@ -137,6 +137,8 @@
 static SMALL_RECT InitWindowRect;
 static COORD InitialSize;
 
+bool inScroll = false;
+
 static os::event& CancelIoInProgress()
 {
 	static os::event s_CancelIoInProgress;
@@ -192,6 +194,7 @@
 	// Удалить после появления макрофункции Scroll
 	if (Global->Opt->WindowMode && Global->WindowManager->IsPanelsActive())
 	{
+		inScroll = true;
 		switch (key())
 		{
 		case KEY_CTRLALTUP:
diff -urN a/far/interf.hpp b/far/interf.hpp
--- a/far/interf.hpp	2018-10-01 17:43:10.508268800 +0300
+++ b/far/interf.hpp	2018-10-07 18:52:04.312468400 +0300
@@ -51,6 +51,8 @@
 extern SHORT PrevScrX,PrevScrY;
 extern DWORD InitialConsoleMode;
 
+extern bool inScroll;
+
 // типы рамок
 enum
 {
diff -urN a/far/keyboard.cpp b/far/keyboard.cpp
--- a/far/keyboard.cpp	2018-10-01 17:43:10.509269300 +0300
+++ b/far/keyboard.cpp	2018-10-07 18:53:11.814521200 +0300
@@ -699,6 +699,11 @@
 
 static DWORD ProcessBufferSizeEvent(COORD Size)
 {
+	if (inScroll) {
+		inScroll = false;
+		return KEY_NONE;
+	}
+
 	if (WindowState.is_restored())
 	{
 		SaveNonMaximisedBufferSize(Size);

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Thu 11 Oct, 2018 11:08
by DrKnS
WINDOW_BUFFER_SIZE_EVENT у вас генерируется при вызове SetConsoleWindowInfo, я правильно понимаю?
Мы, конечно, можем накостылить, вашим методом или иначе, но это же явный баг - меняется не размер буфера, а его относительная позиция, WINDOW_BUFFER_SIZE_RECORD.dwSize будет тем же.
Напишите им на багтрекер (а мы поддержим), может нормально исправят (ну или подтвердят, что это теперь такая фича).

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Thu 11 Oct, 2018 12:10
by awson
Я, честно говоря, не копал, кто там начал вдруг `WINDOW_BUFFER_SIZE_EVENT` генерить, я просто увидел, что оно возникло out of nowhere, и решил, не вдаваясь в детали, проверить что будет, если я его вот так выпилю.

Если б что-то сломалось, я бы дальше стал смотреть, но ничего не сломалось.

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Thu 11 Oct, 2018 12:11
by awson
У меня времени до конца этой недели совсем мало.

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Thu 11 Oct, 2018 22:59
by DrKnS
Поставил эту вашу windows 10, проверил, предположение подтвердилось, написал им багрепорт.

Господа, предлагаю сходить и лайкнуть https://github.com/Microsoft/console/issues/281, дабы привлечь внимание Microsoft к проблеме.
Рано или поздно все на это наступим.

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Fri 12 Oct, 2018 00:19
by 2useven10
Радует что оба репорта признаны багами и помечены bug conhost.
Не радует, что там порядка 45 репортов с такими метками.

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Sat 10 Nov, 2018 13:11
by ramzes_III
Ах вот в чём дело, сейчас задался целью настроить прокрутку, все клавиши перепробовал - не работает, скачал макрос - не работает

Code: Select all

Macro
{
	description="Прокрутка панелей или UserScreen";
	area="Shell";
	key="MsWheelUp";
action=function()
  if  Area.Shell  and  (APanel.Visible  or  PPanel.Visible) then  Keys("MsWheelUp") else Far.Window_Scroll(-3) end
end;
}

Macro
{
	description="Прокрутка панелей или UserScreen";
	area="Shell";
	key="MsWheelDown";
action=function()
  if  Area.Shell  and  (APanel.Visible  or  PPanel.Visible) then  Keys("MsWheelDown") else Far.Window_Scroll(3) end
end;
}
Уж стал сомневаться в своём уровне интеллекта. А оно вононо что. Багу лайкнул.

В Windows 10 1709 (FCU) отвалилась прокрутка консоли с помощью горячих клавиш

Posted: Sat 10 Nov, 2018 13:15
by ramzes_III
А кто-нибудь знает, как сделать чтобы в Windows 10 в консоли в Far в полноэкранном режиме не скрывалась полоса прокрутки? Чтобы хотя бы так скроллить.