바쁜 프로그램에서 드래그 앤 드롭 중단

바쁜 프로그램에서 드래그 앤 드롭 중단

다음과 같은 경우:

  1. ABC 애플리케이션부터 드래그 앤 드롭 작업을 시작합니다.
  2. 애플리케이션 ABC가 잠깁니다(일시적으로).
  3. 나는 마우스 버튼을 놓는다.

그런 다음 ABC 신청서 처리가 완료될 때까지 다음과 같은 문제가 발생합니다.

  • 다른 프로그램에서는 마우스 포인터를 "잡을" 수 없습니다.
  • 드래그 앤 드롭 커서는 활성 상태로 유지됩니다.
  • 아무것도 클릭할 수 없어요
  • 그놈 패널이나 그놈 메뉴를 열 수 없습니다
  • 특정 키(스페이스바, Enter, 화살표 키 포함)를 누를 수 없습니다.

당연히 신청이 완료되기를 기다리는 동안 다른 작업을 할 수 없습니다.

이런 일이 발생하는 상황은 ~500개의 Firefox 탭이 열려 있을 때, 탭을 드래그할 때 가끔 30분 정도 동안 멈추는 경우입니다.

해결 방법은 Ctrl-Alt-F1을 눌러 터미널을 사용하고 로그인한 다음 실행하여 killall ABC문제가 있는 응용 프로그램을 종료하고 Ctrl-Alt-F7을 눌러 그래픽 환경으로 돌아가는 것입니다. 그러나 나는 ABC를 종료할 필요 없이 처리를 완료하도록 하는 대신 마우스를 다시 가져오는 것이 좋습니다.

그래서,바쁜 프로그램에서 끌어서 놓기/마우스 포인터 잡기를 강제로 중단할 수 있습니까?, 프로세스를 종료하지 않고?

답변1

실제로, (적어도 최신 버전의 X에서는) 이것이 가능합니다.

XF86Ungrab이 작업은 다음에 소개된 키를 눌러 수행할 수 있습니다.이 커밋.

기본적으로 이 키심은 물리적 키나 키 조합에 바인딩되지 않습니다(누구나 손을 꺾어 잠금 화면을 우회할 수 있기 때문에 보안 허점으로 보고된 후 2012년에 비활성화되었습니다). 일부 다른 설정에서는 숫자 패드를 사용하는 바로가기에 바인딩되어 있습니다. 물론 키패드가 없는 노트북에서는 작동하지 않습니다.

하지만 다음을 사용하여 여전히 키심을 활성화할 수 있습니다 xdotool.

setxkbmap -option grab:break_actions
xdotool key XF86Ungrab

이는 Ubuntu Precise의 X.org 버전 2:1.11.4-0ubuntu10.8에서 작동합니다.

답변2

대부분의 운영 체제나 윈도우 시스템에서는 Esc 버튼을 눌러 마우스 드래그 핸들러를 중단할 수 있습니다. 때로는 짝수를 찾거나 사용하여 짝수를 취소할 수도 있습니다."드래그 취소" 대상Mac os의 상단 메뉴처럼 말이죠. 예를 들어, 대부분의 Windows에서는 실제 금연 표지판이나 다이빙 금지 유형의 표지판처럼 커서가 선이 있는 원으로 변경되는 것을 볼 수 있습니다.

OP의 경우 GNOME/Firefox를 사용하고 있습니다.

~ 안에금언, 대부분의 경우 마우스 버튼을 놓기 전에 Esc 키를 누르면 드래그/드롭 이벤트가 취소됩니다. 이는 개발 지침의 일부이기도 합니다.

http://developer.gnome.org/hig-book/3.2/input-mouse.html.en#drag-drop-override

모든 마우스 작업이 완료되기 전에 취소되도록 허용합니다. Esc 키를 누르면 파일 관리자에서 파일을 끌어서 놓거나 그리기 응용 프로그램에서 모양을 그리는 등 진행 중인 모든 마우스 작업이 취소됩니다.

그리고..

사용자가 다음 방법을 모두 사용하여 끌어서 놓기 작업을 취소할 수 있도록 허용합니다.

  • 마우스 버튼을 놓기 전에 Esc 키를 눌러 개체 놓기
  • 쿼리 드래그를 수행하고 선택하여 원래 위치로 돌아갑니다.
  • 팝업 메뉴에서 취소(섹션 10.1.3.1.2 ― 쿼리 끌기 참조)
  • 유효하지 않은 드롭 대상에 객체를 드롭합니다.

나는 그것이 KDE에서도 동일하다고 확신합니다행위 몇 가지 검색

Mozilla 개발자의 Drop 이벤트

떨어지다 드래그 작업이 끝날 때 드롭이 발생한 요소에서 드롭 이벤트가 시작됩니다. 리스너는 드래그되는 데이터를 검색하고 드롭 위치에 삽입하는 일을 담당합니다. 이 이벤트는 드롭이 필요한 경우에만 실행됩니다. 예를 들어 Escape 키를 눌러 사용자가 드래그 작업을 취소하거나 마우스가 유효한 드롭 대상 위에 있지 않은 동안 마우스 버튼을 놓으면 실행되지 않습니다. 이에 대한 자세한 내용은 삭제 수행을 참조하십시오.

나는 이것이 모든 설정에서 항상 작동할 것이라고 말한 적이 없습니다. 예를 들어 나는 이것이 일종의 절름발이인 Ubuntu에서는 작동하지 않을 것이라고 생각합니다. 이후 Windows에서 Esc 키를 사용하여 드래그 이벤트가 중단되었던 것을 기억합니다.버전 3.1.

거의 모든(올바르게 코딩된) 응용 프로그램의 모든 MS Windows 운영 체제: - 드래그/드롭 마우스 이벤트 중에 마우스 버튼을 놓기 전에 Esc 키를 누르면 핸들러 기능이 취소/중단됩니다.

예를 들어 Windows7의 Google Chrome에서는: - 탭을 분리하려는 것처럼 도구 모음 밖으로 탭을 끌어서 놓기 전에 키보드 Esc 키를 누르십시오. 드래그를 중단하고 탭을 반환해야 합니다.

관련 정보