View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001183 | Far Manager | Editor | public | 2009-11-28 18:06 | 2012-05-31 14:10 |
| Reporter | JohnDoe | Assigned To | 2useven10 | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Product Version | 2.0 | ||||
| Fixed in Version | 3.0 | ||||
| Summary | 0001183: При 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 считывание запомненной происходит раньше закрытия. | ||||
| Tags | No tags attached. | ||||
| Build | 2614 | ||||
|
|
На мой взгляд ожидаемая кодировка при релоаде - 1251. 866 - ожидаемая, если выбрать Current. Но меняться при следующем релоаде конечно не стоит. Выглядит очень забавно. |
|
|
Перефразирую: При Reload запоминания кодовой страницы вообще не должно быть. |
|
|
Интересно. Альтернативное мнение... Я вручную поменял кодировку и хочу чтобы она запомнилась при закрытии. Неважно что после закрытия я опять открываю тот же самый файл. Имхо. |
|
|
выбрав Reload, вы отказываетесь от своих изменений. в том числе и от смены кодировки, если нет - выбирайте Current, они (изменения) потом будут сохранены. |
|
|
Приведу сценарий, когда всё-таки желательно запоминание. Например иногда файл открывается в неправильной кодировке, причём с потерей информации (OEM как UTF-8). Изменения кодировки на правильную тут недостаточно - надо ещё и открыть файл заново. P.S. Не факт, что мой сценарий типичен для кого-то ещё. Возможно действительно стоит убрать запоминание позиции и кодировки. |
|
|
открывайте, указав правильную кодировку. разве этого не достаточно? |
|
|
Очевидно что проще тупо переоткрыть, чем повторно указывать кодировку, вручную выбирая из списка. (Но для меня не проблема, я уже давно намакросил) |
|
|
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); }
};
|
|
|
в аттаче: Отключение сохранения позиции при релоаде файла |
|
|
Меня смущает значение для FILEEDIT_DISABLESAVEPOS (пока не помню почему) Зачем ты его в младшее слово разместил? Давай как я го вверх подниму, скажем пусть будет 0x08000000. И, кстати, может имеет смысл его, флаг, отдать и плагинам (EF_DISABLESAVEPOS), ы? |
|
|
не проблема (то что это значение свободно - не заметил). хотя моё тоже вроде не занято: в цепочке наследования FileEditor -> Frame -> ScreenObject. Flags используется в FileEditor (все маски рядом) и в ScreenObject (из комментария - в пределах 0xFF) |
|
|
build 2046 (апи добавлено) |
|
|
>выбрав Reload, вы отказываетесь от своих изменений. в том числе и от смены кодировки Нажав F10 я тоже отказываюсь от своих изменений. Но кодировка запоминается. Неконсистентно получается. |
|
|
build 2614 - сохраняем позицию и кодировку при релоаде. |
|
|
JohnDoe не читатель ? |
|
|
Читатель :-) Но виноват, упустил. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2009-11-28 18:06 | JohnDoe | New Issue | |
| 2011-05-20 09:52 | 2useven10 | Note Added: 0006966 | |
| 2011-05-20 09:55 | 2useven10 | Note Edited: 0006966 | |
| 2011-05-20 12:55 | 2useven10 | Note Added: 0006974 | |
| 2011-05-20 14:12 | JohnDoe | Note Added: 0006979 | |
| 2011-05-20 15:05 | 2useven10 | Note Added: 0006980 | |
| 2011-05-20 15:29 | JohnDoe | Note Added: 0006982 | |
| 2011-05-20 15:35 | JohnDoe | Note Edited: 0006982 | |
| 2011-05-20 15:44 | 2useven10 | Note Added: 0006983 | |
| 2011-05-20 16:23 | JohnDoe | Note Added: 0006984 | |
| 2011-05-23 09:21 | 2useven10 | File Added: Reload_NoSavePos.diff | |
| 2011-05-23 09:22 | 2useven10 | Note Added: 0007001 | |
| 2011-05-23 11:34 | vskirdin | Note Added: 0007007 | |
| 2011-05-23 11:34 | vskirdin | Assigned To | => vskirdin |
| 2011-05-23 11:34 | vskirdin | Status | new => assigned |
| 2011-05-23 12:30 | 2useven10 | Note Added: 0007008 | |
| 2011-05-23 12:36 | vskirdin | Note Added: 0007009 | |
| 2011-05-23 12:36 | vskirdin | Status | assigned => feedback |
| 2011-05-23 12:53 | vskirdin | Note Edited: 0007009 | |
| 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 15:48 | JohnDoe | Note Added: 0008894 | |
| 2012-04-13 15:48 | JohnDoe | Status | closed => feedback |
| 2012-04-13 15:48 | JohnDoe | Resolution | fixed => reopened |
| 2012-04-15 06:57 | 2useven10 | Note Added: 0008902 | |
| 2012-04-15 06:58 | 2useven10 | Note Edited: 0008902 | |
| 2012-05-31 13:57 | 2useven10 | Assigned To | vskirdin => 2useven10 |
| 2012-05-31 13:57 | 2useven10 | Status | feedback => assigned |
| 2012-05-31 13:58 | 2useven10 | Note Added: 0009300 | |
| 2012-05-31 13:59 | 2useven10 | Status | assigned => feedback |
| 2012-05-31 14:08 | JohnDoe | Note Added: 0009301 | |
| 2012-05-31 14:08 | JohnDoe | Status | feedback => assigned |
| 2012-05-31 14:08 | JohnDoe | Status | assigned => resolved |
| 2012-05-31 14:10 | 2useven10 | Build | 2046 => 2614 |
| 2012-05-31 14:10 | 2useven10 | Status | resolved => closed |
| 2012-05-31 14:10 | 2useven10 | Resolution | reopened => fixed |