Copier-coller a la souris comme dans un terminal Unix
Selectionner copie aussitot au relachement du bouton, et le clic droit colle directement. Plus de menu contextuel ni de raccourci a connaitre : c'est le comportement des terminaux Unix et de PuTTY. - selection relachee, et double-clic sur un mot, copient dans la foulee - clic droit et clic molette collent immediatement - un simple clic sans deplacement se contente d'annuler la selection, sans toucher au presse-papiers : sinon il ecraserait ce qu'on s'apprete a coller - le menu contextuel est supprime, le clic droit etant desormais un collage - "Tout selectionner" passe sur Ctrl+Maj+A, Ctrl+A restant "debut de ligne" pour le shell Les raccourcis clavier restent disponibles pour qui les prefere. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -88,5 +88,39 @@ t.clear_selection()
|
||||
assert not t.has_selection()
|
||||
print(" OK")
|
||||
|
||||
print()
|
||||
print("=== 9. Souris : selection = copie, clic droit = collage (comme sous Unix) ===")
|
||||
from PySide6.QtGui import QMouseEvent, QContextMenuEvent
|
||||
from PySide6.QtCore import QPointF
|
||||
|
||||
|
||||
def clic(bouton, col, row, type_evt=QEvent.MouseButtonPress):
|
||||
pos = QPointF(col * t.char_w + 1, row * t.char_h + 1)
|
||||
return QMouseEvent(type_evt, pos, pos, bouton, bouton, Qt.NoModifier)
|
||||
|
||||
|
||||
QApplication.clipboard().setText("")
|
||||
t.mousePressEvent(clic(Qt.LeftButton, 0, 1))
|
||||
t._sel_focus = (14, 1)
|
||||
t.mouseReleaseEvent(clic(Qt.LeftButton, 14, 1, QEvent.MouseButtonRelease))
|
||||
print(" selection relachee -> presse-papiers :", repr(QApplication.clipboard().text()))
|
||||
assert QApplication.clipboard().text() == "serveur-test-01", "la selection doit copier sans raccourci"
|
||||
|
||||
envoye.clear()
|
||||
t.mousePressEvent(clic(Qt.RightButton, 5, 0))
|
||||
print(" clic droit -> envoye au shell :", envoye)
|
||||
assert envoye == [b"serveur-test-01"], "le clic droit doit coller directement"
|
||||
|
||||
QApplication.clipboard().setText("a-conserver")
|
||||
t.mousePressEvent(clic(Qt.LeftButton, 3, 0))
|
||||
t.mouseReleaseEvent(clic(Qt.LeftButton, 3, 0, QEvent.MouseButtonRelease))
|
||||
assert QApplication.clipboard().text() == "a-conserver", "un simple clic ne doit rien ecraser"
|
||||
print(" simple clic -> presse-papiers intact")
|
||||
|
||||
ev = QContextMenuEvent(QContextMenuEvent.Mouse, QPoint(10, 10), QPoint(10, 10))
|
||||
t.contextMenuEvent(ev)
|
||||
assert not ev.isAccepted(), "aucun menu contextuel ne doit s'ouvrir"
|
||||
print(" clic droit -> aucun menu contextuel")
|
||||
|
||||
print()
|
||||
print("COPIER/COLLER : TOUS LES TESTS OK")
|
||||
|
||||
Reference in New Issue
Block a user