nicer output to terminal in Position callback
[freeglut] / src / mswin / fg_main_mswin.c
index 22a1d44..3ecde1f 100644 (file)
@@ -427,6 +427,29 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam,
 
         break;
 
+    case WM_MOVE:
+        {
+            SFG_Window* saved_window = fgStructure.CurrentWindow;
+            RECT windowRect;
+            GetWindowRect( window->Window.Handle, &windowRect );
+            
+            if (window->Parent)
+            {
+                /* For child window, we should return relative to upper-left
+                * of parent's client area.
+                */
+                POINT topleft = {windowRect.left,windowRect.top};
+
+                ScreenToClient(window->Parent->Window.Handle,&topleft);
+                windowRect.left = topleft.x;
+                windowRect.top  = topleft.y;
+            }
+
+            INVOKE_WCB( *window, Position, ( windowRect.left, windowRect.top ) );
+            fgSetWindow(saved_window);
+        }
+        break;
+
     case WM_SETFOCUS:
 /*        printf("WM_SETFOCUS: %p\n", window ); */
 
@@ -661,10 +684,7 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam,
         short ticks = ( short )HIWORD( wParam );
                fgState.MouseWheelTicks += ticks;
 
-        /*
-         * XXX Should use WHEEL_DELTA instead of 120
-         */
-               if ( abs ( fgState.MouseWheelTicks ) >= 120 )
+        if ( abs ( fgState.MouseWheelTicks ) >= WHEEL_DELTA )
                {
                        int direction = ( fgState.MouseWheelTicks > 0 ) ? 1 : -1;
 
@@ -675,10 +695,7 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam,
             fgSetWindow( window );
             fgState.Modifiers = fgPlatformGetModifiers( );
 
-            /*
-             * XXX Should use WHEEL_DELTA instead of 120
-             */
-            while( abs ( fgState.MouseWheelTicks ) >= 120 )
+            while( abs ( fgState.MouseWheelTicks ) >= WHEEL_DELTA )
                        {
                 if( FETCH_WCB( *window, MouseWheel ) )
                     INVOKE_WCB( *window, MouseWheel,
@@ -710,10 +727,7 @@ LRESULT CALLBACK fgPlatformWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam,
                     );
                                }
 
-                /*
-                 * XXX Should use WHEEL_DELTA instead of 120
-                 */
-                               fgState.MouseWheelTicks -= 120 * direction;
+                               fgState.MouseWheelTicks -= WHEEL_DELTA * direction;
                        }
 
             fgState.Modifiers = INVALID_MODIFIERS;