View Issue Details

IDProjectCategoryView StatusLast Update
0001183Far ManagerEditorpublic2012-05-31 15:10
ReporterJohnDoe Assigned To2useven10  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version2.0 
Fixed in Version3.0 
Summary0001183: При Reload запоминание кодовой страницы должно происходить раньше считывания
DescriptionЕсли вызвать Shift-F4 из редактора, и переоткрыть файл (Reload),
то файл открывается не в той кодировке в которой ожидается.
Steps To Reproduce- открываем (F4) файл в кодировке 1251
- меняем (F8) на 866
- Открываем диалог (Shift-F4), заполняем имя (Ctrl-J), Enter
- На запрос выбираем Reload (Alt-E)
Видим что вопреки ожиданиям кодировка осталась 1251.
Не меняя кодировку жмём Shift-F4 Ctrl-J Enter Alt-E
Видим что кодировка изменилась на 866.
И т.д. по кругу.

Видно что при закрытии файла кодовая страница запоминается, но при Reload считывание запомненной происходит раньше закрытия.
TagsNo tags attached.
Build2614

Activities

2useven10

2011-05-20 10:52

developer   bugnote:0006966

Last edited: 2011-05-20 10:55

View 2 revisions

На мой взгляд ожидаемая кодировка при релоаде - 1251.
866 - ожидаемая, если выбрать Current.
Но меняться при следующем релоаде конечно не стоит.
Выглядит очень забавно.

2useven10

2011-05-20 13:55

developer   bugnote:0006974

Перефразирую:
При Reload запоминания кодовой страницы вообще не должно быть.

JohnDoe

2011-05-20 15:12

updater   bugnote:0006979

Интересно. Альтернативное мнение...
Я вручную поменял кодировку и хочу чтобы она запомнилась при закрытии.
Неважно что после закрытия я опять открываю тот же самый файл.
Имхо.

2useven10

2011-05-20 16:05

developer   bugnote:0006980

выбрав Reload, вы отказываетесь от своих изменений. в том числе и от смены кодировки, если нет - выбирайте Current, они (изменения) потом будут сохранены.

JohnDoe

2011-05-20 16:29

updater   bugnote:0006982

Last edited: 2011-05-20 16:35

View 2 revisions

Приведу сценарий, когда всё-таки желательно запоминание.
Например иногда файл открывается в неправильной кодировке, причём с потерей информации (OEM как UTF-8).
Изменения кодировки на правильную тут недостаточно - надо ещё и открыть файл заново.

P.S.
Не факт, что мой сценарий типичен для кого-то ещё.
Возможно действительно стоит убрать запоминание позиции и кодировки.

2useven10

2011-05-20 16:44

developer   bugnote:0006983

открывайте, указав правильную кодировку. разве этого не достаточно?

JohnDoe

2011-05-20 17:23

updater   bugnote:0006984

Очевидно что проще тупо переоткрыть, чем повторно указывать кодировку, вручную выбирая из списка.
(Но для меня не проблема, я уже давно намакросил)

2useven10

2011-05-23 10:21

developer  

Reload_NoSavePos.diff (2,422 bytes)   
Index: fileedit.hpp
===================================================================
--- fileedit.hpp	(revision 6263)
+++ fileedit.hpp	(working copy)
@@ -59,6 +59,8 @@
 
 enum FFILEEDIT_FLAGS
 {
+	FILEEDIT_DISABLESAVEPOS         = 0x00008000,  // �� ������ ����� �� ����� 
+
 	FFILEEDIT_NEW                   = 0x00010000,  // ���� ���� ����������! ���� ��� ��� ������ ������! ���� ������ � ��� ���.
 	FFILEEDIT_REDRAWTITLE           = 0x00020000,  // ����� �������� ���������?
 	FFILEEDIT_FULLSCREEN            = 0x00040000,  // ����������� �����?
Index: fileedit.cpp
===================================================================
--- fileedit.cpp	(revision 6263)
+++ fileedit.cpp	(working copy)
@@ -379,7 +379,7 @@
 	//AY: ���� �������� ������� ���������.
 	m_bClosing = true;
 
-	if (m_editor->EdOpt.SavePos && CtrlObject)
+	if (!Flags.Check(FILEEDIT_DISABLESAVEPOS) && m_editor->EdOpt.SavePos && CtrlObject)
 		SaveToCache();
 
 	BitFlags FEditFlags=m_editor->Flags;
@@ -536,9 +536,14 @@
 						SwitchTo=FALSE;
 						break;
 					case 2:         // Reload
+					{
 						FrameManager->DeleteFrame(FramePos);
+						Frame *deleted_frame = (*FrameManager)[FramePos];
+						if ( deleted_frame )
+							deleted_frame->SetFlags(FILEEDIT_DISABLESAVEPOS);
 						SetExitCode(-2);
 						break;
+					}
 					case -100:
 						//FrameManager->DeleteFrame(this);  //???
 						SetExitCode(XC_EXISTS);
Index: frame.hpp
===================================================================
--- frame.hpp	(revision 6263)
+++ frame.hpp	(working copy)
@@ -115,13 +115,15 @@
 //    int ModalCount() {return ModalStackCount;}
 		void DestroyAllModal();
 		void SetDynamicallyBorn(int Born) {DynamicallyBorn=Born;}
-		int GetDynamicallyBorn() {return DynamicallyBorn;};
+		int GetDynamicallyBorn() {return DynamicallyBorn;}
 		virtual int FastHide();
 //    int IndexOf(Frame *aFrame);
 		bool RemoveModal(Frame *aFrame);
 		virtual void ResizeConsole();
 		bool HasSaveScreen();
 //    bool ifFullConsole();
-		virtual string &GetTitle(string &Title,int SubLen=-1,int TruncSize=0) { return Title; };
-		virtual bool ProcessEvents() {return true;};
+		virtual string &GetTitle(string &Title,int SubLen=-1,int TruncSize=0) { return Title; }
+		virtual bool ProcessEvents() {return true;}
+
+		void SetFlags( DWORD flags ) { Flags.Set(flags); }
 };
Reload_NoSavePos.diff (2,422 bytes)   

2useven10

2011-05-23 10:22

developer   bugnote:0007001

в аттаче: Отключение сохранения позиции при релоаде файла

vskirdin

2011-05-23 12:34

administrator   bugnote:0007007

Меня смущает значение для FILEEDIT_DISABLESAVEPOS (пока не помню почему)
Зачем ты его в младшее слово разместил?
Давай как я го вверх подниму, скажем пусть будет 0x08000000.
И, кстати, может имеет смысл его, флаг, отдать и плагинам (EF_DISABLESAVEPOS), ы?

2useven10

2011-05-23 13:30

developer   bugnote:0007008

не проблема (то что это значение свободно - не заметил).
хотя моё тоже вроде не занято:
  в цепочке наследования FileEditor -> Frame -> ScreenObject.
  Flags используется в FileEditor (все маски рядом) и в ScreenObject
  (из комментария - в пределах 0xFF)

vskirdin

2011-05-23 13:36

administrator   bugnote:0007009

Last edited: 2011-05-23 13:53

View 2 revisions

build 2046
(апи добавлено)

JohnDoe

2012-04-13 16:48

updater   bugnote:0008894

>выбрав Reload, вы отказываетесь от своих изменений. в том числе и от смены кодировки

Нажав F10 я тоже отказываюсь от своих изменений. Но кодировка запоминается.
Неконсистентно получается.

2useven10

2012-04-15 07:57

developer   bugnote:0008902

Last edited: 2012-04-15 07:58

View 2 revisions

build 2614 - сохраняем позицию и кодировку при релоаде.

2useven10

2012-05-31 14:58

developer   bugnote:0009300

JohnDoe не читатель ?

JohnDoe

2012-05-31 15:08

updater   bugnote:0009301

Читатель :-)
Но виноват, упустил.

Issue History

Date Modified Username Field Change
2009-11-28 18:06 JohnDoe New Issue
2011-05-20 10:52 2useven10 Note Added: 0006966
2011-05-20 10:55 2useven10 Note Edited: 0006966 View Revisions
2011-05-20 13:55 2useven10 Note Added: 0006974
2011-05-20 15:12 JohnDoe Note Added: 0006979
2011-05-20 16:05 2useven10 Note Added: 0006980
2011-05-20 16:29 JohnDoe Note Added: 0006982
2011-05-20 16:35 JohnDoe Note Edited: 0006982 View Revisions
2011-05-20 16:44 2useven10 Note Added: 0006983
2011-05-20 17:23 JohnDoe Note Added: 0006984
2011-05-23 10:21 2useven10 File Added: Reload_NoSavePos.diff
2011-05-23 10:22 2useven10 Note Added: 0007001
2011-05-23 12:34 vskirdin Note Added: 0007007
2011-05-23 12:34 vskirdin Assigned To => vskirdin
2011-05-23 12:34 vskirdin Status new => assigned
2011-05-23 13:30 2useven10 Note Added: 0007008
2011-05-23 13:36 vskirdin Note Added: 0007009
2011-05-23 13:36 vskirdin Status assigned => feedback
2011-05-23 13:53 vskirdin Note Edited: 0007009 View Revisions
2011-12-23 08:59 alexy Build => 2046
2011-12-23 08:59 alexy Status feedback => closed
2011-12-23 08:59 alexy Resolution open => fixed
2011-12-23 08:59 alexy Fixed in Version => 3.0
2012-04-13 16:48 JohnDoe Note Added: 0008894
2012-04-13 16:48 JohnDoe Status closed => feedback
2012-04-13 16:48 JohnDoe Resolution fixed => reopened
2012-04-15 07:57 2useven10 Note Added: 0008902
2012-04-15 07:58 2useven10 Note Edited: 0008902 View Revisions
2012-05-31 14:57 2useven10 Assigned To vskirdin => 2useven10
2012-05-31 14:57 2useven10 Status feedback => assigned
2012-05-31 14:58 2useven10 Note Added: 0009300
2012-05-31 14:59 2useven10 Status assigned => feedback
2012-05-31 15:08 JohnDoe Note Added: 0009301
2012-05-31 15:08 JohnDoe Status feedback => assigned
2012-05-31 15:08 JohnDoe Status assigned => resolved
2012-05-31 15:10 2useven10 Build 2046 => 2614
2012-05-31 15:10 2useven10 Status resolved => closed
2012-05-31 15:10 2useven10 Resolution reopened => fixed