Raise the sam window when sweeping a new text. - sam - An updated version of the sam text editor.
 (HTM) git clone git://vernunftzentrum.de/sam.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 0cb6ee7264d314996d32c6f211a6aa6d99e0a7e2
 (DIR) parent 675674530d0371c1d64353df951a74a4dbb971c3
 (HTM) Author: Rob King <jking@deadpixi.com>
       Date:   Fri, 27 May 2016 11:21:39 -0500
       
       Raise the sam window when sweeping a new text.
       
       Diffstat:
         include/libg.h                      |       1 +
         libXg/getrect.c                     |       3 +++
         libXg/gwin.c                        |       1 -
         libXg/xtbinit.c                     |      28 ++++++++++++++++++++++++++++
       
       4 files changed, 32 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/include/libg.h b/include/libg.h
       @@ -201,6 +201,7 @@ extern Rectangle getrect(int, Mouse*);
        extern unsigned long rgbpix(Bitmap*, RGB);
        extern void         rdcolmap(Bitmap*, RGB*);
        extern void         wrcolmap(Bitmap*, RGB*);
       +extern void raisewindow(void);
        
        /* Extra functions supplied by libXg */
        extern int        snarfswap(char*, int, char**);
 (DIR) diff --git a/libXg/getrect.c b/libXg/getrect.c
       @@ -19,6 +19,8 @@ static Cursor sweep={
        static void
        grabcursor(void)
        {
       +    raisewindow();
       +
                /* Grab X server with an limp wrist. */
                while (XGrabPointer(_dpy, screen.id, False,
                                ButtonPressMask|ButtonReleaseMask|
       @@ -26,6 +28,7 @@ grabcursor(void)
                        GrabModeAsync, GrabModeAsync, None, None, CurrentTime)
                                != GrabSuccess)
                        sleep(2);
       +
                /* Grab the keyboard too */
                XSetInputFocus(_dpy, screen.id, RevertToParent, CurrentTime);
        }
 (DIR) diff --git a/libXg/gwin.c b/libXg/gwin.c
       @@ -470,4 +470,3 @@ GwinSelectionSwap(Widget w, String s)
                XtCheckSubclass(w, gwinWidgetClass, NULL);
                return (*((GwinWidgetClass) XtClass(w))->gwin_class.select_swap)(w, s);
        }
       -
 (DIR) diff --git a/libXg/xtbinit.c b/libXg/xtbinit.c
       @@ -865,3 +865,31 @@ printgc(char *msg, GC g)
        }
        #endif
        
       +void
       +raisewindow(void)
       +{
       +    XEvent e;
       +    Atom a = XInternAtom(_dpy, "_NET_ACTIVE_WINDOW", True);
       +    Window w = XtWindow(_toplevel);
       +
       +    XRaiseWindow(_dpy, w);
       +
       +    if (a != None){
       +        fprintf(stderr, "raising window using EWMH\n");
       +        memset(&e, 0, sizeof(XEvent));
       +        e.type = ClientMessage;
       +        e.xclient.window = w;
       +        e.xclient.message_type = a;
       +        e.xclient.format = 32;
       +        e.xclient.data.l[0] = 1;
       +        e.xclient.data.l[1] = CurrentTime;
       +        e.xclient.data.l[2] = None;
       +        e.xclient.data.l[3] = 0;
       +        e.xclient.data.l[4] = 0;
       +
       +        XSendEvent(_dpy, DefaultRootWindow(_dpy), False,
       +                   SubstructureRedirectMask | SubstructureNotifyMask, &e);
       +    }
       +
       +    XFlush(_dpy);
       +}