]> git.eshelyaron.com Git - emacs.git/commitdiff
Add hooks to run on gaining/losing focus (tiny change)
authorBrian Jenkins <brian@brianjenkins.org>
Tue, 19 Nov 2013 02:23:50 +0000 (21:23 -0500)
committerGlenn Morris <rgm@gnu.org>
Tue, 19 Nov 2013 02:23:50 +0000 (21:23 -0500)
* src/frame.c (Qfocus_in_hook, Qfocus_out_hook): New static lisp objects.
(Fhandle_focus_in, Fhandle_focus_out): Run focus hooks.
(syms_of_frame): Add focus-in-hook, focus-out-hook.

Fixes: debbugs:15029
src/ChangeLog
src/frame.c

index 6d54fac6f56ab00d191d8ef8d5f113eacf171241..43f966cdc3c30f8a3b00480991d2a89d0c7fc65f 100644 (file)
@@ -1,3 +1,10 @@
+2013-11-19  Brian Jenkins  <brian@brianjenkins.org>  (tiny change)
+
+       Add hooks to run on gaining/losing focus.  (Bug#15029)
+       * frame.c (Qfocus_in_hook, Qfocus_out_hook): New static lisp objects.
+       (Fhandle_focus_in, Fhandle_focus_out): Run focus hooks.
+       (syms_of_frame): Add focus-in-hook, focus-out-hook.
+
 2013-11-18  Paul Eggert  <eggert@cs.ucla.edu>
 
        * data.c (bool_vector_binop_driver): Rename locals for sanity's sake.
index 4494edda5d7756c02888d219b0ca648a345f50d9..fccb53e2436f256d43c9d19cca9ef1f1c2754260 100644 (file)
@@ -109,6 +109,8 @@ Lisp_Object Qalpha;
 
 Lisp_Object Qface_set_after_frame_default;
 
+static Lisp_Object Qfocus_in_hook;
+static Lisp_Object Qfocus_out_hook;
 static Lisp_Object Qdelete_frame_functions;
 
 static Lisp_Object Qgeometry, Qworkarea, Qmm_size, Qframes, Qsource;
@@ -893,6 +895,7 @@ is not generated.
 This function checks if blink-cursor timers should be turned on again.  */)
   (Lisp_Object event)
 {
+  Frun_hooks (1, &Qfocus_in_hook);
   return call0 (intern ("blink-cursor-check"));
 }
 
@@ -903,6 +906,7 @@ Focus out events occur when no frame has focus.
 This function checks if blink-cursor timers should be turned off.  */)
   (Lisp_Object event)
 {
+  Frun_hooks (1, &Qfocus_out_hook);
   return call0 (intern ("blink-cursor-suspend"));
 }
 
@@ -4465,6 +4469,16 @@ when the mouse is over clickable text.  */);
 The pointer becomes visible again when the mouse is moved.  */);
   Vmake_pointer_invisible = Qt;
 
+  DEFVAR_LISP ("focus-in-hook", Vfocus_in_hook,
+               doc: /* Normal hook run when a frame gains input focus.  */);
+  Vfocus_in_hook = Qnil;
+  DEFSYM (Qfocus_in_hook, "focus-in-hook");
+
+  DEFVAR_LISP ("focus-out-hook", Vfocus_out_hook,
+               doc: /* Normal hook run when a frame loses input focus.  */);
+  Vfocus_out_hook = Qnil;
+  DEFSYM (Qfocus_out_hook, "focus-out-hook");
+
   DEFVAR_LISP ("delete-frame-functions", Vdelete_frame_functions,
               doc: /* Functions run before deleting a frame.
 The functions are run with one arg, the frame to be deleted.