View Issue Details

IDProjectCategoryView StatusLast Update
0000555Far Manager 1.7xMacropublic2011-12-26 17:23
ReporterJohnDoe Assigned Tovskirdin  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version1.70 
Summary0000555: Menu.Select и меню с хоткеями.
DescriptionПри попытке выбрать пункт меню, на который назначен хоткей, не получается использовать режим MENUSELECT_MATCH_ENTIRE

макрос для тестирования:

F11
Home
Menu.Select("Temporary panel",MENUSELECT_MATCH_ENTIRE)
msgbox("Temporary panel","MENUSELECT_MATCH_ENTIRE")
Home
Menu.Select("Temporary panel",MENUSELECT_MATCH_TAIL)
msgbox("Temporary panel","MENUSELECT_MATCH_TAIL")
TagsNo tags attached.
Build0

Activities

DrKnS

2008-06-16 03:17

administrator   bugnote:0001593

При назначении хоткея пункту меню плагинов, он (хоткей) просто вписывается перед именем плагина.
Т. е. надо так и писать: Menu.Select("T Temporary panel", MENUSELECT_MATCH_ENTIRE)

JohnDoe

2008-06-16 03:20

updater   bugnote:0001594

Ок, но нужна ли эта фича?
Она ведь не позволяет полноценно использовать MENUSELECT_MATCH_ENTIRE

alexy

2008-06-16 03:20

administrator   bugnote:0001595

Ну это уже издевательство IMHO :) Думаю что фар должен не включать хоткей в строку при этой проверке.

DrKnS

2008-06-16 03:35

administrator   bugnote:0001597

Я что, против? :)
Только кроме меню плагинов таких "меню с хоткеями" в фаре ещё куча (конфигурация плагинов, юзерменю, главное меню, диски...), и расставлять в каждом костыли с отрезанием хоткея как-то некрасиво.

Тут был бы уместен некий "service region" для меню, в который хоткей и пихать.

alexy

2008-06-16 07:45

administrator   bugnote:0001599

Так фича же работает для любого меню, и класс меню прекрасно знает у каких пунктов есть хоткей, или я что то пропускаю?

DrKnS

2008-06-16 09:25

administrator   bugnote:0001600

Класс знает про свой DWORD AccelKey, а спич о текстовых представлениях хоткеев, которые хранятся вместе с названием пункта в char Name[128], причем то спереди (как в меню плагинов) то сзади (как в главном), и отрезать которые тоже прийдётся руками.

JohnDoe

2008-08-12 04:45

updater   bugnote:0001733

Значит за исключением главного меню везде хоткеи хранятся спереди?

> и расставлять в каждом костыли с отрезанием хоткея как-то некрасиво.
Так может в одном месте поставить костыль? В самой макро-функции Menu.Select?

JohnDoe

2010-06-20 23:55

updater   bugnote:0005493

Эта же проблема актуальна также для Menu.Value и Menu.GetValue().

vskirdin

2010-06-29 13:15

administrator   bugnote:0005500

Не, костыль в Menu.Select() - это лишний ИИ, т.к. пункт меню, без хоткеев, сам по себе можно обозвать "T Temporary panel". И че тогда делать?

Видимо разумнее перелопатить систему меню: отделить "_назначаемые_" хоткеи от строки наименования. "Назначаемые" - те, "кого" обычно по F4 назначают :-)

Посему нужно сделать:
1. этот Инц закрыть (в пользу п.2)
2. завести новый, в котором описать разделение мух и котлет.

В первую очередь это значительно упростит код формирования пунктов меню в коде Far (особенно херню с выравниванием в UserMenu). Т.е., например, вместо
ListItem.strName.Format(L" %s", strName.CPtr());
будет
ListItem.strName=strName;
А вместо
ListItem.strName.Format(L"&%c%s %s",strHotKey.At(0),(strHotKey.At(0)==L'&'?L"&":L""), strName.CPtr());
будет
ListItem.strHotKey=strHotKey;
ListItem.strName=strName;

JohnDoe

2010-06-29 14:50

updater   bugnote:0005507

Кто заведёт новый инц?
Я могу скопировать делали из сообщения выше, не более.

vskirdin

2010-06-29 15:05

administrator   bugnote:0005509

а почему сам не хочешь завести?

JohnDoe

2010-06-29 16:38

updater   bugnote:0005510

Запросто: 0001422

Issue History

Date Modified Username Field Change
2008-06-16 02:53 JohnDoe New Issue
2008-06-16 02:53 JohnDoe Status new => assigned
2008-06-16 02:53 JohnDoe Assigned To => vskirdin
2008-06-16 03:17 DrKnS Note Added: 0001593
2008-06-16 03:20 JohnDoe Note Added: 0001594
2008-06-16 03:20 alexy Note Added: 0001595
2008-06-16 03:35 DrKnS Note Added: 0001597
2008-06-16 07:45 alexy Note Added: 0001599
2008-06-16 09:25 DrKnS Note Added: 0001600
2008-08-12 04:45 JohnDoe Note Added: 0001733
2010-06-20 23:55 JohnDoe Note Added: 0005493
2010-06-29 13:15 vskirdin Note Added: 0005500
2010-06-29 13:15 vskirdin Status assigned => feedback
2010-06-29 14:50 JohnDoe Note Added: 0005507
2010-06-29 14:50 JohnDoe Status feedback => assigned
2010-06-29 15:05 vskirdin Note Added: 0005509
2010-06-29 16:38 JohnDoe Note Added: 0005510
2010-06-29 16:38 JohnDoe Status assigned => resolved
2010-07-12 00:20 alexy Build => 0
2010-07-12 00:20 alexy Status resolved => closed
2010-07-12 00:20 alexy Resolution open => fixed