Cancelar arrastar e soltar de um programa ocupado

7

Quando acontece o seguinte:

  1. Inicio uma operação de arrastar e soltar, começando pelo aplicativo ABC.
  2. Aplicativo ABC trava (temporariamente)
  3. eu solto o botão do mouse

então, até que o aplicativo ABC termine o processamento, tenho os seguintes problemas:

  • Outros programas não podem "agarrar" o ponteiro do mouse
  • O cursor de arrastar e soltar permanece ativo
  • não consigo clicar em nada
  • Não consigo abrir o painel do gnome ou o menu do GNOME
  • Não consigo pressionar determinadas teclas (incluindo espaço, inserir, teclas de seta)

Obviamente, não posso fazer outro trabalho enquanto aguardo a conclusão do aplicativo.

Uma situação em que isso ocorre é quando eu tenho ~ 500 abas do Firefox abertas, ao arrastar as abas às vezes congela por meia hora ou mais.

Uma solução alternativa é usar um terminal pressionando Ctrl-Alt-F1, efetue login, execute killall ABC para eliminar o aplicativo problemático e pressione Ctrl-Alt-F7 para retornar ao ambiente gráfico. Mas eu prefiro não ter que matar o ABC, em vez de deixá-lo terminar o processamento, enquanto retiro meu mouse.

Então, é possível abortar à força um arrastar-e-soltar / desencaixar o ponteiro do mouse de um programa ocupado , sem matar o processo?

    
por Mechanical snail 22.08.2011 / 02:04

2 respostas

5

Na verdade, é possível fazer isso (pelo menos com versões recentes do X).

Você pode fazer isso pressionando a tecla XF86Ungrab , introduzida em esta cometer .

Por padrão, este keysym não está vinculado a nenhuma chave física ou combinação de teclas (ele foi desativado em 2012 depois de ter sido relatado como uma falha de segurança, pois permite que qualquer pessoa ignore as telas de bloqueio, quebrando as quebras). Em algumas outras configurações, está vinculado a um atalho que usa o teclado numérico. Obviamente, isso não funcionará em laptops que não tenham um teclado.

Mas você ainda pode ativar o keysym usando xdotool :

setxkbmap -option grab:break_actions
xdotool key XF86Ungrab

Isso funciona com a versão 2 do X.org: 1.11.4-0ubuntu10.8 no Ubuntu Precise.

    
por 23.01.2013 / 10:59
1

Na maioria dos sistemas operacionais ou sistemas de janelas, você pode abortar um manipulador de arrastar do mouse pressionando o botão Escape. E às vezes você pode cancelar o evento encontrando ou usando um alvo "arrastar cancelar" como o menu superior do Mac OS. Por exemplo, na maior parte do Windows, você notará alterações de cursor para circular com a linha, como um sinal clássico de No Smoking ou um sinal de No Diving no mundo real;)

No caso do OP, eles estão usando o GNOME / Firefox:

No Gnome , na maioria dos casos tecla de escape antes de soltar o botão do mouse (deve) cancelar o evento de arrastar / soltar. É até mesmo parte de suas diretrizes dev:

link

Allow all mouse operations to be cancelled before their completion. Pressing the Esc key should cancel any mouse operation in progress, such as dragging and dropping a file in a file manager, or drawing a shape in a drawing application.

e ..

Allow the user to cancel a drag and drop operation by all of these methods:

  • pressing Esc before releasing the mouse button dropping the object
  • back on its original location performing a query drag and selecting
  • Cancel on the pop-up menu (see Section 10.1.3.1.2 ― Query Drag)
  • dropping the object on an invalid drop target.

Tenho certeza de que é o mesmo no KDE do que está fazendo alguns procura

No evento de eliminação do Mozilla

drop The drop event is fired on the element where the drop was occured at the end of the drag operation. A listener would be responsible for retrieving the data being dragged and inserting it at the drop location. This event will only fire if a drop is desired. It will not fire if the user cancelled the drag operation, for example by pressing the Escape key, or if the mouse button was released while the mouse was not over a valid drop target. For information about this, see Performing a Drop.

Eu nunca disse que isso funcionaria o tempo todo em todas as configurações, por exemplo, eu não acho que isso funciona no Ubuntu, que é meio chato. Lembro-me do abortar evento abortar trabalhando com a chave Escape desde em maravilhas desde versão 3.1 .

Em todos os sistemas operacionais MS Windows em quase todos os aplicativos (devidamente codificados): - Atingir a tecla de escape antes de soltar o botão do mouse durante um evento de arrastar / soltar o mouse cancelará / abortará a função do manipulador.

Por exemplo, no Google Chrome no Windows7: - arraste uma aba da barra de ferramentas como se você fosse desanexá-la e antes de soltar, pressione a tecla Escape do teclado. Deve abortar o arrasto e retornar sua aba.

    
por 25.08.2012 / 02:12