Page 17 of 18

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Fri 02 Nov, 2018 10:51
by buniak_a_h

Latest post of the previous page:

1. Ваш же вопрос на другом форуме. И там же ответ :-)
2. И вообще. Попробуйте убрать всё, что кончается на x86, а не на x64.
У меня работает (голый ФАР). Увы, при перетаскивании из GUI-приложения на панель ФАРа, запущенного из ConEmu, вместо копирования просто в командную строку вводится путь к исходному файлу.
Кстати, никто не знает, как "подружить" этот замечательный плагин с ФАРом, запущенным из-под ConEmu ?

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Fri 02 Nov, 2018 11:03
by dmitrik
buniak_a_h wrote: Fri 02 Nov, 2018 10:51 1. Ваш же вопрос на другом форуме. И там же ответ
Ну так получив ответ там и поняв, что проблема в плагине Drag-n-Drop, я пришел сюда, к автору плагина.
buniak_a_h wrote: Fri 02 Nov, 2018 10:51 2. И вообще. Попробуйте убрать всё, что кончается на x86, а не на x64.
Эм... У меня Far x86, я же выше написал.

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Fri 02 Nov, 2018 11:11
by John Doe
buniak_a_h wrote: Fri 02 Nov, 2018 10:51 Кстати, никто не знает, как "подружить" этот замечательный плагин с ФАРом, запущенным из-под ConEmu ?
Мне казалось что Conemu и сам обладает подобной функциональностью, из коробки.

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Fri 02 Nov, 2018 11:28
by buniak_a_h
dmitrik wrote: Fri 02 Nov, 2018 11:03 Эм... У меня Far x86, я же выше написал.
Сорри... Зрение ни к чёрту...
John Doe wrote: Fri 02 Nov, 2018 11:11 Мне казалось что Conemu и сам обладает подобной функциональностью, из коробки.
Да, так написано. Но без плагина ИЗ ФАРа в GUI-приложение перетащить не удалось, а в обратную сторону - вообще никак. Возможно, дело в настройках самого ConEmu, я уже много чего перепробовал (связанного с мышкой) - отчаялся. Даже написал макрос, чтоб после Drop-а на панель вызывать банальный move из временной папи в папку панели, используя ту строку с именем файла, что пишется при перетаскивании.

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Fri 02 Nov, 2018 12:07
by HaRT
dmitrik wrote: Fri 02 Nov, 2018 09:41 Судя по ошибкам, происходит разадресация нулевого указателя.
Сообщения об ошибках были бы информативнее и практичнее, если бы вы потрудились (1) как подсказывает повторяющийся в тексте ошибок фрагмент get the pdb, подложить соответствующий Far.pdb (скачать по соответствующей кнопке pdb со страницы загрузки Фара) рядом с Far.exe и (2) выложить текстовый снимок сообщений об ошибках, как указано в Far FAQ 1.3 и тут.

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Fri 02 Nov, 2018 13:59
by dmitrik
HaRT wrote: Fri 02 Nov, 2018 12:07 Сообщения об ошибках были бы информативнее и практичнее, если бы вы потрудились (1) как подсказывает повторяющийся в тексте ошибок фрагмент get the pdb, подложить соответствующий Far.pdb (скачать по соответствующей кнопке pdb со страницы загрузки Фара) рядом с Far.exe и (2) выложить текстовый снимок сообщений об ошибках, как указано в Far FAQ 1.3 и тут.
О, вот за этим я в тот тред с утра и пришел. Спасибо. :)

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

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Fri 02 Nov, 2018 14:08
by HaRT
dmitrik wrote: Fri 02 Nov, 2018 13:59 Far.pdb положил куда полагается
Удостоверьтесь, пожалуйста, что Far.pdb и Far.exe строго для одного номера сборки и одной битности, иначе ничего не выйдет.


Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Fri 02 Nov, 2018 21:55
by dmitrik
HaRT wrote: Fri 02 Nov, 2018 14:08 Удостоверьтесь, пожалуйста, что Far.pdb и Far.exe строго для одного номера сборки и одной битности, иначе ничего не выйдет.
Да, еще раз перепроверил, всё точно соответствует.

Падение, собственно, не заставило себя долго ждать:


HaRT wrote: Fri 02 Nov, 2018 14:08
Да, всё понял. :)

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Fri 02 Nov, 2018 22:34
by dmitrik
И еще:




Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Fri 02 Nov, 2018 22:57
by DrKnS
Far.exe!FileList::GetCurName (c:\src\far\filelist.cpp:3893)
Far.exe!FilePanels::GetTypeAndName (c:\src\far\filepanels.cpp:1037)
Far.exe!pluginapi::apiAdvControl (c:\src\far\plugapi.cpp:623)
plugin_x86.dll!<unknown> (get the pdb)
Far.exe!PeekInputRecord (c:\src\far\keyboard.cpp:1154)
Far.exe!CheckForEscSilent (c:\src\far\keyboard.cpp:1232)
Far.exe!FileList::ReadFileNames (c:\src\far\filelist.cpp:6700)
Вот это всё выглядит так, будто плагин хукает PeekConsoleInput и вызывается в тот момент, когда фар перечитывает панели.
В этот момент внутреннее состояние не инвариантно - списка файлов уже нет, а текущий индекс еще не обновлён и указывает куда-то в космос.

Конкретно в этом случае можно, наверное, перетасовать код внутри фара и падать не будет, но я не уверен, что стоит вообще пытаться поддерживать такие сценарии.

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Sun 04 Nov, 2018 11:16
by dmitrik
DrKnS wrote: Fri 02 Nov, 2018 22:57 Вот это всё выглядит так, будто плагин хукает PeekConsoleInput и вызывается в тот момент, когда фар перечитывает панели.
Под окном с сообщением об ошибке видно, как содержимое панелей портится, да.
DrKnS wrote: Fri 02 Nov, 2018 22:57 Конкретно в этом случае можно, наверное, перетасовать код внутри фара и падать не будет, но я не уверен, что стоит вообще пытаться поддерживать такие сценарии.
Я понимаю. Я, собственно, больше надеюсь на помощь автора плагина.

Но всё-таки задам вопрос. Я понимаю, что Far — это не комбайн с вертикальным взлетом "всё в одном", а платформа для плагинов. Но всё-таки это файловый менеджер под Windows, а задача перетаскивания файлов из него в другие приложения — очевидно нужная для такого класса приложений. Может (просто интересуюсь :)) подумать о реализации такой функциональности в самом Far'е?

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Sun 04 Nov, 2018 12:29
by grechnik
DrKnS wrote: Fri 02 Nov, 2018 22:57
Far.exe!FileList::GetCurName (c:\src\far\filelist.cpp:3893)
Far.exe!FilePanels::GetTypeAndName (c:\src\far\filepanels.cpp:1037)
Far.exe!pluginapi::apiAdvControl (c:\src\far\plugapi.cpp:623)
plugin_x86.dll!<unknown> (get the pdb)
Far.exe!PeekInputRecord (c:\src\far\keyboard.cpp:1154)
Far.exe!CheckForEscSilent (c:\src\far\keyboard.cpp:1232)
Far.exe!FileList::ReadFileNames (c:\src\far\filelist.cpp:6700)
Вот это всё выглядит так, будто плагин хукает PeekConsoleInput и вызывается в тот момент, когда фар перечитывает панели.
В этот момент внутреннее состояние не инвариантно - списка файлов уже нет, а текущий индекс еще не обновлён и указывает куда-то в космос.

Конкретно в этом случае можно, наверное, перетасовать код внутри фара и падать не будет, но я не уверен, что стоит вообще пытаться поддерживать такие сценарии.
Да, хукает. https://github.com/karbazol/far-drag-n- ... cs.cpp#L76 .
А как вообще плагин может догадаться, что Far в неконсистентном состоянии? Пользователь вполне может начать/закончить что-нибудь тащить ровно в момент, когда Far обновляет состояние.

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Tue 06 Nov, 2018 12:53
by dmitrik
grechnik wrote: Sun 04 Nov, 2018 12:29 А как вообще плагин может догадаться, что Far в неконсистентном состоянии? Пользователь вполне может начать/закончить что-нибудь тащить ровно в момент, когда Far обновляет состояние.
Что характерно, у меня эти падения всегда происходят не в момент перетаскивания. Более того, даже не в те моменты, когда я непосредственно работаю с данным экземпляром Far'а. Это происходит в фоне, т.е., в те моменты, когда фокус либо вообще не у окна Far'а, либо у окна другого его экземпляра, в котором всё продолжает быть ок.

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Tue 06 Nov, 2018 13:30
by DrKnS
grechnik wrote: Sun 04 Nov, 2018 12:29А как вообще плагин может догадаться, что Far в неконсистентном состоянии?
Хороший вопрос.
А как фар может догадаться, когда ему можно быть в неконсистентном состоянии, если ему хукать шопопало?

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Thu 31 Jan, 2019 14:27
by alandr967
Перетащил файл в скайп и он пропал из директории а в скайпе не появился,где его искать?:/

Drag-n-Drop — тяни-и-бросай (перетаскивание)

Posted: Thu 14 Feb, 2019 18:19
by grechnik
alandr967 wrote: Thu 31 Jan, 2019 14:27 Перетащил файл в скайп и он пропал из директории а в скайпе не появился,где его искать?:/
Похоже, отдельные программы считают, что плагин запрашивает перемещение файла вместо копирования. Если таскать правой кнопкой мыши и явно выбирать копирование, воспроизводится? Если таскать левой кнопкой из Explorer вместо Far, воспроизводится?