View Issue Details

IDProjectCategoryView StatusLast Update
0001759Far ManagerPlugins API.Panelpublic2017-10-25 20:56
ReporterMaximusAssigned Tovskirdin 
PrioritynormalSeverityminorReproducibilityalways
Status assignedResolutionopen 
Platformx64OSWindowsOS Version7
Product Version3.0 
Target VersionFixed in Version 
Summary0001759: ProcessKeyW вызывается по два раза
DescriptionДля плагиновой панели ProcessKeyW вызывается два раза на каждое нажатие (Far3 build 2018) если плагин возвращает FALSE

один раз отсюда (manager.cpp:798, int Manager::ProcessKey(DWORD Key))
if (CtrlObject->Cp()->ActivePanel->SendKeyToPlugin(Key,TRUE))

второй раз (manager.cpp:1145)
CurrentFrame->ProcessKey(Key);
которая вызывает (filepanels.cpp:810)
ActivePanel->ProcessKey(Key)
TagsNo tags attached.
Build

Relationships

related to 0001687 closedvskirdin Wishes ProcessConsoleInput 

Activities

Maximus

2011-05-08 15:14

reporter   bugnote:0006864

Уточнение. Первый раз - это то, что раньше было PKF_PREPROCESS. Но теперь, оба вызова неразличимы (

vskirdin

2011-05-10 16:23

administrator   bugnote:0006867

тут, есть пара путей :-)

1. выкидываем "Pred", в этом случае плагины не будут получать клавишу на предобработку.

2. Плагин::ProcessKey(INPUT_RECORD) - здесь добавляем в INPUT_RECORD::Event::KeyEvent::dwControlKeyState "свой" флаг FAR_PREPROCESS, говорящий, что идет это предобработка либо делаем новый INPUT_RECORD::EventType, например, FARPRED_KEY_EVENT.

ы?

alexy

2011-05-10 16:37

administrator   bugnote:0006868

Плагин::ProcessKey(pk)
struct pk {
INPUT_RECORD,
Flags
}
?

vskirdin

2011-05-10 17:22

administrator   bugnote:0006869

Хмм.. Ну да, не подумал, так будет наверное лучше ;-)

vskirdin

2011-05-11 11:15

administrator   bugnote:0006870

нука... попробуем...
http://skirda-file.googlecode.com/files/mantis%230001759.7z


enum PROCESSKEYINFO_FLAGS
{
    PKIF_PREPROCESS = 0x00080000,
};

struct ProcessKeyInfo
{
    size_t StructSize;
    const INPUT_RECORD *Rec;
    PROCESSKEYINFO_FLAGS Flags;
};

    int WINAPI ProcessKeyW(HANDLE hPanel,const struct ProcessKeyInfo *Info);

alexy

2011-05-11 12:18

administrator   bugnote:0006871

Тока надо ещё PKIF_NORMAL = 0x0000000

vskirdin

2011-05-11 13:50

administrator   bugnote:0006872

Так?

typedef unsigned __int64 PROCESSKEYINFO_FLAGS;
static const PROCESSKEYINFO_FLAGS
    PKIF_PREPROCESS = 0x0000000000080000ULL,
    PKIF_NORMAL = 0x0000000000000000ULL;

вот подумалось, а uint64 не перебор? :-)
или норм?

Yegor

2011-05-11 14:21

reporter   bugnote:0006873

Везде уже флаги uint64, пусть будет и здесь тоже.

vskirdin

2011-05-11 14:35

administrator   bugnote:0006874

мысли следующие.
1. убираю нафиг препроцессный вызов ProcessKey (и этот инц решен), оставляя структуру такой:
struct ProcessKeyInfo
{
    size_t StructSize;
    const INPUT_RECORD *Rec;
};
2. добиваем 0001687 (и плагины перестают лазить "на задний двор" ФАРа - в таблицу импорта)

vskirdin

2011-05-12 00:23

administrator   bugnote:0006879

build 2027

...теперь только для A-плагинов. Препроцессы см. bug#1687

Maximus

2011-05-12 01:29

reporter   bugnote:0006880

struct забыл

int WINAPI ProcessPanelInputW(HANDLE hPanel,const struct ProcessPanelInputInfo *Info);

Maximus

2011-05-12 01:40

reporter   bugnote:0006881

int WINAPI ProcessConsoleInputW(struct ProcessConsoleInputInfo *Info);

alexy

2011-12-23 13:00

administrator   bugnote:0008198

Можно закрывать?

Issue History

Date Modified Username Field Change
2011-05-01 20:46 Maximus New Issue
2011-05-08 15:14 Maximus Note Added: 0006864
2011-05-10 16:23 vskirdin Note Added: 0006867
2011-05-10 16:37 alexy Note Added: 0006868
2011-05-10 17:22 vskirdin Note Added: 0006869
2011-05-11 11:15 vskirdin Note Added: 0006870
2011-05-11 12:18 alexy Note Added: 0006871
2011-05-11 13:45 vskirdin Assigned To => vskirdin
2011-05-11 13:45 vskirdin Status new => assigned
2011-05-11 13:50 vskirdin Note Added: 0006872
2011-05-11 14:21 Yegor Note Added: 0006873
2011-05-11 14:35 vskirdin Note Added: 0006874
2011-05-12 00:23 vskirdin Note Added: 0006879
2011-05-12 00:23 vskirdin Status assigned => feedback
2011-05-12 01:29 Maximus Note Added: 0006880
2011-05-12 01:29 Maximus Status feedback => assigned
2011-05-12 01:40 Maximus Note Added: 0006881
2011-12-23 13:00 alexy Note Added: 0008198
2017-10-25 20:56 JohnDoe Relationship added related to 0001687