Denis wrote:Skirda wrote:Denis wrote:Вот пример для меню folder shortcuts
А зачем Amps считать в VMenu?
Если выключена VMENU_SHOWAMPERSAND - то в строке есть &, но они не показываются и не входят в длинну строки и тогда сдвиг в строке по ShowPos неправильно работает.
Странно. Всегда считал, что кусок кода
Code: Select all
if(VMFlags.Check(VMENU_SHOWAMPERSAND))
Len_MItemPtr=StrLength(_MItemPtr);
else
Len_MItemPtr=HiStrlen(_MItemPtr,TRUE);
в особенно применение HiStrlen, всегда отрабатывал нормально.
В общем, народ, то все фигня.
Вполне достаточно вот такого:
Code: Select all
Index: vmenu.cpp
===================================================================
--- vmenu.cpp (revision 1560)
+++ vmenu.cpp (working copy)
@@ -621,16 +621,6 @@
*TabPtr=L' ';
}
- // уточнение размера после усечения
- if(VMFlags.Check(VMENU_TRUNCMODE))
- {
- if(VMFlags.Check(VMENU_SHOWAMPERSAND))
- Len_MItemPtr=StrLength(TmpStrW);
- else
- Len_MItemPtr=HiStrlen(TmpStrW);
- Len_MItemPtr-=2;
- }
-
int Col;
if(!(Item[I]->Flags&LIF_DISABLE))
@@ -668,7 +658,7 @@
BoxText((WORD)0x00ab);// '<'
}
- if(/*!VMFlags.Check(VMENU_TRUNCMODE) && */ Len_MItemPtr > X2-X1-3)
+ if(/*!VMFlags.Check(VMENU_TRUNCMODE) && */ Len_MItemPtr > X2-X1-2)
{
//if ((VMFlags.Check(VMENU_LISTBOX|VMENU_ALWAYSSCROLLBAR) || Opt.ShowMenuScrollbar) && (((BoxType!=NO_BOX)?Y2-Y1-1:Y2-Y1+1)<ItemCount))
// GotoXY(WhereX()-1,Y);
We are the Borg. You will be assimilated.
So Say We All!