Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Последствия b5838 Git-7af0fd7b1c - сломанный диалог подтверждения при наличии залоченных файлов #15

Open
VictorVG opened this issue Jul 7, 2021 · 5 comments
Labels
bug Something isn't working

Comments

@VictorVG
Copy link
Owner

VictorVG commented Jul 7, 2021

Вроде это явление устранили в b5837 Git-f3deffb21, а оно снова после b5838 7af0fd7b1c вылезло в b5839 Git-a669ce696 и в новом b5844 Git-afecc83c6 аналогичным образом проявляется.

На данный момент точно известно что на b5837 Git-f3deffb21 данных явлений нет, это было проверено на нескольких независимых машинах.

Вот что можно увидеть на b5838 7af0fd7b1c - b5844 Git-afecc83c6:

1

эта ошибка возникла в b5834 Git-b80cb3713 и была устранена в b5837 Git-f3deffb21, но вернулась после b5838 7af0fd7b1c...

Для воспроизведения этих эффектов хватает минимума: Far.exe + единственный плагин LuaMacro + скрипт test.lua и наличия в каталоге %TMP% любого подходящего под маску залоченного другим приложением или ОС файла:

local Msk="/.+\\.(log|tmp|temp|(~\\w?|\\s?)tmp(~|\\s?)\\w?log|dir|xml|c|h|(c|h)pp|txt|(h|i)\\.(\\w?|\\s?|(c|h)pp|c|h|rc))$/i";
local Q = "Delete temporary files"
Macro{
  id="E446E62C-1BC3-4CDF-8E54-1A5C1FF32663";
  area="Shell";
  key="AltT";
  description="Clear Temp";
  priority=60;
  condition=function() return (not APanel.Empty) end;
  action=function()
  Panel.Select(0,1,3,Msk)
  if APanel.Selected and msgbox("Clear TEMP",Q:format(APanel.SelCount),0x20000)==1 then Keys("ShiftDel Enter") end
  Panel.Select(0,0,3,Msk)
 end;
}

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

Шаги для воспроизведения:

  1. распаковываем любой дистрибутив указанных билдов, и оставляем только фар и луамакро и один из языков, всё иное сразу стираем;
  2. в Far.exe.ini пишем:
[General]
UseSystemProfiles=0
UserProfileDir=%FARHOME%\Profile
GlobalUserMenuDir=%FARHOME%
UserLocalProfileDir=%FARHOME%\Profile
  1. кладём test.lua в %FARHOME%\Profile\Macros\scripts и если в профиле есть любые иные скрипты или модули стираем их;
  2. запускаем тестовую копию из-под оболочки ОС (Проводника или Win-R) я специально проверял от имени админа чтобы максимально снизить влияние прав доступа пользователя на результат опыта;
  3. в комстроке запущенной копии cd %TMP% -> Enter;
  4. Alt-T
  5. Макрос выведет запрос удаления <счётчик найденного> подходящих под маску файлов;
  6. Подтверждаем его и видим указанную на скриншоте картину - часть сообщения о невозможности удалить заблокированные другим процессом файлы скрыта под активной панелью, если кликнуть по нему мышкой оно появится, но так же окажется что удалится только один из попавших под маску файлов, для удаления каждого следующего придётся не менее N раз повторить пункты 6) - 8) - это второе выявляемое в эксперименте последствие b5838 7af0fd7b1c .
@VictorVG
Copy link
Owner Author

VictorVG commented Jul 8, 2021

Ошибки с удалением хотя и порождаются последстваиями b5838, но похоже сидят в макродвижке и вынесены в отдельный инц #16

@VictorVG
Copy link
Owner Author

VictorVG commented Jul 8, 2021

Глюк с "прятаньем" части диалога ошибки из-за блокировки файлов под активную панель похоже порождается вызовом строки

Panel.Select(0,0,3,Msk)

когда её нет на b5838 7af0fd7b1c и новее он не проявляется.

@VictorVG VictorVG added question Further information is requested bug Something isn't working and removed question Further information is requested labels Jul 8, 2021
@VictorVG
Copy link
Owner Author

VictorVG commented Jul 8, 2021

Для проявления эффекта "сломанного диалога" достаточно выполнить из командной строки Far скрипт test.lua:

local Msk="/.+\\.(log|tmp|temp)$/i";
local Q , T = "\nDo you like delete all (%d units) files?" , "Delete unused files";
Panel.Select(0,1,3,Msk)
if APanel.Selected and msgbox(T,Q:format(APanel.SelCount),0x20000)==1 then Keys("ShiftDel Enter") end
Panel.Select(0,0)

lua:@test.lua при наличия в каталоге хотя бы одного подпадаюего под маску залоченного файла.

@VictorVG VictorVG changed the title Последствия b5838 Git-7af0fd7b1c - ошибки удаления и сломанный диалог Последствия b5838 Git-7af0fd7b1c - сломанный диалог подтверждения при наличии залоченных файлов Jul 8, 2021
@VictorVG
Copy link
Owner Author

VictorVG commented Aug 9, 2021

воспроизводится и на b5872, как на пользовательской:

b5872

так и на официальной сборках

b5872_ofic

с единственным плагином LuaMacro с удалением профиля при наличии в %TMP% хотябы одного попадающего под маску залоченного файла. Хватает команды:

cd %TMP%
lua: Panel.Select(0,1,3,"/.+\\.(log|tmp|temp)$/i") if APanel.Selected then Keys("ShiftDel Enter") end  Panel.Select(0,0)

@VictorVG
Copy link
Owner Author

VictorVG commented Aug 9, 2021

Последствия древнего b4631, а поломалось в b4652....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant