|
From: <hba...@us...> - 2010-05-22 19:55:33
|
Revision: 11019
http://plplot.svn.sourceforge.net/plplot/?rev=11019&view=rev
Author: hbabcock
Date: 2010-05-22 19:55:27 +0000 (Sat, 22 May 2010)
Log Message:
-----------
Add code to the xcairo driver to detect and handle WM_DELETE_WINDOW client messages (i.e. pressing the window close button), consistent with xwin and qtwidget drivers.
Modified Paths:
--------------
trunk/drivers/cairo.c
Modified: trunk/drivers/cairo.c
===================================================================
--- trunk/drivers/cairo.c 2010-05-22 17:33:13 UTC (rev 11018)
+++ trunk/drivers/cairo.c 2010-05-22 19:55:27 UTC (rev 11019)
@@ -1654,6 +1654,7 @@
void plD_init_xcairo( PLStream *pls )
{
PLCairo *aStream;
+ Atom wmDelete;
/* Setup the PLStream and the font lookup table. */
aStream = stream_and_font_setup( pls, 1 );
@@ -1686,6 +1687,9 @@
XMapWindow( aStream->XDisplay, aStream->XWindow );
aStream->xdrawable_mode = 0;
+ wmDelete = XInternAtom( aStream->XDisplay, "WM_DELETE_WINDOW", True );
+ XSetWMProtocols( aStream->XDisplay, aStream->XWindow, &wmDelete, 1 );
+
xcairo_init_cairo( pls );
}
@@ -1772,7 +1776,8 @@
XSelectInput( aStream->XDisplay, aStream->XWindow, event_mask );
while ( !aStream->exit_event_loop )
{
- XWindowEvent( aStream->XDisplay, aStream->XWindow, event_mask, &event );
+ //XWindowEvent( aStream->XDisplay, aStream->XWindow, event_mask, &event );
+ XNextEvent( aStream->XDisplay, &event );
switch ( event.type )
{
case KeyPress:
@@ -1787,6 +1792,9 @@
if ( ( (XButtonEvent *) &event )->button == Button3 )
aStream->exit_event_loop = 1;
break;
+ case ClientMessage:
+ aStream->exit_event_loop = 1;
+ break;
case Expose:
/* Blit the image again after an expose event, but only for the last
* available event. Otherwise multiple redraws occur needlessly. */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|