From 4433f7f33620d0f5e6d531492be45489af145da4 Mon Sep 17 00:00:00 2001 From: fayjf Date: Tue, 18 Sep 2007 03:22:11 +0000 Subject: [PATCH] Adding Takeshi Nishimura's Feature Request "[ 1045202 ] Cope with a menu with many items" -- sorry it took so long. git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@719 7f0cb862-5218-0410-a997-914c9d46530a --- freeglut/freeglut/src/freeglut_menu.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/freeglut/freeglut/src/freeglut_menu.c b/freeglut/freeglut/src/freeglut_menu.c index ec2ff45..a96f5d6 100644 --- a/freeglut/freeglut/src/freeglut_menu.c +++ b/freeglut/freeglut/src/freeglut_menu.c @@ -263,9 +263,13 @@ static GLboolean fghCheckMenuStatus( SFG_Menu* menu ) menuEntry->SubMenu->X = menu->X - menuEntry->SubMenu->Width; if( menuEntry->SubMenu->Y + menuEntry->SubMenu->Height > max_y ) + { menuEntry->SubMenu->Y -= ( menuEntry->SubMenu->Height - FREEGLUT_MENU_HEIGHT - 2 * FREEGLUT_MENU_BORDER ); + if( menuEntry->SubMenu->Y < 0 ) + menuEntry->SubMenu->Y = 0; + } fgSetWindow( menuEntry->SubMenu->Window ); glutPositionWindow( menuEntry->SubMenu->X, @@ -552,7 +556,11 @@ static void fghActivateMenu( SFG_Window* window, int button ) menu->X -=menu->Width; if( menu->Y + menu->Height > max_y ) + { menu->Y -=menu->Height; + if( menu->Y < 0 ) + menu->Y = 0; + } menu->Window->State.MouseX = window->State.MouseX + glutGet( GLUT_WINDOW_X ) - menu->X;