Прокрутка длинных строк в меню и списках

Разработка Far.
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Прокрутка меню и списков

Post by Denis »

Latest post of the previous page:

А что если добавить такую же прокрутку и в остальные вертикальные меню (например - folder shortcuts)?

И ещё вопрос - почему в вертикальных меню слева после рамки отступ 2 символа до текста, а справа только 1 ? Может имеет смысл сделать и слева тоже один? Тогда и при сдвиге влево символ будет исчезать в более правильном месте - сейчас слева между '<' и исчезнувшим символом есть пустое место, тогда как справа нет свободного места между последним символом и '>'.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Прокрутка меню и списков

Post by DrKnS »

Denis wrote:почему в вертикальных меню слева после рамки отступ 2 символа до текста, а справа только 1 ?
Слева зарезервировано место для метки.
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Прокрутка меню и списков

Post by Denis »

Вот пример для меню folder shortcuts
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Прокрутка меню и списков

Post by Skirda »

Denis wrote:Вот пример для меню folder shortcuts
А зачем Amps считать в VMenu?
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Прокрутка меню и списков

Post by Skirda »

pbot wrote:добрый день,
то что прокрутчик считает концом строки 79й симовол - это так и задумано?
если код внимательно посмотреть, то в filefilterparams.cpp::MenuString()
до 451 увидим форматки Format1 и Format2 (сейчас там %s вместо %-XX.XXs)
We are the Borg. You will be assimilated.
So Say We All!
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Прокрутка меню и списков

Post by Denis »

Skirda wrote:
Denis wrote:Вот пример для меню folder shortcuts
А зачем Amps считать в VMenu?
Если выключена VMENU_SHOWAMPERSAND - то в строке есть &, но они не показываются и не входят в длинну строки и тогда сдвиг в строке по ShowPos неправильно работает.
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Прокрутка меню и списков

Post by Skirda »

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!
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Прокрутка меню и списков

Post by Denis »

HiStrlen - она работает правильно, но в коде отрисовки нужно посчитать только те '&', которые уже поскипаны, а не все.
В общем, народ, то все фигня.
Согласен :)
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Прокрутка меню и списков

Post by DrKnS »

В общем, народ, то все фигня.
Отнюдь.
При таком раскладе:
1) у меню с включенным обрезанием стрелка справа рисуется всегда.
2) При недокрутке до правого края на 1 символ стрелка не рисуется.
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Прокрутка меню и списков

Post by Denis »

А что если добавить такую же прокрутку и в остальные вертикальные меню (например - folder shortcuts)?
А что насчёт самого улучшения - оно нам нужно или нет?
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Прокрутка меню и списков

Post by Skirda »

DrKnS wrote:
В общем, народ, то все фигня.
Отнюдь.
При таком раскладе:
1) у меню с включенным обрезанием стрелка справа рисуется всегда.
2) При недокрутке до правого края на 1 символ стрелка не рисуется.
Так то я ж "не весь вылез" ;-)
Это было... была попытка вспомнить, что же я такого там делал.
В окончательном варианте (грубо) "Len_MItemPtr > X2-X1-3)" остается, а второй перерасчет выкидывается, т.к. он там сеовершенно не впился.
We are the Borg. You will be assimilated.
So Say We All!
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Прокрутка меню и списков

Post by Denis »

Folder shortcuts всё ещё режутся в Far 1.8 b453 (TruncStr(strFolderName,60); в ffolders.cpp).
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Прокрутка меню и списков

Post by Skirda »

Denis wrote:Folder shortcuts всё ещё режутся в Far 1.8 b453 (TruncStr(strFolderName,60); в ffolders.cpp).
Ищи еще места, где ЭТО осталось и общим списком на мантис.
We are the Borg. You will be assimilated.
So Say We All!
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Прокрутка меню и списков

Post by Denis »

Прокрутка всё ещё глючит :)
Если в Far 1.8 b453 закомментарить TruncStr(strFolderName,60); в ffolders.cpp и повесить очень длинный каталог на шорткат - то до конца прокрутить не получится. Текущий код всё ещё не учитывает что в строке могут быть '&', которые не попадают в длинну строки.
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Re: Прокрутка меню и списков

Post by Denis »

Вот патч для необрезания строк в некоторых местах.
User avatar
t-rex
Страшный и ужасный
Posts: 4910
Joined: Tue 15 Mar, 2005 16:17
Location: Tel-Aviv
Has thanked: 1 time
Been thanked: 8 times
Contact:

Re: Прокрутка меню и списков

Post by t-rex »

Мантис и тока мантис.
Post Reply

Return to “Development”