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. |