रोकने के बिंदु से माउस को निष्क्रिय फ्रेम में रोकें


11

मैं "पहले" को एक निष्क्रिय एक्स विंडो में फ़्रेम पर क्लिक करने से रोकना चाहता हूं, ताकि फ्रेम को सक्रिय बनाने के अलावा कोई अन्य प्रभाव न हो। विशेष रूप से, मैं इसे रिपॉजिट बिंदु के लिए नहीं चाहता।

समस्या यह है कि मुझे पता नहीं लग सकता है कि माउस क्लिक करने पर वह फ्रेम निष्क्रिय था । तो निम्न कोड हमेशा दिखाता है "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)

मैं कैसे पता लगाऊं कि फ्रेम पहले निष्क्रिय था?

या, क्या किसी ने पहले ही हासिल कर लिया है जो मैं कहीं और करने की कोशिश कर रहा हूं?

नोट: मैं इस अन्य प्रश्न से कुछ अलग करने के लिए कह रहा हूं , जो निष्क्रिय खिड़कियों के बारे में है, न कि निष्क्रिय फ़्रेमों के बारे में।


आप कुंजीपटल शॉर्टकट को संशोधित करना चाहते हैं mouse-set-pointऔर जो आप चाहते हैं उसे करने के लिए अपना स्वयं का फ़ंक्शन बनाएं। क्या C-h kमाउस क्लिक बात और देखने के लिए दो (2) कार्यों कि वहाँ सूचीबद्ध हैं।
कानून व्यवस्था

क्या आपके फ्रेम में टाइटल बार और बॉर्डर नहीं है? आप बफर में क्लिक करने के बजाय सिर्फ उन पर क्लिक क्यों नहीं करते?
ड्रू

@ सूची: मुझे नहीं लगता कि यह मदद करता है क्योंकि अप इवेंट बाद में भी आता है। मैं यह भी नहीं बता सकता कि फ्रेम डाउन इवेंट के दौरान निष्क्रिय था!
edam

2
@ आकर्षित: ठीक है, मैं कर सकता था, लेकिन यह फिडली है। मैं एक्स विंडो में क्लिक करने में सक्षम होना चाहता हूं, जैसे कि जब मैं टर्मिनल में ईमैक्स चलाता हूं।
edam

यह वास्तव में बहुत कष्टप्रद व्यवहार है। मैं इसे माउस का उपयोग न करके, अर्थात। ऑल्ट + टैब और सह का उपयोग करना। फ्रेम के बीच स्विच करने के लिए।
गार्गेलीपोलोंकाई

जवाबों:


1

मुझे नहीं लगता कि यह Emacs के भीतर से संभव है। समस्या यह है कि जैसे ही आप फ्रेम में क्लिक करते हैं, विंडो मैनेजर उस फ्रेम का चयन करता है। Emacs इस प्रकार इसे तुरंत चयनित फ्रेम के रूप में देखता है।

आपका अपना परीक्षण कोड यह दिखाता है। mouse-drag-regionया तो mouse-set-point(या किसी भी अन्य Emacs फ़ंक्शन) की कोई सलाह देने से कोई फर्क नहीं पड़ेगा।

(शायद कुछ ऐसा है जो आप X11 स्तर पर कर सकते हैं - डननो।)


क्या आप चयनित फ़्रेम को ट्रैक नहीं कर सकते post-command-hook, सभी बिंदु स्थिति रिकॉर्ड कर सकते हैं और चयनित फ़्रेम में परिवर्तन होने पर उन्हें वापस ला सकते हैं? यह कुशल नहीं होगा, लेकिन यह काम करेगा।
PythonNut

@PythonNut: ऊ। शायद। कोशिश करो। post-command-hookएक बदमाश का आखिरी रास्ता है। ;-) हम सभी इसे बहुत सारे सामान के लिए उपयोग करते हैं, लेकिन यह एक भारी हथौड़ा है।
आकर्षित किया

1

ठीक वही नहीं जो आप पूछ रहे हैं, लेकिन यह मेरे लिए अच्छा काम करता है:

(global-unset-key [down-mouse-1])   ; no dragging nonsense
(global-set-key [mouse-1] 'mouse-select-window)  ; no setting point

यह आपके अनुरोध से बिल्कुल मेल नहीं खाता है कि न केवल फ़्रेम सक्रिय किया गया है, बल्कि खिड़की पर क्लिक किया गया है। लेकिन, मुझे लगता है कि उपयोगी होने के लिए। डबल क्लिक बिंदु को स्थानांतरित करता है, सिंगल क्लिक नहीं करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.