View Issue Details

IDProjectCategoryView StatusLast Update
0000949Far ManagerPlugins APIpublic2018-11-09 10:07
ReporterNikolay Assigned Tovskirdin  
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionreopened 
Summary0000949: Баги при вызове AdvControl с ACTL_REDRAWALL
DescriptionFAR 2.0 build 1007
1. нарушение обработки клавиш, если в обработчике DN_KEY позвать ACTL_REDRAWALL.
2. иногда панели перерисовываются погашенными.
Additional InformationКод для воспроизведения багов:

#include "plugin.hpp"

PluginStartupInfo g_info;

void WINAPI _export SetStartupInfoW(const struct PluginStartupInfo* psi)
{
    g_info = *psi;
}

void WINAPI _export GetPluginInfoW(struct PluginInfo* pPI)
{
    pPI->StructSize = sizeof(PluginInfo);

    static const wchar_t* strs[] = { L"RedrawAllBug" };
    pPI->PluginMenuStrings = strs;
    pPI->PluginMenuStringsNumber = 1;
}

LONG_PTR WINAPI DlgProc(HANDLE hDlg, int msg, int param1, LONG_PTR param2)
{
    if (msg == DN_KEY)
    {
        // проблема раз - нарушение обработки клавиш - попробуй закрыть окно по Esc, например
        g_info.AdvControl(g_info.ModuleNumber, ACTL_REDRAWALL, 0);
    }
    return g_info.DefDlgProc(hDlg, msg, param1, param2);
}

HANDLE WINAPI _export OpenPluginW(int OpenFrom, INT_PTR item)
{
    FarDialogItem items[1] = {
        {DI_BUTTON,0,1,0,0,0,0,DIF_CENTERGROUP,1,L"Ok"}
    };
    {
        HANDLE hDlg = g_info.DialogInit(g_info.ModuleNumber, -1, -1, 30, 3, NULL, items, 1, 0, 0, &DlgProc, 0);
        g_info.DialogRun(hDlg);
        g_info.DialogFree(hDlg);
    }

    // проблема два - новый диалог появится на фоне погашенных панелей
    g_info.AdvControl(g_info.ModuleNumber, ACTL_REDRAWALL, 0);

    {
        HANDLE hDlg = g_info.DialogInit(g_info.ModuleNumber, -1, -1, 30, 3, NULL, items, 1, 0, 0, &DlgProc, 0);
        g_info.DialogRun(hDlg);
        g_info.DialogFree(hDlg);
    }

    return INVALID_HANDLE_VALUE;
}
TagsNo tags attached.
Build

Relationships

related to 0001101 closed Far Manager 1.7x Баги при вызове AdvControl с ACTL_REDRAWALL 

Activities

vskirdin

2009-06-29 15:19

administrator   bugnote:0003650

Nikolay, есть возможность скомпилить ФАР?
если да, то проверь после 1013 вот с таким патчиком для plugapi.cpp


*************** INT_PTR WINAPI FarAdvControl(INT_PTR Mod
*** 732,738 ****
      }
  
      case ACTL_REDRAWALL:
! return FrameManager->ProcessKey(KEY_CONSOLE_BUFFER_RESIZE);
  
    }
    return FALSE;
--- 732,746 ----
      }
  
      case ACTL_REDRAWALL:
! {
! if(FrameManager)
! {
! int Ret=FrameManager->ProcessKey(KEY_CONSOLE_BUFFER_RESIZE);
! FrameManager->PluginCommit();
! return Ret;
! }
! return FALSE;
! }
  
    }
    return FALSE;


здесь проблема в том, что "FrameManager->ProcessKey(KEY_CONSOLE_BUFFER_RESIZE);" только подготавливает данные для рефреша, и... ESC приходит в диалог, но натыкается на проверку видимости диалога... а он в это время как бы еще погашен.

Nikolay

2009-06-30 11:22

reporter   bugnote:0003652

Проверю завтра, раньше не получится.

Nikolay

2009-06-30 19:06

reporter   bugnote:0003659

Попробовал на 1013. С применением патча обе проблемы устраняются.

vskirdin

2009-07-01 07:28

administrator   bugnote:0003665

build 1014

NightRoman

2009-07-01 09:01

reporter   bugnote:0003666

Подписался вчера на эту тему и сегодня получил такое уведомление - The following issue requires your FEEDBACK. Не знаю, должен ли я менять статусы тикета, я ведь не открывал его, если должен, напишите. А пока мой FEEDBACK просто письменный.

Взял 1014, собрал и протестил. На форуме я писал про 2 замеченных (нежелательных) изменения в 1013:

1) мои юнит тесты с диалогами стали работать иначе - это пофиксено в 1014, тесты работают, как в 1012 и раньше.

2) при перезапуске диалога-списка-фильтра в 1013 возникает ощутимая задержка после закрытия старого диалога и открытия нового, четко наблюдаю экран Фара без диалогов в этом временном промежутке (например, панели или редактор). Раньше новый диалог появлялся практически мгновенно. Возможно, это уже "новая фича", новое, но ожиданное и осмысленное поведение Фара, тогда хотелось бы подтверждения этого факта - буду думать, как этот эффект у себя бороть. А если это неожиданное поведение, буду думать "в другую строну".

Nikolay

2009-07-01 14:03

reporter   bugnote:0003668

Last edited: 2009-07-01 14:06

1014 - оба бага отсутствуют.

Nikolay

2009-07-01 14:27

reporter   bugnote:0003669

Last edited: 2009-07-01 14:32

Зато добавился новый баг - ACTL_REDRAWALL не перерисовывает весь экран.
Код для демонстрации: результат - часть окна фара ниже диалога заполнена мусором :
HANDLE WINAPI _export OpenPluginW(int OpenFrom, INT_PTR item)
{
    FarDialogItem items[1] = {
        {DI_BUTTON,0,1,0,0,0,0,DIF_CENTERGROUP,1,L"Ok"}
    };
    HANDLE hDlg = g_info.DialogInit(g_info.ModuleNumber, -1, -1, 30, 3, NULL, items, 1, 0, 0, NULL, 0);
    g_info.DialogRun(hDlg);

    CONSOLE_SCREEN_BUFFER_INFO bi;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &bi);
    COORD c = {0, 0};
    DWORD foo;
    FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), L'X', bi.dwSize.X * bi.dwSize.Y, c, &foo);
    g_info.AdvControl(g_info.ModuleNumber, ACTL_REDRAWALL, 0);

    g_info.DialogFree(hDlg);

    return INVALID_HANDLE_VALUE;
}

vskirdin

2009-07-01 16:07

administrator   bugnote:0003670

Nikolay, тогла будь добр, измени статус с "отработан" на другой

Nikolay

2009-07-01 16:39

reporter   bugnote:0003671

Я бы с радостью, но у меня в списке возможных для замены статусов только один статус "resolved"...

HaRT

2009-10-07 18:42

reporter   bugnote:0004221

> в списке возможных для замены статусов только один статус "resolved"
Пусть это не смущает — там есть Resolution: reopened.

HaRT

2009-10-09 17:04

reporter   bugnote:0004234

Похоже, что-то недо-настроено — этот инц выглядит так, как будто все довольны. :(

JohnDoe

2015-01-21 10:16

updater   bugnote:0013428

?

Issue History

Date Modified Username Field Change
2009-06-23 11:36 Nikolay New Issue
2009-06-29 15:19 vskirdin Note Added: 0003650
2009-06-30 11:22 Nikolay Note Added: 0003652
2009-06-30 19:06 Nikolay Note Added: 0003659
2009-07-01 07:28 vskirdin Status new => assigned
2009-07-01 07:28 vskirdin Assigned To => vskirdin
2009-07-01 07:28 vskirdin Note Added: 0003665
2009-07-01 07:28 vskirdin Status assigned => feedback
2009-07-01 09:01 NightRoman Note Added: 0003666
2009-07-01 14:03 Nikolay Note Added: 0003668
2009-07-01 14:06 Nikolay Note Edited: 0003668
2009-07-01 14:27 Nikolay Note Added: 0003669
2009-07-01 14:32 Nikolay Note Edited: 0003669
2009-07-01 14:32 Nikolay Note Edited: 0003669
2009-07-01 16:07 vskirdin Note Added: 0003670
2009-07-01 16:39 Nikolay Note Added: 0003671
2009-10-07 18:42 HaRT Note Added: 0004221
2009-10-08 08:14 Nikolay Status feedback => resolved
2009-10-08 08:15 Nikolay Resolution open => reopened
2009-10-09 17:04 HaRT Note Added: 0004234
2009-10-09 17:29 vskirdin Status resolved => new
2015-01-21 10:16 JohnDoe Note Added: 0013428
2018-11-09 10:07 JohnDoe Relationship added related to 0001101