View Issue Details

IDProjectCategoryView StatusLast Update
0003524WishesPlugins API.Panelpublic2024-06-29 22:57
ReporterJohnDoe Assigned Tozg  
PrioritynormalSeverityminorReproducibilityalways
Status assignedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP3
Fixed in Version3.0 
Summary0003524: FCTL_SETUSERSCREEN и диалоги
Description
   panel.GetUserScreen()
   far.Show()
   panel.SetUserScreen()
Этот код приводит к тому, что в буфере остаётся мусор в виде фантома меню.

Если то же самое делать поочерёдно, например макросами (см. ниже), то мусора не остаётся:
CtrlF2, CtrlF3, CtrlF4.

Мусор остаётся, если SetUserScreen вызвать не закрывая диалога, но в коде выше по замыслу на момент SetUserScreen меню уже закрыто.

Нельзя ли исправить?
(Если это баг, то прошу перенести в соответствующий проект)
Steps To ReproduceMacro {
  area="Common"; key="CtrlF1";
  action=function()
   panel.GetUserScreen()
   far.Show()
   panel.SetUserScreen()
  end;
}

Macro {
  area="Common"; key="CtrlF2";
  action=function()
   panel.GetUserScreen()
  end;
}

Macro {
  area="Common"; key="CtrlF3";
  action=function()
   far.Show()
  end;
}

Macro {
  area="Common"; key="CtrlF4";
  action=function()
   panel.SetUserScreen()
  end;
}
Additional InformationЕщё одна сложность с SetUserScreen.

(примеры искуственные, намеренно упрощены, но отражают реальную проблему)
lua:=panel.GetUserScreen(),panel.SetUserScreen(),Area.Current
luas:=panel.GetUserScreen(),panel.SetUserScreen(),Area.Current

Во втором случае меню появляется поверх консольного буфера, получается что SetUserScreen срабатывает "не вовремя".
TagsNo tags attached.
Build5082

Relationships

related to 0003302 new Разрешить переключение в Desktop из модальных окон 
has duplicate 0003501 closedDrKnS Не гасить панели при запуске префикса по ассоциации из командной строки 

Activities

JohnDoe

2017-10-12 20:52

updater   bugnote:0015652

Связанный тикет: 0003302

JohnDoe

2017-10-24 17:44

updater   bugnote:0015741

Этот код приводит к тому, что в буфере остаётся мусор в виде фантома меню.
А вот так мусора нет:

   panel.GetUserScreen()
   far.Show()
   far.Text()
   panel.SetUserScreen()

zg

2017-10-25 12:40

developer   bugnote:0015745

5072.

JohnDoe

2017-10-29 18:06

updater   bugnote:0015756

Спасибо, мусора больше нет.

Осталось проблема (или недопонимание) поведения команды
luas:=panel.GetUserScreen(),panel.SetUserScreen(),Area.Current

zg

2017-10-29 19:42

developer   bugnote:0015757

а что с ним не так? область Desktop?

JohnDoe

2017-10-30 08:18

updater   bugnote:0015758

Да, ожидается Shell, и при запуске через lua: так и есть.

zg

2017-10-30 08:25

developer   bugnote:0015760

при выполнении чего-то из комстроки, если активируется десктоп, то он активен завершения того, что выполняется.

JohnDoe

2017-10-30 09:18

updater   bugnote:0015763

У этого есть железобетонные основания, или есть смысл обсудить в отдельном тикете?

zg

2017-10-30 10:58

developer   bugnote:0015765

на мой взгляд выглядит всё логично. есть какие-то железобетонные основания что-то менять?

JohnDoe

2017-10-30 11:32

updater   bugnote:0015766

Паттерн использования предполагался следующий:
По префиксу выполнять произвольный скрипт, работающий с текущим контекстом, т.е. с панелями.
При этом хотелось бы использовать и подпанельный буфер, getuserscreen/write/setuserscreen.
Поэтому после setuserscreen хотелось бы возвращать панели.

есть какие-то железобетонные основания что-то менять?

zg
Сейчас обхожусь тем, что запускаю макрос через postmacro.
Но при использовании префикса в многострочной команде (меню пользователя), или из "применить команду" может потребоваться синхронное выполнение.

если активируется десктоп, то он активен завершения того, что выполняется.

zg
А какую именно задачу призвано решить такое поведение?

zg

2017-10-30 17:08

developer   bugnote:0015767

А какую именно задачу призвано решить такое поведение?

JohnDoe
чтобы вывод от запуска внешних и внутренних команд показывать. плагиновые префиксы обрабатываются внутри запускателя. раскрытие алиасов, запрет переопределения far:config, far:about, может ещё что-то. к моменту, когда известно, что это префикс, десктоп уже в том состоянии, которое описано выше. возможно можно сделать всё по другому, но это надо переделывать запускатель.
но 5082, если ничего серьёзного не сломалось, иначе откачу.

JohnDoe

2017-10-31 22:43

updater   bugnote:0015778

Спасибо!

JohnDoe

2024-06-29 22:56

updater   bugnote:0017570

Проблема оказывается не ушла до сих пор (или вернулась опять).


   panel.GetUserScreen()
   far.Show()
   panel.SetUserScreen()

Оставляет фантом в буфере.

Issue History

Date Modified Username Field Change
2017-10-12 20:51 JohnDoe New Issue
2017-10-12 20:52 JohnDoe Note Added: 0015652
2017-10-24 17:44 JohnDoe Note Added: 0015741
2017-10-25 12:40 zg Note Added: 0015745
2017-10-29 18:06 JohnDoe Note Added: 0015756
2017-10-29 19:42 zg Note Added: 0015757
2017-10-30 08:18 JohnDoe Note Added: 0015758
2017-10-30 08:25 zg Note Added: 0015760
2017-10-30 09:18 JohnDoe Note Added: 0015763
2017-10-30 10:58 zg Note Added: 0015765
2017-10-30 11:32 JohnDoe Note Added: 0015766
2017-10-30 17:08 zg Note Added: 0015767
2017-10-31 21:29 JohnDoe Relationship added related to 0003302
2017-10-31 22:42 JohnDoe Relationship added related to 0003501
2017-10-31 22:43 JohnDoe Status new => resolved
2017-10-31 22:43 JohnDoe Note Added: 0015778
2017-10-31 23:09 DrKnS Relationship replaced has duplicate 0003501
2017-11-01 09:02 DrKnS Assigned To => zg
2017-11-01 09:02 DrKnS Status resolved => closed
2017-11-01 09:02 DrKnS Resolution open => fixed
2017-11-01 09:02 DrKnS Fixed in Version => 3.0
2017-11-01 09:02 DrKnS Build => 5082
2024-06-29 22:56 JohnDoe Note Added: 0017570
2024-06-29 22:57 JohnDoe Status closed => assigned