Неожиданный текущий файл при запуске панели

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Неожиданный текущий файл при запуске панели

Post by NightRoman »

Наблюдаю странное поведение Фара при запуске панели плагина и не могу понять,
то ли это баг у меня в плагине, то ли фича Фара. Надеюсь, кто-то из фартима
может помочь разобраться.

Плагин FarNet\PowerShellFar, и вот его скрипты. Запускать командой:

Code: Select all

ps: .\<имя скрипта>
"case1-ok-.ps1" - нормальное поведение, текущий файл - "точки":

Code: Select all

# Expected, the panel is opened with the current item "dots"
$Explorer = New-Object PowerShellFar.ObjectExplorer -Property @{
	AsGetData = {
		[PSCustomObject]@{_id = 1; name = 'name1'}
		[PSCustomObject]@{_id = 2; name = 'name2'}
		[PSCustomObject]@{_id = 3; name = 'name3'}
	}
}
$Explorer.OpenPanel()
"case2-ko-.ps1" - странное поведение, текущий файл - "3":

Code: Select all

# Unexpected, the panel opened with the current item 3
$Explorer = New-Object PowerShellFar.ObjectExplorer -Property @{
	AsGetData = {
		[PSCustomObject]@{_id = 1; name = 'name1'}
		[PSCustomObject]@{_id = 2; name = 'name2'}
		[PSCustomObject]@{_id = 3}
	}
}
$Explorer.OpenPanel()
Пояснения о том, что делает плагин. Панель с двумя колонками, одна "Name", туда
помещаются данные "name", другая "Description", туда помещаются данные "_id".
Порядок колонок не имеет значения. Режим панели "Unsorted".

Подозреваю, что это как-то связано с пустым именем файла "3". Но почему?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Неожиданный текущий файл при запуске панели

Post by DrKnS »

NightRoman wrote: Mon 23 Dec, 2019 11:21 Подозреваю, что это как-то связано с пустым именем файла "3". Но почему?
Перед обновлением плагиновой панели имя текущего файла запоминается в переменную, затем панель обновляется и, если вдруг имя нового файла в текущей позиции отличается от запомненного, производится переход на запомненный файл.
Если же панель обновляется впервые, то запоминать еще нечего, переменная остается пустой. Панель обновляется, имя нового файла в позиции 0 ("..") отличается от содержимого переменной (""), производится переход на "", а в конкретно вашем случае такой файл есть, ура!

User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Неожиданный текущий файл при запуске панели

Post by NightRoman »

Спасибо, понятно. А это нормальное поведение? Зачем позиционировать и искать, если впервые панель запускается?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Неожиданный текущий файл при запуске панели

Post by NightRoman »

А, я примечание не приметил. То есть это не нормальное поведение, надеюсь.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Неожиданный текущий файл при запуске панели

Post by DrKnS »

NightRoman wrote: Mon 23 Dec, 2019 18:17Зачем
А незачем, 5533.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Неожиданный текущий файл при запуске панели

Post by NightRoman »

Работает, как надо. Ничего не поломалось в моих тестах. Добавляю тест, покрывающий этот случай.
Спасибо.
Post Reply

Return to “Разработка плагинов”