View Issue Details

IDProjectCategoryView StatusLast Update
0001978PluginsFARCmdspublic2012-01-13 22:03
ReporterDenisAssigned Toalexy 
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Platformx64OSWindowsOS Version7
Product Version3.0 
Target VersionFixed in Version3.0 
Summary0001978: Отваливается мышь
DescriptionПосле выполнения из коммандной строки "edit:<abc", где "abc" - несуществующий файл, Far перестаёт реагировать на мышь.
Additional InformationFar 3.0 build 2361 x86
win7 x64
TagsNo tags attached.

Activities

zg

2012-01-11 16:54

developer   bugnote:0008374

у меня и после edit:<svn diff отваливается. svn вполне себе существует.

Denis

2012-01-11 16:56

reporter   bugnote:0008375

Last edited: 2012-01-11 16:56

View 2 revisions

На несуществующем проще тестить - так как он существует у всех. А svn у меня нет.

alexy

2012-01-11 17:15

administrator   bugnote:0008376

проблема известна, любой плагин который что либо запускает теперь должен сохранять и восстанавливать режимы консоли (для stdout, stdin и stderr).

Denis

2012-01-13 10:35

reporter  

RestoreConsole.patch (1,105 bytes)
diff --git i/plugins/farcmds/OpenCmd.cpp w/plugins/farcmds/OpenCmd.cpp
index 535e3d7..a170fc9 100644
--- i/plugins/farcmds/OpenCmd.cpp
+++ w/plugins/farcmds/OpenCmd.cpp
@@ -437,6 +437,11 @@ static int TestPrefix(wchar_t*& Src,const wchar_t *Pref)
 
 int OpenFromCommandLine(wchar_t *_farcmd)
 {
+  DWORD InMode=0, OutMode=0, ErrMode=0;
+  GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), &OutMode);
+  GetConsoleMode(GetStdHandle(STD_ERROR_HANDLE), &ErrMode);
+  GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), &InMode);
+
 	if (!_farcmd) return FALSE;
 
 	int View=0,Edit=0,Goto=0,Far=0,Clip=0,WhereIs=0,Macro=0,Link=0,Run=0, Load=0,Unload=0;
@@ -1358,6 +1363,10 @@ int OpenFromCommandLine(wchar_t *_farcmd)
 		} // </if(View||Edit||Goto)>
 	} // </if(lstrlen(farcmd) > 3)>
 
+  SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), OutMode);
+  SetConsoleMode(GetStdHandle(STD_ERROR_HANDLE), ErrMode);
+  SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), InMode);
+
 	if (showhelp)
 	{
 		Info.ShowHelp(Info.ModuleName,(PrefIdx==static_cast<size_t>(-1))?L"Contents":Pref[PrefIdx].HelpName,0);
RestoreConsole.patch (1,105 bytes)

Denis

2012-01-13 10:36

reporter   bugnote:0008398

Добавил патч (исходник взят у t-rex)

alexy

2012-01-13 22:03

administrator   bugnote:0008419

build 85

Issue History

Date Modified Username Field Change
2012-01-11 14:38 Denis New Issue
2012-01-11 16:54 zg Note Added: 0008374
2012-01-11 16:56 Denis Note Added: 0008375
2012-01-11 16:56 Denis Note Edited: 0008375 View Revisions
2012-01-11 17:15 alexy Note Added: 0008376
2012-01-13 10:35 Denis File Added: RestoreConsole.patch
2012-01-13 10:36 Denis Note Added: 0008398
2012-01-13 22:03 alexy Note Added: 0008419
2012-01-13 22:03 alexy Status new => closed
2012-01-13 22:03 alexy Assigned To => alexy
2012-01-13 22:03 alexy Resolution open => fixed
2012-01-13 22:03 alexy Fixed in Version => 3.0