View Issue Details

IDProjectCategoryView StatusLast Update
0002834Far ManagerPlugins APIpublic2017-10-17 14:48
ReporterJohnDoe Assigned To 
PrioritynormalSeverityminorReproducibilitysometimes
Status newResolutionopen 
Product Version3.0 
Summary0002834: ACTL_GETWINDOWTYPE не работает в некоторых областях
DescriptionACTL_GETWINDOWINFO работает везде.
ACTL_GETWINDOWTYPE не работает в граббере, горизонтальном меню, и быстром поиске.
Steps To ReproduceMacro {
  area="Common"; key="ShiftF1";
  action=function()
    far.Show(
      far.AdvControl"ACTL_GETWINDOWINFO",
      far.AdvControl"ACTL_GETWINDOWTYPE")
  end;
}
TagsNo tags attached.
Build

Activities

zg

2014-10-17 13:32

developer   bugnote:0013095

а чем этот баг репорт отличается от 0002761?

JohnDoe

2014-10-17 14:28

updater   bugnote:0013096

2761 это всего лишь пожелание по константам, а тут же явный баг.

Вы намекаете что источник проблемы один. Ok.
Самостоятельно выяснить это я не мог, необучен.

zg

2014-10-17 22:00

developer   bugnote:0013099

тут явная фича, неопубликованные константы не возвращаются.

JohnDoe

2014-10-20 14:26

updater   bugnote:0013109

Какая-то неконсистентная фича, по ACTL_GETWINDOWINFO ведь возвращаются

Maximus

2014-11-12 12:11

reporter  

0001-Expose-WTYPE_SEARCH.patch (2,569 bytes)   
From aada2ba2711bbfd1cef79a817d85d9700e6beee7 Mon Sep 17 00:00:00 2001
From: Maximus5 <ConEmu.Maximus5@gmail.com>
Date: Wed, 12 Nov 2014 20:24:14 +0300
Subject: [PATCH] Far3bis. Expose WTYPE_SEARCH

---
 enc/enc_rus3.work/meta/structures/windowtype.html | 2 ++
 unicode_far/mix.cpp                               | 1 +
 unicode_far/plugapi.cpp                           | 1 +
 unicode_far/plugin.hpp                            | 1 +
 4 files changed, 5 insertions(+)

diff --git a/enc/enc_rus3.work/meta/structures/windowtype.html b/enc/enc_rus3.work/meta/structures/windowtype.html
index ad7137a..8374ade 100644
--- a/enc/enc_rus3.work/meta/structures/windowtype.html
+++ b/enc/enc_rus3.work/meta/structures/windowtype.html
@@ -47,6 +47,8 @@ struct WindowType
     <td class="cont" width="60%">���</td></tr>
     <tr class="cont"><td class="cont" width="40%"><a name="WTYPE_HELP">WTYPE_HELP</a></td>
     <td class="cont" width="60%">���� ���������</td></tr>
+    <tr class="cont"><td class="cont" width="40%"><a name="WTYPE_SEARCH">WTYPE_SEARCH</a></td>
+    <td class="cont" width="60%">���� ������� ������ � �����</td></tr>
     </table>
     </div>
 </div>
diff --git a/unicode_far/mix.cpp b/unicode_far/mix.cpp
index 0964591..124192a 100644
--- a/unicode_far/mix.cpp
+++ b/unicode_far/mix.cpp
@@ -153,6 +153,7 @@ WINDOWINFO_TYPE WindowTypeToPluginWindowType(const int fType)
 		{windowtype_dialog,     WTYPE_DIALOG},
 		{windowtype_menu,       WTYPE_VMENU},
 		{windowtype_help,       WTYPE_HELP},
+		{windowtype_search,     WTYPE_SEARCH},
 		{windowtype_combobox,   WTYPE_COMBOBOX},
 		{windowtype_findfolder, WTYPE_FINDFOLDER},
 		{windowtype_grabber,    WTYPE_GRABBER},
diff --git a/unicode_far/plugapi.cpp b/unicode_far/plugapi.cpp
index e4a0b4c..26a62d5 100644
--- a/unicode_far/plugapi.cpp
+++ b/unicode_far/plugapi.cpp
@@ -485,6 +485,7 @@ intptr_t WINAPI apiAdvControl(const GUID* PluginId, ADVANCED_CONTROL_COMMANDS Co
 				case WTYPE_DIALOG:
 				case WTYPE_VMENU:
 				case WTYPE_HELP:
+				case WTYPE_SEARCH:
 				//case WTYPE_COMBOBOX:
 				//case WTYPE_FINDFOLDER:
 				//case WTYPE_GRABBER:
diff --git a/unicode_far/plugin.hpp b/unicode_far/plugin.hpp
index da3fd22..859830d 100644
--- a/unicode_far/plugin.hpp
+++ b/unicode_far/plugin.hpp
@@ -1358,6 +1358,7 @@ enum WINDOWINFO_TYPE
 	WTYPE_DIALOG                    = 4,
 	WTYPE_VMENU                     = 5,
 	WTYPE_HELP                      = 6,
+	WTYPE_SEARCH                    = 7,
 #ifdef FAR_USE_INTERNALS
 	WTYPE_COMBOBOX,
 	WTYPE_FINDFOLDER,
-- 
1.9.4.msysgit.2

0001-Expose-WTYPE_SEARCH.patch (2,569 bytes)   

JohnDoe

2017-10-17 07:59

updater   bugnote:0015672

тут явная фича, неопубликованные константы не возвращаются.

zg
А есть какой-то смысл в этом ограничении?
"Тип определить не удалось", но окно-то есть, и информацию по нему получить возможно (и полезно).

zg

2017-10-17 10:37

developer   bugnote:0015675

смысл в том, что тип окна может поменятся. например вообразим себе такую фантастическую ситуацию, что кто-то таки перепишет дерево и окно с деревом станет диалогом. если WTYPE_FINDFOLDER опубликовано, то придётся костылить, чтобы для этого конкретного диалога возвращалась она, нет, выкинули и забыли.

JohnDoe

2017-10-17 11:26

updater   bugnote:0015676

Last edited: 2017-10-17 11:31

Константу я не предлагаю публиковать (как и WTYPE_SEARCH).

Но по ACTL_GETWINDOWINFO всё равно информация возвращается, что хорошо, (легко например понять сколько окон, какое текущее, и что оно модальное, и т.п.).
Константы соответствующей нет, что как бы намекает, что больше ничего сделать с окном плагин не может.

В этой же ситуации ACTL_GETWINDOWTYPE просто не сработает, в чём конечно же есть логика.
Тем не менее вопрос: не будет ли проще, если ACTL_GETWINDOWTYPE будет работать аналогично ACTL_GETWINDOWINFO? Ведь окна с неизвестным типом плагин и сам легко отсеет.

zg

2017-10-17 12:37

developer   bugnote:0015677

приведите конкретный практический пример, где это будет полезно?

DrKnS

2017-10-17 13:46

administrator   bugnote:0015678

> Какая-то неконсистентная фича, по ACTL_GETWINDOWINFO ведь возвращаются

Я тоже склонен считать это багом.
Правда, в ACTL_GETWINDOWINFO.

JohnDoe

2017-10-17 14:39

updater   bugnote:0015679

Last edited: 2017-10-17 14:48

Я тоже склонен считать это багом.
Правда, в ACTL_GETWINDOWINFO.

DrKnS
Я не считаю текущее поведение ACTL_GETWINDOWTYPE багом, всё работает согласно Энциклопедии.
И в любом случае ACTL_GETWINDOWINFO ломать пожалуйста не надо, готов привести примеры использования и обосновать практическую необходимость.

приведите конкретный практический пример, где это будет полезно?

zg
Необходимости (как таковой) в изменении ACTL_GETWINDOWTYPE нет, но как по мне, то было бы проще, если бы функции вели себя одинаково.
Если это не достаточный аргумент, то тикет можно закрыть, пока не появятся более веские доводы.

P.S.
К АПИ отношения не имеет, но в LuaFAR интерфейс функции таков, что предрасполагает к ошибкам.
Баг есть например в picture.lua
      if far.AdvControl(F.ACTL_GETWINDOWTYPE).Type==F.WTYPE_PANELS then
Если функция не вернёт таблицу, то этот код завершится с ошибкой.
Проверил, с быстрым поиском реально падает.
(Разумеется, это ничего больше не подтверждает, кроме того, что в picture.lua баг)

Issue History

Date Modified Username Field Change
2014-10-17 06:58 JohnDoe New Issue
2014-10-17 13:32 zg Note Added: 0013095
2014-10-17 14:28 JohnDoe Note Added: 0013096
2014-10-17 22:00 zg Note Added: 0013099
2014-10-20 14:26 JohnDoe Note Added: 0013109
2014-11-12 12:11 Maximus File Added: 0001-Expose-WTYPE_SEARCH.patch
2017-10-17 07:59 JohnDoe Note Added: 0015672
2017-10-17 10:37 zg Note Added: 0015675
2017-10-17 11:26 JohnDoe Note Added: 0015676
2017-10-17 11:31 JohnDoe Note Edited: 0015676
2017-10-17 12:37 zg Note Added: 0015677
2017-10-17 13:46 DrKnS Note Added: 0015678
2017-10-17 14:39 JohnDoe Note Added: 0015679
2017-10-17 14:41 JohnDoe Note Edited: 0015679
2017-10-17 14:45 JohnDoe Note Edited: 0015679
2017-10-17 14:48 JohnDoe Note Edited: 0015679