[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,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master 489b887 2/2: * graph/x11/grx11.c (gr_x11_surface_init): Register WM_DELETE_WINDOW.,
Alexei Podtelezhnikov <=