{...Height}. Those are *not* records of the old values, but rather
of the *desired* *new* values, hence it was inappropriate to use them
in ConfigureNotify X11 event handling. Doing so introduced some new
problems.
So, I created OldHeight and OldWidth in the window State structure,
and *those* do what I require.
I also stripped out the obsolete comment about getting extra/bogus
reshape events. (Though I maintain that an application should be
robust against them, freeglut should no longer generate them if the
window has not changed size since last reported.)
git-svn-id: svn+ssh://svn.code.sf.net/p/freeglut/code/trunk/freeglut/freeglut@378
7f0cb862-5218-0410-a997-
914c9d46530a
{
int Width; /* Window's width in pixels */
int Height; /* The same about the height */
{
int Width; /* Window's width in pixels */
int Height; /* The same about the height */
+ int OldWidth; /* Window width from before a resize */
+ int OldHeight; /* " height " " " " */
GLboolean Redisplay; /* Do we have to redisplay? */
GLboolean Visible; /* Is the window visible now */
GLboolean Redisplay; /* Do we have to redisplay? */
GLboolean Visible; /* Is the window visible now */
* (in freeglut only) will not get an initial reshape event,
* which can break things.
*
* (in freeglut only) will not get an initial reshape event,
* which can break things.
*
- * XXX NOTE that it is possible that you will more than one Reshape
- * XXX event for your top-level window, but something like this
- * XXX appears to be required for compatbility.
- *
* GLUT presumably does this because it generally tries to treat
* sub-windows the same as windows.
*/
* GLUT presumably does this because it generally tries to treat
* sub-windows the same as windows.
*/
int width = event.xconfigure.width;
int height = event.xconfigure.height;
int width = event.xconfigure.width;
int height = event.xconfigure.height;
- if( ( width != window->State.Width ) ||
- ( height != window->State.Height ) )
+ if( ( width != window->State.OldWidth ) ||
+ ( height != window->State.OldHeight ) )
- window->State.Width = width;
- window->State.Height = height;
+ window->State.OldWidth = width;
+ window->State.OldHeight = height;
if( FETCH_WCB( *window, Reshape ) )
INVOKE_WCB( *window, Reshape, ( width, height ) );
else
if( FETCH_WCB( *window, Reshape ) )
INVOKE_WCB( *window, Reshape, ( width, height ) );
else
parent = fgWindowByID( parentID );
freeglut_return_val_if_fail( parent != NULL, 0 );
window = fgCreateWindow( parent, "", x, y, w, h, GL_FALSE, GL_FALSE );
parent = fgWindowByID( parentID );
freeglut_return_val_if_fail( parent != NULL, 0 );
window = fgCreateWindow( parent, "", x, y, w, h, GL_FALSE, GL_FALSE );
+ window->State.OldHeight = window->State.OldWidth = -1;