Home | History | Annotate | Download | only in glx

Lines Matching refs:menu

340     /* MenuFont overload to indicate menu initalization. */
376 __glutSetMenu(GLUTmenu * menu)
378 __glutCurrentMenu = menu;
382 unmapMenu(GLUTmenu * menu)
384 if (menu->cascade) {
385 unmapMenu(menu->cascade);
386 menu->cascade = NULL;
388 menu->anchor = NULL;
389 menu->highlighted = NULL;
390 XUnmapWindow(__glutDisplay, menu->win);
402 /* Popping up an overlay popup menu will install its own
403 colormap. If the window associated with the menu has an
405 overlay isn't left using the popup menu's colormap. */
412 really ungrabbed when the application's menu callback is
422 than the window requesting the pop-up menu (for
434 change menus or destroy the menu window again. */
440 change menus or destroy the menu window again. */
444 generate menu callback. */
447 /* When menu callback is triggered, current menu should be
448 set to the callback menu. */
449 __glutSetMenu(__glutItemSelected->menu);
450 __glutItemSelected->menu->select(
462 mapMenu(GLUTmenu * menu, int x, int y)
470 if (menu->submenus > 0) {
478 /* If the menu isn't managed (ie, validated so all the
480 if (!menu->managed) {
483 item = menu->list;
484 num = menu->num;
489 itemupdate.width = menu->pixwidth;
496 menu->pixheight = MENU_GAP +
497 fontHeight * menu->num + MENU_GAP;
498 changes.height = menu->pixheight;
500 menu->pixwidth + subMenuExtension + MENU_GAP;
502 menu->managed = True;
504 /* Make sure menu appears fully on screen. */
505 if (y + menu->pixheight >= __glutScreenHeight) {
506 changes.y = __glutScreenHeight - menu->pixheight;
510 if (x + menu->pixwidth + subMenuExtension >=
513 menu->pixwidth + subMenuExtension;
518 /* Rember where the menu is placed so submenus can be
520 menu->x = changes.x;
521 menu->y = changes.y;
523 XConfigureWindow(__glutDisplay, menu->win, mask, &changes);
530 XRaiseWindow(__glutDisplay, menu->win);
531 XMapWindow(__glutDisplay, menu->win);
535 startMenu(GLUTmenu * menu, GLUTwindow * window,
546 /* Somebody else has pointer grabbed, ignore menu
550 __glutMappedMenu = menu;
554 __glutSetMenu(menu);
558 mapMenu(menu, x, y);
582 Window win = item->menu->win;
587 if (item->menu->submenus > 0) {
592 if (item->menu->highlighted == item) {
600 item->menu->pixwidth + subMenuExtension, fontHeight);
605 item->menu->pixwidth + MENU_ARROW_GAP + 1, y);
610 paintMenu(GLUTmenu * menu)
613 int i = menu->num;
616 item = menu->list;
618 if (item->menu->highlighted == item) {
621 /* Quick render of the menu item; assume background
623 XDrawString(__glutDisplay, menu->win, blackGC,
626 paintSubMenuArrow(menu->win,
627 menu->pixwidth + MENU_ARROW_GAP + 1, y);
637 getMenuItem(GLUTmenu * menu, Window win, int *which)
642 if (menu->searched) {
645 menu->searched = True;
646 i = menu->num;
647 item = menu->list;
651 menu->searched = False;
660 menu->searched = False;
667 menu->searched = False;
686 GLUTmenu *menu;
688 menu = __glutMappedMenu;
689 while (menu) {
690 if (win == menu->win) {
691 return menu;
693 menu = menu->cascade;
741 __glutFatalError("menu manipulation not allowed while menus in use.");
752 GLUTmenuItem *prevItem = item->menu->highlighted;
755 /* If there's an already higlighted item in this menu
759 item->menu->highlighted = NULL;
762 item->menu->highlighted = item;
764 if (item->menu->cascade) {
766 /* Entered a menu item that is not a submenu trigger,
768 menu. */
769 unmapMenu(item->menu->cascade);
770 item->menu->cascade = NULL;
781 item of this menu; need to pop down that other
783 unmapMenu(item->menu->cascade);
784 item->menu->cascade = NULL;
789 /* Make sure the menu item gets painted with
796 /* LeaveNotify: Handle leaving a menu item... */
797 if (item->menu->cascade &&
798 item->menu->cascade->anchor == item) {
802 /* Unhighlight this menu item. */
803 item->menu->highlighted = NULL;
813 item->menu->x + item->menu->pixwidth +
816 item->menu->y + fontHeight * (num - 1) + MENU_GAP);
817 item->menu->cascade = submenu;
824 of this is so that GLUT's menu code only gets linked into
825 GLUT binaries (assuming a static library) if the GLUT menu
843 GLUTmenu *menu;
856 menu = (GLUTmenu *) malloc(sizeof(GLUTmenu));
857 if (!menu) {
860 menu->id = menuid;
861 menu->num = 0;
862 menu->submenus = 0;
863 menu->managed = False;
864 menu->searched = False;
865 menu->pixwidth = 0;
866 menu->select = selectFunc;
867 menu->list = NULL;
868 menu->cascade = NULL;
869 menu->highlighted = NULL;
870 menu->anchor = NULL;
882 menu->win = XCreateWindow(__glutDisplay, __glutRoot,
885 /* Real size will be determined when menu is manged. */
891 menuGraphicsContextSetup(menu->win);
892 __glutMenuList[menuid] = menu;
893 __glutSetMenu(menu);
911 GLUTmenu *menu;
914 __glutWarning("glutSetMenu attempted on bogus menu.");
917 menu = __glutMenuList[menuid - 1];
918 if (!menu) {
919 __glutWarning("glutSetMenu attempted on bogus menu.");
922 __glutSetMenu(menu);
930 GLUTmenu *menu;
932 menu = item->menu;
941 if (item->pixwidth > menu->pixwidth) {
942 menu->pixwidth = item->pixwidth;
944 menu->managed = False;
961 entry->menu = __glutCurrentMenu;
977 glutAddSubMenu(const char *label, int menu)
990 submenu->menu = __glutCurrentMenu;
991 __glutSetMenuItem(submenu, label, /* base 0 */ menu - 1, True);
1016 if (__glutCurrentWindow->menu[button] < 1) {
1021 __glutCurrentWindow->menu[button] = __glutCurrentMenu->id + 1;