Как отключить Drag&Drop?

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
Ajaja
Posts: 87
Joined: Wed 22 Mar, 2006 18:48
Been thanked: 1 time

Как отключить Drag&Drop?

Post by Ajaja »

В Far Manager как-то можно отключить Drag&Drop не отключая при этом полностью всю мышь?
Last edited by HaRT on Sat 18 Nov, 2023 17:10, edited 1 time in total.
Reason: Убрано спец.оформление (значок Темы)
User avatar
HaRT
Moderator
Posts: 11017
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 233 times
Been thanked: 368 times

Как отключить Drag&Drop?

Post by HaRT »

У меня нет ответа на ваш вопрос, но он породил большое любопытство, зачем вам понадобилось отключать DnD. Чем он вам помешал?
Фар есть инструмент, а не нянька. © 2009 DrKnS
Ajaja
Posts: 87
Joined: Wed 22 Mar, 2006 18:48
Been thanked: 1 time

Как отключить Drag&Drop?

Post by Ajaja »

Из-за Windows Terminal. При даблклике на файле в Far запускается соответствующая программа, открывающая этот файл, но при этом Far Manager периодически (не всегда, закономерности не обнаружил) переходит в режим перетаскивания этого файла. Видимо, не получает событие что кнопка мыши отжата. Самое простое решение было бы вообще отключить эти перетаскивания, т.к. я ими не пользуюсь.
Last edited by Ajaja on Sun 03 Dec, 2023 10:11, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 11017
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 233 times
Been thanked: 368 times

Как отключить Drag&Drop?

Post by HaRT »

Ajaja wrote: Sun 03 Dec, 2023 10:10 Видимо, не получает событие что кнопка мыши отжата.
Да, почти наверняка событие второго отжатия ЛКМ улетает в свежезапущенное приложение. Если не сложно, понаблюдайте, воспроизводится ли у вас эта ошибка с долго стартующими приложениями/документами. Если моя гипотеза верна, то с ними должно быть всё в порядке. И в этом случае уже можно думать над какими-то ещё обходными путями.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Ajaja
Posts: 87
Joined: Wed 22 Mar, 2006 18:48
Been thanked: 1 time

Как отключить Drag&Drop?

Post by Ajaja »

Поэкспериментировал. Странно, но как-раз проблема возникает с более медленными приложениями. Если после даблклика успеть немного сместить мышь в момент когда окно приложения (видеоплеера, например, если кликать на видеофайле) еще не открылось и фокус на него не переключился, то при возврате фокуса в Far он уже находится в режиме перетаскивания этого файла мышью. С быстрыми приложениями, на которые фокус быстро переключается, проблема в основном не возникает.
Повтороюсь, это только в Windows Terminal. В conemu или классическом conhost я такую проблему никогда не замечал.
alex904
Posts: 1
Joined: Tue 20 Feb, 2024 06:04

Как отключить Drag&Drop?

Post by alex904 »

Согласен, глючит страшно по двойному клику. В предыдущих билдах стабильно начинал трэкать курсор после открытия приложений. В последнем билде стал чаще начинать drag&drop. Может, отключить вообще трекинг мыши? Открывать файлы двойным кликом стало практически невозможно. Средняя кнопка в последнем билде вообще одноразовая. Запускается один раз, а потом вообще не позволяет сдвинуть курсор с места!
User avatar
Zeroes
Мультикопипастер Броадкастер
Posts: 589
Joined: Wed 16 Mar, 2005 20:53
Location: Gomel \ Belarus
Has thanked: 1 time
Been thanked: 3 times
Contact:

Как отключить Drag&Drop?

Post by Zeroes »

скоро год будет как я открыл тикет по данной проблеме:
https://github.com/microsoft/terminal/issues/15540

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

PS. попробую скрипт написать для Autohotkey v2.x для обхода проблемы...
Last edited by Zeroes on Thu 18 Apr, 2024 09:04, edited 3 times in total.
--- Zeroes & Ones ---
User avatar
Zeroes
Мультикопипастер Броадкастер
Posts: 589
Joined: Wed 16 Mar, 2005 20:53
Location: Gomel \ Belarus
Has thanked: 1 time
Been thanked: 3 times
Contact:

Как отключить Drag&Drop?

Post by Zeroes »

Workaround решения вышеописанной проблемы [тикет от меня: https://github.com/microsoft/terminal/issues/15540]

нужен Autohotkey v2.x [как вариант скачать последнюю портативную версию https://www.autohotkey.com/download/ahk-v2.zip в каталоге создать AutoHotkey64.ahk туда добавить скрипт, ярлык на AutoHotkey64.exe поместить в автозагрузку], работоспособность скриптов проверял на Win10.


1) Лечение даблклика левой клавиши мышки, лечение клика колесом мышки

При этом будет побочка:
a) не будет работать DND для файлов мышкой
b) не будет работать выделение мышкой в режиме граберра экрана

так же лечим работу под эмулятором терминала WezTerm (так как он тоже использует OpenConsole.exe из состава WT)

Code: Select all

CoordMode "Mouse" , "Window"

#HotIf Check_OpenConsole_and_FAR()

Check_OpenConsole_and_FAR()
{
 Try
    {
     MouseGetPos , &ypos
     if (ypos > 40) ; разрешаем перетаскивать за заголовок окна
      {
       currentTitle := WinGetTitle("A")
       if (!InStr(currentTitle,"редактирование ") and !InStr(currentTitle,"edit ")) ; разрешаем выделение мышкой в редакторе
         return winActive("- Far 3.0 ahk_class CASCADIA_HOSTING_WINDOW_CLASS") or winActive("- Far 3.0 ahk_class org.wezfurlong.wezterm")
      }
    }
}

 LButton::
   {
     Send "{LButton}"
   }

 MButton::
  {
    Send "{MButton}"
  }

#HotIf

2) решение ещё одной проблемы - потери фокуса WT при некоторых обстоятельствах
тикет от меня тут: https://github.com/microsoft/terminal/issues/15956
Этот код должен быть размещён в самом конце файла AutoHotkey64.ahk

Code: Select all

Loop {
  Try {
       hwnd := WinWait("A")
       className := WinGetClass(hwnd)

    if className == "PseudoConsoleWindow"
    {
     if WinExist("ahk_class CASCADIA_HOSTING_WINDOW_CLASS")
     WinActivate
    }

WinWaitNotActive hwnd
  }
}

3) решение ещё одной проблемы - при возвращение по Alt-Tab в окно WT если курсор мыши попадает в активную зону окна WT, курсор мыши может стать значком ответственным за состояние BUSY OS (пока заметил эффект с одной программой WinSSHTerm, когда открыта сессия SSH и переключаемся на окно WT)

Code: Select all

DllCall("RegisterShellHookWindow", "ptr", A_ScriptHwnd)
OnMessage(DllCall("RegisterWindowMessage", "str", "SHELLHOOK"), ShellHook)
ShellHook(wParam, lParam, *) {
	if (wParam = 0x8004 || wParam = 4) {
        hwnd := lParam || WinExist("A")
Try
   {
        className := WinGetClass(hwnd)
        if className == "CASCADIA_HOSTING_WINDOW_CLASS"
        {
         MouseMove 1,0,0,"R"
         MouseMove -1,0,0,"R"
        }
   }
  }
}

Last edited by Zeroes on Fri 26 Jul, 2024 12:39, edited 10 times in total.
--- Zeroes & Ones ---
User avatar
Zeroes
Мультикопипастер Броадкастер
Posts: 589
Joined: Wed 16 Mar, 2005 20:53
Location: Gomel \ Belarus
Has thanked: 1 time
Been thanked: 3 times
Contact:

Как отключить Drag&Drop?

Post by Zeroes »

проблема потери фокуса (мой №2) решена с версии terminal-1.23.2421.0 (canary)
--- Zeroes & Ones ---
Post Reply

Return to “Нужна помощь”