View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000677 | Far Manager 1.7x | _Common | public | 2008-12-19 17:17 | 2008-12-27 13:34 |
Reporter | samlyukov | Assigned To | alexy | ||
Priority | normal | Severity | minor | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Fixed in Version | 1.75 | ||||
Summary | 0000677: Некоректный горизонтальный скрол в меню | ||||
Description | функция HiStrlen() возвращает не верную длину: если ручками подставим в строку символ '&' или в коде сделаем например так: if (I<10) strNumText.Format (L"&%d. ",I); то длина вернется на один символ меньше. это можно посмотреть или в меню фильтров или в меню F12 на больших строках. | ||||
Tags | No tags attached. | ||||
Build | 2495 | ||||
|
Ничего не понял из того что ты хотел сказать. HiStrlen считает длину именно без этих &. |
|
ладно, поехали тогда дальше. уникодный фар (для наглядности, т.к. в анси строки режутся), окно 80х25, жмем Ctrl-I и создаем фильтр вводим в имя: &t&e&s&t в маску: 01234567890123456789012345678901234567890123456789012345678901234567890 ок. теперь крутим в меню фильтров до упора вправо. |
|
реализация HiStrlen() на мой взгляд кривая, она должна выбрасывать только первое вхождение & и считать дальше. |
2008-12-20 06:34
|
!work.diff (3,091 bytes)
Index: fn.hpp =================================================================== --- fn.hpp (revision 2319) +++ fn.hpp (working copy) @@ -248,7 +248,7 @@ void SaveConfig(int Ask); void SetColors(); int GetColorDialog(unsigned int &Color,bool bCentered=false,bool bAddTransparent=false); -int HiStrlen(const wchar_t *Str,BOOL Dup=TRUE); +int HiStrlen(const wchar_t *Str,BOOL Dup=TRUE,BOOL AutoHighlight=TRUE); int GetErrorString (string &strErrStr); // �������� �� "�������������" ������������� ��... ��������, ������� ����� � ������ �������! BOOL CheckErrorForProcessed(DWORD Err); Index: strmix.cpp =================================================================== --- strmix.cpp (revision 2319) +++ strmix.cpp (working copy) @@ -723,27 +723,33 @@ } -int HiStrlen(const wchar_t *Str,BOOL Dup) +int HiStrlen(const wchar_t *Str,BOOL Dup, BOOL AutoHighlight) { int Length=0; + // �.�. ������ ����� �� ����� ���� - ������� ������� ���� - AutoHighlight=TRUE + // ���� �� ������������ ���������� � ������ '&' - AutoHighlight=FALSE + BOOL Skip=AutoHighlight; if (Str && *Str) { while (*Str) { - if (*Str!=L'&') + if (*Str==L'&') { - Length++; - } - else - { if (Dup && Str[1] == L'&') { - Length++; ++Str; } + else if (Skip) + { + Skip=FALSE; + ++Str; + } } - Str++; + Length++; + // ��������, ���� �� ���� �� ����� + if (*Str) Str++; + else break; } } return(Length); Index: vmenu.cpp =================================================================== --- vmenu.cpp (revision 2319) +++ vmenu.cpp (working copy) @@ -585,7 +585,7 @@ if(VMFlags.Check(VMENU_SHOWAMPERSAND)) Len_MItemPtr=StrLength(_MItemPtr); else - Len_MItemPtr=HiStrlen(_MItemPtr,TRUE); + Len_MItemPtr=HiStrlen(_MItemPtr); swprintf(TmpStrW,L"%c ",Check); xwcsncat(TmpStrW,_MItemPtr,countof(TmpStrW)-1-StrLength(TmpStrW)); @@ -764,7 +764,7 @@ if(VMFlags.Check(VMENU_SHOWAMPERSAND)) _len=StrLength(Item[Pos]->strName); else - _len=HiStrlen(Item[Pos]->strName,TRUE); + _len=HiStrlen(Item[Pos]->strName,TRUE,VMFlags.Check(VMENU_AUTOHIGHLIGHT)); if(_len < _OWidth || (Direct < 0 && ItemShowPos==0) || @@ -1027,7 +1027,7 @@ if(VMFlags.Check(VMENU_SHOWAMPERSAND)) _len=StrLength(Item[I]->strName); else - _len=HiStrlen(Item[I]->strName,TRUE); + _len=HiStrlen(Item[I]->strName,TRUE,VMFlags.Check(VMENU_AUTOHIGHLIGHT)); if(_len >= _OWidth) Item[I]->ShowPos=_len-_OWidth; @@ -1460,7 +1460,7 @@ if(VMFlags.Check(VMENU_SHOWAMPERSAND)) Length=(int)Item[PosAdd]->strName.GetLength(); else - Length=HiStrlen(Item[PosAdd]->strName,TRUE); + Length=HiStrlen(Item[PosAdd]->strName); if (Length>MaxLength) MaxLength=Length; |
|
fix в аттаче |
|
длина с '&' теперь определяется правильно. но тут параллельный баг обнаружился: фар 1,75 (или 2,0) создаем файл "test&&&.cpp" - стоим на нем - F12 - см. 0. Panels D:\!Develop!\fardev\test&&&. окончания нет! это вроде бы как-то связано с подсветкой ХотКиев |
|
695 |
|
проверить не могу, ругается на это: execute.cpp(179) : error C2065: 'IApplicationAssociationRegistration' : undeclared identifier execute.cpp(179) : error C2065: 'pAAR' : undeclared identifier execute.cpp(180) : error C2065: 'IID_IApplicationAssociationRegistration' : undeclared identifier execute.cpp(184) : error C2227: left of '->QueryCurrentDefault' must point to class/struct/union/generic type type is ''unknown-type'' execute.cpp(184) : error C2065: 'AT_FILEEXTENSION' : undeclared identifier execute.cpp(184) : error C2065: 'AL_EFFECTIVE' : undeclared identifier execute.cpp(190) : error C2227: left of '->Release' must point to class/struct/union/generic type type is ''unknown-type'' |
|
студия 2005 без SP |
|
Ну это как бы твои личный проблемы. Качай nightly. |
|
скачал. вроде нормально. |
Date Modified | Username | Field | Change |
---|---|---|---|
2008-12-19 17:17 | samlyukov | New Issue | |
2008-12-19 19:08 | alexy | Note Added: 0002221 | |
2008-12-19 19:21 | samlyukov | Note Added: 0002223 | |
2008-12-19 19:33 | samlyukov | Note Added: 0002224 | |
2008-12-19 21:17 | alexy | Status | new => assigned |
2008-12-19 21:17 | alexy | Assigned To | => vskirdin |
2008-12-20 06:34 | samlyukov | File Added: !work.diff | |
2008-12-20 06:34 | samlyukov | Note Added: 0002226 | |
2008-12-20 08:16 | samlyukov | Note Added: 0002227 | |
2008-12-20 08:19 | samlyukov | Note Edited: 0002227 | |
2008-12-26 12:07 | alexy | Assigned To | vskirdin => alexy |
2008-12-26 12:07 | alexy | Summary | HiStrlen() возвращает меньшую длину чем надо => Некоректный горизонтальный скрол в меню |
2008-12-26 12:31 | alexy | Note Added: 0002254 | |
2008-12-26 12:31 | alexy | Status | assigned => feedback |
2008-12-27 03:32 | samlyukov | Note Added: 0002261 | |
2008-12-27 03:33 | samlyukov | Note Added: 0002262 | |
2008-12-27 03:33 | samlyukov | Note Edited: 0002262 | |
2008-12-27 09:39 | alexy | Note Added: 0002263 | |
2008-12-27 13:30 | samlyukov | Note Added: 0002264 | |
2008-12-27 13:31 | samlyukov | Status | feedback => resolved |
2008-12-27 13:31 | samlyukov | Resolution | open => fixed |
2008-12-27 13:34 | alexy | Build | => 2495 |
2008-12-27 13:34 | alexy | Status | resolved => closed |
2008-12-27 13:34 | alexy | Fixed in Version | => 1.75 |