Resolution of X11 key-repeat handling
[freeglut] / src / freeglut_structure.c
index cd3a781..498dad3 100644 (file)
@@ -29,7 +29,7 @@
 #include "config.h"
 #endif
 
-#include "../include/GL/freeglut.h"
+#include <GL/freeglut.h>
 #include "freeglut_internal.h"
 
 
@@ -110,6 +110,9 @@ SFG_Window* fgCreateWindow( SFG_Window* parent, const char* title,
 
     window->IsMenu = isMenu;
 
+    window->State.IgnoreKeyRepeat = GL_FALSE;
+    window->State.KeyRepeating    = GL_FALSE;
+
     /*
      * Open the window now. The fgOpenWindow() function is system
      * dependant, and resides in freeglut_window.c. Uses fgState.
@@ -405,7 +408,7 @@ void fgDestroyStructure( void )
      */
     while( fgStructure.Menus.First )
         fgDestroyMenu( ( SFG_Menu * )fgStructure.Menus.First );
-    
+
     while( fgStructure.Windows.First )
         fgDestroyWindow( ( SFG_Window * )fgStructure.Windows.First );
 }
@@ -600,15 +603,13 @@ void fgListAppend(SFG_List *list, SFG_Node *node)
 
 void fgListRemove(SFG_List *list, SFG_Node *node)
 {
-    SFG_Node *ln;
-
-    if( (ln = (SFG_Node *)node->Next) != NULL )
-        ln->Prev = node->Prev;
-    if( (ln = (SFG_Node *)node->Prev) != NULL )
-        ln->Next = node->Next;
-    if( (ln = (SFG_Node *)list->First) == node )
+    if( node->Next )
+        ( ( SFG_Node * )node->Next )->Prev = node->Prev;
+    if( node->Prev )
+        ( ( SFG_Node * )node->Prev )->Next = node->Next;
+    if( ( ( SFG_Node * )list->First ) == node )
         list->First = node->Next;
-    if( (ln = (SFG_Node *)list->Last) == node )
+    if( ( ( SFG_Node * )list->Last ) == node )
         list->Last = node->Prev;
 }