Je veux empêcher le "premier" clic sur un cadre dans une fenêtre X inactive d'avoir un effet autre que de rendre le cadre actif. Plus précisément, je ne veux pas qu'il repositionne le point.
Le problème est que je n'arrive pas à détecter qu'il était inactif lorsque je clique sur la souris. Ainsi, le code suivant affiche toujours"y"
:
;; detect if frame is active when clicking
(defun my/mouse-drag-region (event)
(interactive "e")
(mouse-minibuffer-check event)
(let* ((window (caadr event))
(frame (window-frame window)))
(if (eql frame (selected-frame))
(print "y")
(print "n"))))
(global-set-key [down-mouse-1] 'my/mouse-drag-region)
Comment puis-je détecter que le cadre était précédemment inactif?
Ou, quelqu'un a-t-il déjà réalisé ce que j'essaie de faire ailleurs?
Remarque: je demande quelque chose de différent de cette autre question , qui concerne les fenêtres inactives, pas les cadres inactifs.
mouse-set-point
et créer votre propre fonction pour faire ce que vous voulez. Faites leC-h k
clic de souris et voyez les deux (2) fonctions qui y sont répertoriées.Réponses:
Je ne pense pas que cela soit possible depuis Emacs. Le problème est que dès que vous cliquez dans le cadre, le gestionnaire de fenêtres sélectionne ce cadre. Emacs le voit donc immédiatement comme l'image sélectionnée.
Votre propre code de test le montre. Aucun conseil concernant
mouse-drag-region
oumouse-set-point
(ou toute autre fonction Emacs) ne fera aucune différence.(Peut-être que vous pouvez faire quelque chose au niveau X11 - ne sais pas.)
la source
post-command-hook
, enregistrer toutes les positions des points et les inverser lorsque l'image sélectionnée change? Ce ne serait pas efficace, mais cela fonctionnerait.post-command-hook
est le dernier recours d'un scélérat. ;-) Nous l'utilisons tous pour beaucoup de choses, mais c'est un gros marteau.Pas exactement ce que vous demandez, mais cela fonctionne bien pour moi:
Cela ne correspond pas exactement à votre demande, car non seulement le cadre est activé, mais la fenêtre est également cliquée. Mais je trouve cela utile. Le double clic déplace le point, pas le simple clic.
la source