fix focus state when embed in another window. - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 8503f954a1cb2d08124fe2c1f0227bd23dffff46
 (DIR) parent cddbd6eee59104a029087c30f9ff5e7e415bc584
 (HTM) Author: Aurélien Aptel <aurelien.aptel@gmail.com>
       Date:   Thu,  9 Jun 2011 18:25:56 +0200
       
       fix focus state when embed in another window.
       
       Diffstat:
         M st.c                                |       7 +++++--
       
       1 file changed, 5 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -241,6 +241,8 @@ static void (*handler[LASTEvent])(XEvent *) = {
                [VisibilityNotify] = visibility,
                [UnmapNotify] = unmap,
                [Expose] = expose,
       +        [EnterNotify] = focus,
       +        [LeaveNotify] = focus,
                [FocusIn] = focus,
                [FocusOut] = focus,
                [MotionNotify] = bmotion,
       @@ -1635,7 +1637,8 @@ xinit(void) {
                attrs.bit_gravity = NorthWestGravity;
                attrs.event_mask = FocusChangeMask | KeyPressMask
                        | ExposureMask | VisibilityChangeMask | StructureNotifyMask
       -                | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask;
       +                | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask
       +                | EnterWindowMask | LeaveWindowMask;
                attrs.colormap = xw.cmap;
        
                parent = opt_embed ? strtol(opt_embed, NULL, 0) : XRootWindow(xw.dpy, xw.scr);
       @@ -1819,7 +1822,7 @@ xseturgency(int add) {
        
        void
        focus(XEvent *ev) {
       -        if(ev->type == FocusIn) {
       +        if(ev->type == FocusIn || ev->type == EnterNotify) {
                        xw.state |= WIN_FOCUSED;
                        xseturgency(0);
                } else