From e84d2696f942852e954265aab99d5481cf2c5b9b Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Fri, 10 May 2013 12:04:52 -0700 Subject: [PATCH 1/3] fixed menu behavior --- interface/src/main.cpp | 33 +++++++++++++++++++++++++++++---- interface/src/ui/Menu.h | 1 + 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 00e7899112..6ef1ee337e 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -1899,12 +1899,37 @@ glm::vec3 getGravity(glm::vec3 pos) { } } - +bool menuDisplayed = false; void mouseFunc(int button, int state, int x, int y) { - //catch mouse actions on the menu - bool menuClickedOrUnclicked = menu.mouseClick(x, y); + bool menuFound = menu.mouseClick(x, y); - if (!menuClickedOrUnclicked) { + // If we didn't previously have the menu displayed, and we did just click on the menu, then + // go into menuDisplayed mode.... + if (!::menuDisplayed && menuFound) { + ::menuDisplayed = true; + } + + // If the menu was displayed, and we're not over a menu, then leave menu mode + if (::menuDisplayed && !menuFound) { + ::menuDisplayed = false; + menu.hidePopupMenu(); + //menu.render(WIDTH,HEIGHT); // will hide the menu + } + + // In menu displayed mode use old logic + if (::menuDisplayed) { + if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN ) { + if (state == GLUT_DOWN && !menu.mouseClick(x, y)) { + mouseX = x; + mouseY = y; + mousePressed = 1; + } else if (state == GLUT_UP) { + mouseX = x; + mouseY = y; + mousePressed = 0; + } + } + } else { if (button == GLUT_LEFT_BUTTON) { mouseX = x; mouseY = y; diff --git a/interface/src/ui/Menu.h b/interface/src/ui/Menu.h index 7ffe93bb28..5ef2a6f11b 100644 --- a/interface/src/ui/Menu.h +++ b/interface/src/ui/Menu.h @@ -24,6 +24,7 @@ public: void render(int screenwidth, int screenheight); void renderColumn(int i); MenuColumn* addColumn(const char *columnName); + void hidePopupMenu() { currentColumn = -1; }; private: std::vector columns; int currentColumn; From bfa7c91a7a3dce6e1815ffc9a5417d15665a1512 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Fri, 10 May 2013 12:08:03 -0700 Subject: [PATCH 2/3] fixed menu behavior --- interface/src/main.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 6ef1ee337e..7a89565406 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -1913,7 +1913,6 @@ void mouseFunc(int button, int state, int x, int y) { if (::menuDisplayed && !menuFound) { ::menuDisplayed = false; menu.hidePopupMenu(); - //menu.render(WIDTH,HEIGHT); // will hide the menu } // In menu displayed mode use old logic From 0888a6605f51156f78f00cccf898f62110f293f9 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Fri, 10 May 2013 12:08:43 -0700 Subject: [PATCH 3/3] CR fixes --- interface/src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 7a89565406..9d5088a851 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -1917,7 +1917,7 @@ void mouseFunc(int button, int state, int x, int y) { // In menu displayed mode use old logic if (::menuDisplayed) { - if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN ) { + if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { if (state == GLUT_DOWN && !menu.mouseClick(x, y)) { mouseX = x; mouseY = y;