RedrawWindow(
window->Window.Handle, NULL, NULL,
RDW_NOERASE | RDW_INTERNALPAINT | RDW_INVALIDATE | RDW_UPDATENOW
- );
+ );
}
#endif
timer;
timer = (SFG_Timer *)next )
{
- next = (SFG_Timer *)timer->Node.Next;
+ next = (SFG_Timer *)timer->Node.Next;
if( timer->TriggerTime <= checkTime )
{
{
if( w->Callbacks.Joystick )
{
- e->found = TRUE;
- e->data = w;
+ e->found = TRUE;
+ e->data = w;
}
fgEnumSubWindows( w, fgCheckJoystickCallback, e );
}
{
if( w->State.Redisplay )
{
- e->found = TRUE;
- e->data = w;
+ e->found = TRUE;
+ e->data = w;
}
fgEnumSubWindows( w, fgHavePendingRedisplaysCallback, e );
-}
+}
static int fgHavePendingRedisplays (void)
{
SFG_Enumerator enumerator;
SFG_Timer *timer;
for( timer = (SFG_Timer *)fgState.Timers.First;
- timer;
- timer = (SFG_Timer *)timer->Node.Next )
- ret = MIN( ret, MAX( 0, (timer->TriggerTime) - now ) );
+ timer;
+ timer = (SFG_Timer *)timer->Node.Next )
+ ret = MIN( ret, MAX( 0, (timer->TriggerTime) - now ) );
return ret;
}
long msec;
if( fgState.IdleCallback ||
- fgHavePendingRedisplays() )
- return;
+ fgHavePendingRedisplays() )
+ return;
socket = ConnectionNumber( fgDisplay.Display );
FD_ZERO( &fdset );
FD_SET( socket, &fdset );
msec = fgNextTimer();
if( fgHaveJoystick() )
- msec = MIN( msec, 10 );
+ msec = MIN( msec, 10 );
wait.tv_sec = msec / 1000;
wait.tv_usec = (msec % 1000) * 1000;
err = select( socket+1, &fdset, NULL, NULL, &wait );
if( -1 == err )
- printf( "freeglut select() error: %d\n", errno );
+ printf( "freeglut select() error: %d\n", errno );
#elif TARGET_HOST_WIN32
#endif
*/
if( window->ActiveMenu != NULL )
{
- if ( window == window->ActiveMenu->ParentWindow )
+ if ( window == window->ActiveMenu->ParentWindow )
{
- window->ActiveMenu->Window->State.MouseX = event.xmotion.x_root - window->ActiveMenu->X ;
- window->ActiveMenu->Window->State.MouseY = event.xmotion.y_root - window->ActiveMenu->Y ;
+ window->ActiveMenu->Window->State.MouseX = event.xmotion.x_root - window->ActiveMenu->X ;
+ window->ActiveMenu->Window->State.MouseY = event.xmotion.y_root - window->ActiveMenu->Y ;
}
/*
GETWINDOW( xbutton ); GETMOUSE( xbutton );
/*
- * An X button (at least in XFree86) is numbered from 1.
- * A GLUT button is numbered from 0.
- * Old GLUT passed through buttons other than just the first
- * three, though it only gave symbolic names and official
- * support to the first three.
- *
- */
- button = event.xbutton.button - 1;
+ * An X button (at least in XFree86) is numbered from 1.
+ * A GLUT button is numbered from 0.
+ * Old GLUT passed through buttons other than just the first
+ * three, though it only gave symbolic names and official
+ * support to the first three.
+ *
+ */
+ button = event.xbutton.button - 1;
/*
* Do not execute the application's mouse callback if a menu is hooked to this button.
*/
if ( window->ActiveMenu != NULL ) /* Window has an active menu, it absorbs any mouse click */
{
- if ( window == window->ActiveMenu->ParentWindow )
+ if ( window == window->ActiveMenu->ParentWindow )
{
- window->ActiveMenu->Window->State.MouseX = event.xbutton.x_root - window->ActiveMenu->X ;
- window->ActiveMenu->Window->State.MouseY = event.xbutton.y_root - window->ActiveMenu->Y ;
- }
-
- if ( fgCheckActiveMenu ( window->ActiveMenu->Window, window->ActiveMenu ) == TRUE ) /* Inside the menu, invoke the callback and deactivate the menu*/
+ window->ActiveMenu->Window->State.MouseX = event.xbutton.x_root - window->ActiveMenu->X ;
+ window->ActiveMenu->Window->State.MouseY = event.xbutton.y_root - window->ActiveMenu->Y ;
+ }
+
+ if ( fgCheckActiveMenu ( window->ActiveMenu->Window, window->ActiveMenu ) == TRUE ) /* Inside the menu, invoke the callback and deactivate the menu*/
{
- /* Save the current window and menu and set the current window to the window whose menu this is */
- SFG_Window *save_window = fgStructure.Window ;
- SFG_Menu *save_menu = fgStructure.Menu ;
- SFG_Window *parent_window = window->ActiveMenu->ParentWindow ;
- fgSetWindow ( parent_window ) ;
- fgStructure.Menu = window->ActiveMenu ;
-
- /* Execute the menu callback */
- fgExecuteMenuCallback ( window->ActiveMenu ) ;
- fgDeactivateMenu ( parent_window ) ;
-
- /* Restore the current window and menu */
- fgSetWindow ( save_window ) ;
- fgStructure.Menu = save_menu ;
- }
- else /* Outside the menu, deactivate the menu if it's a downclick */
- if ( pressed == TRUE )
- fgDeactivateMenu ( window->ActiveMenu->ParentWindow ) ;
-
- /*
- * Let's make the window redraw as a result of the mouse click and menu activity.
- */
- window->State.Redisplay = TRUE ;
-
- break ;
+ /* Save the current window and menu and set the current window to the window whose menu this is */
+ SFG_Window *save_window = fgStructure.Window ;
+ SFG_Menu *save_menu = fgStructure.Menu ;
+ SFG_Window *parent_window = window->ActiveMenu->ParentWindow ;
+ fgSetWindow ( parent_window ) ;
+ fgStructure.Menu = window->ActiveMenu ;
+
+ /* Execute the menu callback */
+ fgExecuteMenuCallback ( window->ActiveMenu ) ;
+ fgDeactivateMenu ( parent_window ) ;
+
+ /* Restore the current window and menu */
+ fgSetWindow ( save_window ) ;
+ fgStructure.Menu = save_menu ;
+ }
+ else /* Outside the menu, deactivate the menu if it's a downclick */
+ if ( pressed == TRUE )
+ fgDeactivateMenu ( window->ActiveMenu->ParentWindow ) ;
+
+ /*
+ * Let's make the window redraw as a result of the mouse click and menu activity.
+ */
+ window->State.Redisplay = TRUE ;
+
+ break ;
}
/*
* No active menu, let's check whether we need to activate one.
*/
if (( 0 <= button ) && ( 2 >= button ) &&
- ( window->Menu[ button ] != NULL ) && ( pressed == TRUE ) )
+ ( window->Menu[ button ] != NULL ) && ( pressed == TRUE ) )
{
/*
* Let's make the window redraw as a result of the mouse click.
event.type == ButtonPress ? GLUT_DOWN : GLUT_UP,
event.xbutton.x,
event.xbutton.y
- );
+ );
}
}
* A key has been pressed, find the window that had the focus:
*/
GETWINDOW( xkey );
- GETMOUSE( xkey );
+ GETMOUSE( xkey );
if( event.type == KeyPress )
{
if (LOWORD(wParam) != WA_INACTIVE)
{
/* glutSetCursor( fgStructure.Window->State.Cursor ); */
- printf("WM_ACTIVATE: glutSetCursor( %p, %d)\n", window, window->State.Cursor );
+ printf("WM_ACTIVATE: glutSetCursor( %p, %d)\n", window, window->State.Cursor );
glutSetCursor( window->State.Cursor );
}
*/
#if 0
if ((LOWORD(lParam) == HTCLIENT) &&
- (fgStructure.Window->State.Cursor == GLUT_CURSOR_NONE))
- SetCursor( NULL );
+ (fgStructure.Window->State.Cursor == GLUT_CURSOR_NONE))
+ SetCursor( NULL );
#else
- /* Set the cursor AND change it for this window class. */
-# define MAP_CURSOR(a,b) case a: SetCursor( LoadCursor( NULL, b ) ); \
+ /* Set the cursor AND change it for this window class. */
+# define MAP_CURSOR(a,b) case a: SetCursor( LoadCursor( NULL, b ) ); \
break;
- /* Nuke the cursor AND change it for this window class. */
-# define ZAP_CURSOR(a,b) case a: SetCursor( NULL ); \
+ /* Nuke the cursor AND change it for this window class. */
+# define ZAP_CURSOR(a,b) case a: SetCursor( NULL ); \
break;
if (LOWORD(lParam) == HTCLIENT)
- switch( window->State.Cursor )
- {
- MAP_CURSOR( GLUT_CURSOR_RIGHT_ARROW, IDC_ARROW );
- MAP_CURSOR( GLUT_CURSOR_LEFT_ARROW, IDC_ARROW );
- MAP_CURSOR( GLUT_CURSOR_INFO, IDC_HELP );
- MAP_CURSOR( GLUT_CURSOR_DESTROY, IDC_CROSS );
- MAP_CURSOR( GLUT_CURSOR_HELP, IDC_HELP );
- MAP_CURSOR( GLUT_CURSOR_CYCLE, IDC_SIZEALL );
- MAP_CURSOR( GLUT_CURSOR_SPRAY, IDC_CROSS );
- MAP_CURSOR( GLUT_CURSOR_WAIT, IDC_WAIT );
- MAP_CURSOR( GLUT_CURSOR_TEXT, IDC_UPARROW );
- MAP_CURSOR( GLUT_CURSOR_CROSSHAIR, IDC_CROSS );
- /* MAP_CURSOR( GLUT_CURSOR_NONE, IDC_NO ); */
- ZAP_CURSOR( GLUT_CURSOR_NONE, NULL );
-
- default:
- MAP_CURSOR( GLUT_CURSOR_UP_DOWN, IDC_ARROW );
- }
+ switch( window->State.Cursor )
+ {
+ MAP_CURSOR( GLUT_CURSOR_RIGHT_ARROW, IDC_ARROW );
+ MAP_CURSOR( GLUT_CURSOR_LEFT_ARROW, IDC_ARROW );
+ MAP_CURSOR( GLUT_CURSOR_INFO, IDC_HELP );
+ MAP_CURSOR( GLUT_CURSOR_DESTROY, IDC_CROSS );
+ MAP_CURSOR( GLUT_CURSOR_HELP, IDC_HELP );
+ MAP_CURSOR( GLUT_CURSOR_CYCLE, IDC_SIZEALL );
+ MAP_CURSOR( GLUT_CURSOR_SPRAY, IDC_CROSS );
+ MAP_CURSOR( GLUT_CURSOR_WAIT, IDC_WAIT );
+ MAP_CURSOR( GLUT_CURSOR_TEXT, IDC_UPARROW );
+ MAP_CURSOR( GLUT_CURSOR_CROSSHAIR, IDC_CROSS );
+ /* MAP_CURSOR( GLUT_CURSOR_NONE, IDC_NO ); */
+ ZAP_CURSOR( GLUT_CURSOR_NONE, NULL );
+
+ default:
+ MAP_CURSOR( GLUT_CURSOR_UP_DOWN, IDC_ARROW );
+ }
#endif
- else
- lRet = DefWindowProc( hWnd, uMsg, wParam, lParam );
- break;
+ else
+ lRet = DefWindowProc( hWnd, uMsg, wParam, lParam );
+ break;
case WM_SHOWWINDOW:
window->State.Visible = TRUE;
{
int wheel_number = LOWORD ( lParam ) ;
/* THIS IS SPECULATIVE -- John Fay, 10/2/03 */
- int direction = HIWORD ( lParam ) / 120 ;
+ int ticks = HIWORD ( lParam ) / 120 ;
/* Should be WHEEL_DELTA instead of 120 */
- int ticks = abs( direction );
+ int direction = 1;
+
+ if( ticks < 0 )
+ {
+ direction = -1;
+ ticks = -ticks;
+ }
/*
* The mouse cursor has moved. Remember the new mouse cursor's position