freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2-demos] master 489b887 2/2: * graph/x11/grx11.c (gr_x11_surfac


From: Alexei Podtelezhnikov
Subject: [freetype2-demos] master 489b887 2/2: * graph/x11/grx11.c (gr_x11_surface_init): Register WM_DELETE_WINDOW.
Date: Wed, 27 May 2020 15:33:27 -0400 (EDT)

branch: master
commit 489b887287eacac28c622aa72b931c465ae0a281
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>

    * graph/x11/grx11.c (gr_x11_surface_init): Register WM_DELETE_WINDOW.
    (gr_x11_surface_listen_event): Handle it to exit gracefully.
---
 ChangeLog         |  5 +++++
 graph/x11/grx11.c | 13 +++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 15c6dc2..1b03e9d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2020-05-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
 
+       * graph/x11/grx11.c (gr_x11_surface_init): Register WM_DELETE_WINDOW.
+       (gr_x11_surface_listen_event): Handle it to exit gracefully.
+
+2020-05-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
        * graph/x11/grx11.c (grX11Surface): Remove unused field.
 
 2020-05-26  Alexei Podtelezhnikov  <apodtele@gmail.com>
diff --git a/graph/x11/grx11.c b/graph/x11/grx11.c
index afdf951..8a0f22b 100644
--- a/graph/x11/grx11.c
+++ b/graph/x11/grx11.c
@@ -1020,6 +1020,7 @@ typedef  unsigned long   uint32;
     Visual*             visual;
     Colormap            colormap;
     GC                  gc;
+    Atom                wm_delete_window;
     XImage*             ximage;
     grBitmap            ximage_bitmap;
 
@@ -1198,6 +1199,14 @@ typedef  unsigned long   uint32;
 
       switch ( x_event.type )
       {
+      case ClientMessage:
+        if ( (Atom)x_event.xclient.data.l[0] == surface->wm_delete_window )
+        {
+          grkey = grKeyEsc;  /* signal to exit gracefully */
+          goto Set_Key;
+        }
+        break;
+
       case KeyPress:
         surface->key_number = XLookupString( &x_event.xkey,
                                              surface->key_buffer,
@@ -1415,6 +1424,10 @@ typedef  unsigned long   uint32;
       XSetWMProperties( display, surface->win, &xtp, &xtp,
                         NULL, 0, &xsh, NULL, NULL );
 
+      surface->wm_delete_window = XInternAtom( display,
+                                               "WM_DELETE_WINDOW", False );
+      XSetWMProtocols( display, surface->win, &surface->wm_delete_window, 1);
+
       pid = getpid();
       NET_WM_PID = XInternAtom( display, "_NET_WM_PID", False );
       XChangeProperty( display, surface->win, NET_WM_PID,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]