From 31bed934fe82884bdf4b8adeec84fcdcfe72a2dc Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 7 Jan 2016 16:27:14 -0800 Subject: [PATCH 1/9] fix bug caused by accidental reuse of variable -- queryAABox was often of size 1 rather than the correct dimensions --- libraries/shared/src/SpatiallyNestable.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/shared/src/SpatiallyNestable.cpp b/libraries/shared/src/SpatiallyNestable.cpp index 07d5ddeeb0..02b1c0c0ae 100644 --- a/libraries/shared/src/SpatiallyNestable.cpp +++ b/libraries/shared/src/SpatiallyNestable.cpp @@ -598,7 +598,8 @@ AACube SpatiallyNestable::getQueryAACube(bool& success) const { return _queryAACube; } success = false; - return AACube(getPosition(success) - glm::vec3(defaultAACubeSize / 2.0f), defaultAACubeSize); + bool getPositionSuccess; + return AACube(getPosition(getPositionSuccess) - glm::vec3(defaultAACubeSize / 2.0f), defaultAACubeSize); } AACube SpatiallyNestable::getQueryAACube() const { From 0f52b82c214a670b5df621507cdfd672bf6e5308 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Fri, 8 Jan 2016 11:21:37 -0800 Subject: [PATCH 2/9] allow scripted addMenu() to specify grouping --- interface/src/scripting/MenuScriptingInterface.cpp | 4 ++-- interface/src/scripting/MenuScriptingInterface.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/scripting/MenuScriptingInterface.cpp b/interface/src/scripting/MenuScriptingInterface.cpp index 087d391daa..016c8df7e3 100644 --- a/interface/src/scripting/MenuScriptingInterface.cpp +++ b/interface/src/scripting/MenuScriptingInterface.cpp @@ -27,8 +27,8 @@ void MenuScriptingInterface::menuItemTriggered() { } } -void MenuScriptingInterface::addMenu(const QString& menu) { - QMetaObject::invokeMethod(Menu::getInstance(), "addMenu", Q_ARG(const QString&, menu)); +void MenuScriptingInterface::addMenu(const QString& menu, const QString& grouping) { + QMetaObject::invokeMethod(Menu::getInstance(), "addMenu", Q_ARG(const QString&, menu), Q_ARG(const QString&, grouping)); } void MenuScriptingInterface::removeMenu(const QString& menu) { diff --git a/interface/src/scripting/MenuScriptingInterface.h b/interface/src/scripting/MenuScriptingInterface.h index 51399c2fa5..03ff4b512a 100644 --- a/interface/src/scripting/MenuScriptingInterface.h +++ b/interface/src/scripting/MenuScriptingInterface.h @@ -28,7 +28,7 @@ private slots: void menuItemTriggered(); public slots: - void addMenu(const QString& menuName); + void addMenu(const QString& menuName, const QString& grouping = QString()); void removeMenu(const QString& menuName); bool menuExists(const QString& menuName); From fb484584e4bf6c4da568d33f088ee06371b5f050 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Fri, 8 Jan 2016 11:21:55 -0800 Subject: [PATCH 3/9] fix edit.js to honor new menu spec --- examples/edit.js | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/examples/edit.js b/examples/edit.js index 99219fcaa2..990e99b32d 100644 --- a/examples/edit.js +++ b/examples/edit.js @@ -1026,9 +1026,8 @@ function setupModelMenus() { // adj our menuitems Menu.addMenuItem({ menuName: "Edit", - menuItemName: "Models", + menuItemName: "Entities", isSeparator: true, - beforeItem: "Physics", grouping: "Advanced" }); if (!Menu.menuItemExists("Edit", "Delete")) { @@ -1039,7 +1038,7 @@ function setupModelMenus() { shortcutKeyEvent: { text: "backspace" }, - afterItem: "Models", + afterItem: "Entities", grouping: "Advanced" }); modelMenuAddedDelete = true; @@ -1051,7 +1050,7 @@ function setupModelMenus() { menuName: "Edit", menuItemName: "Entity List...", shortcutKey: "CTRL+META+L", - afterItem: "Models", + afterItem: "Entities", grouping: "Advanced" }); Menu.addMenuItem({ @@ -1096,28 +1095,21 @@ function setupModelMenus() { }); Menu.addMenuItem({ - menuName: "File", - menuItemName: "Models", - isSeparator: true, - beforeItem: "Settings", - grouping: "Advanced" - }); - Menu.addMenuItem({ - menuName: "File", + menuName: "Edit", menuItemName: "Export Entities", shortcutKey: "CTRL+META+E", - afterItem: "Models", + afterItem: "Entities", grouping: "Advanced" }); Menu.addMenuItem({ - menuName: "File", + menuName: "Edit", menuItemName: "Import Entities", shortcutKey: "CTRL+META+I", afterItem: "Export Entities", grouping: "Advanced" }); Menu.addMenuItem({ - menuName: "File", + menuName: "Edit", menuItemName: "Import Entities from URL", shortcutKey: "CTRL+META+U", afterItem: "Import Entities", @@ -1162,7 +1154,7 @@ function setupModelMenus() { setupModelMenus(); // do this when first running our script. function cleanupModelMenus() { - Menu.removeSeparator("Edit", "Models"); + Menu.removeSeparator("Edit", "Entities"); if (modelMenuAddedDelete) { // delete our menuitems Menu.removeMenuItem("Edit", "Delete"); @@ -1175,10 +1167,9 @@ function cleanupModelMenus() { Menu.removeMenuItem("Edit", "Select All Entities In Box"); Menu.removeMenuItem("Edit", "Select All Entities Touching Box"); - Menu.removeSeparator("File", "Models"); - Menu.removeMenuItem("File", "Export Entities"); - Menu.removeMenuItem("File", "Import Entities"); - Menu.removeMenuItem("File", "Import Entities from URL"); + Menu.removeMenuItem("Edit", "Export Entities"); + Menu.removeMenuItem("Edit", "Import Entities"); + Menu.removeMenuItem("Edit", "Import Entities from URL"); Menu.removeMenuItem("Edit", MENU_AUTO_FOCUS_ON_SELECT); Menu.removeMenuItem("Edit", MENU_EASE_ON_FOCUS); From b9068d07386946a6443dea57d62238e56ad8cbca Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Fri, 8 Jan 2016 11:22:21 -0800 Subject: [PATCH 4/9] fix selectAudioDevice.js to honor new menu spec --- examples/selectAudioDevice.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/selectAudioDevice.js b/examples/selectAudioDevice.js index 440580b883..b1da219eb5 100644 --- a/examples/selectAudioDevice.js +++ b/examples/selectAudioDevice.js @@ -48,8 +48,8 @@ var selectedInputMenu = ""; var selectedOutputMenu = ""; function setupAudioMenus() { - Menu.addMenu("Tools > Audio"); - Menu.addSeparator("Tools > Audio","Output Audio Device"); + Menu.addMenu("Audio > Devices", "Advanced"); + Menu.addSeparator("Audio > Devices","Output Audio Device"); var outputDeviceSetting = Settings.getValue(OUTPUT_DEVICE_SETTING); var outputDevices = AudioDevice.getOutputDevices(); @@ -63,7 +63,7 @@ function setupAudioMenus() { var thisDeviceSelected = (outputDevices[i] == selectedOutputDevice); var menuItem = "Use " + outputDevices[i] + " for Output"; Menu.addMenuItem({ - menuName: "Tools > Audio", + menuName: "Audio > Devices", menuItemName: menuItem, isCheckable: true, isChecked: thisDeviceSelected @@ -73,7 +73,7 @@ function setupAudioMenus() { } } - Menu.addSeparator("Tools > Audio","Input Audio Device"); + Menu.addSeparator("Audio > Devices","Input Audio Device"); var inputDeviceSetting = Settings.getValue(INPUT_DEVICE_SETTING); var inputDevices = AudioDevice.getInputDevices(); @@ -87,7 +87,7 @@ function setupAudioMenus() { var thisDeviceSelected = (inputDevices[i] == selectedInputDevice); var menuItem = "Use " + inputDevices[i] + " for Input"; Menu.addMenuItem({ - menuName: "Tools > Audio", + menuName: "Audio > Devices", menuItemName: menuItem, isCheckable: true, isChecked: thisDeviceSelected @@ -99,7 +99,7 @@ function setupAudioMenus() { } function onDevicechanged() { - Menu.removeMenu("Tools > Audio"); + Menu.removeMenu("Audio > Devices"); setupAudioMenus(); } @@ -110,7 +110,7 @@ Script.setTimeout(function () { }, 5000); function scriptEnding() { - Menu.removeMenu("Tools > Audio"); + Menu.removeMenu("Audio > Devices"); } Script.scriptEnding.connect(scriptEnding); From e70be2d8fef238f2cd06748d8a47f8830158c521 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Fri, 8 Jan 2016 11:58:13 -0800 Subject: [PATCH 5/9] more menu rework --- interface/src/Menu.cpp | 132 +++++++++++++++++++---------------------- 1 file changed, 62 insertions(+), 70 deletions(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index d57c395b48..6373b3fdb2 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -57,9 +57,6 @@ Menu::Menu() { // File/Application menu ---------------------------------- MenuWrapper* fileMenu = addMenu("File"); - // File > Quit - addActionToQMenuAndActionHash(fileMenu, MenuOption::Quit, Qt::CTRL | Qt::Key_Q, qApp,SLOT(quit()), QAction::QuitRole); - // File > Login menu items { addActionToQMenuAndActionHash(fileMenu, MenuOption::Login); @@ -85,6 +82,68 @@ Menu::Menu() { // File > About addActionToQMenuAndActionHash(fileMenu, MenuOption::AboutApp, 0, qApp, SLOT(aboutApp()), QAction::AboutRole); + // File > Quit + addActionToQMenuAndActionHash(fileMenu, MenuOption::Quit, Qt::CTRL | Qt::Key_Q, qApp, SLOT(quit()), QAction::QuitRole); + + + // Edit menu ---------------------------------- + MenuWrapper* editMenu = addMenu("Edit"); + + // Edit > Undo + QUndoStack* undoStack = qApp->getUndoStack(); + QAction* undoAction = undoStack->createUndoAction(editMenu); + undoAction->setShortcut(Qt::CTRL | Qt::Key_Z); + addActionToQMenuAndActionHash(editMenu, undoAction); + + // Edit > Redo + QAction* redoAction = undoStack->createRedoAction(editMenu); + redoAction->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_Z); + addActionToQMenuAndActionHash(editMenu, redoAction); + + // Edit > Running Sccripts + addActionToQMenuAndActionHash(editMenu, MenuOption::RunningScripts, Qt::CTRL | Qt::Key_J, + qApp, SLOT(toggleRunningScriptsWidget())); + + // Edit > Open and Run Script from File... [advanced] + addActionToQMenuAndActionHash(editMenu, MenuOption::LoadScript, Qt::CTRL | Qt::Key_O, + qApp, SLOT(loadDialog()), + QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); + + // Edit > Open and Run Script from Url... [advanced] + addActionToQMenuAndActionHash(editMenu, MenuOption::LoadScriptURL, + Qt::CTRL | Qt::SHIFT | Qt::Key_O, qApp, SLOT(loadScriptURLDialog()), + QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); + + // Edit > Stop All Scripts... [advanced] + addActionToQMenuAndActionHash(editMenu, MenuOption::StopAllScripts, 0, qApp, SLOT(stopAllScripts()), + QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); + + // Edit > Reload All Scripts... [advanced] + addActionToQMenuAndActionHash(editMenu, MenuOption::ReloadAllScripts, Qt::CTRL | Qt::Key_R, + qApp, SLOT(reloadAllScripts()), + QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); + + // Edit > Scripts Editor... [advanced] + addActionToQMenuAndActionHash(editMenu, MenuOption::ScriptEditor, Qt::ALT | Qt::Key_S, + dialogsManager.data(), SLOT(showScriptEditor()), + QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); + + // Edit > Console... [advanced] + addActionToQMenuAndActionHash(editMenu, MenuOption::Console, Qt::CTRL | Qt::ALT | Qt::Key_J, + DependencyManager::get().data(), + SLOT(toggleConsole()), + QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); + + // Edit > Reload All Content [advanced] + addActionToQMenuAndActionHash(editMenu, MenuOption::ReloadContent, 0, qApp, SLOT(reloadResourceCaches()), + QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); + + + // Edit > Package Model... [advanced] + addActionToQMenuAndActionHash(editMenu, MenuOption::PackageModel, 0, + qApp, SLOT(packageModel()), + QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); + // Audio menu ---------------------------------- MenuWrapper* audioMenu = addMenu("Audio"); @@ -186,65 +245,6 @@ Menu::Menu() { addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::MiniMirror, 0, false); - // Edit menu ---------------------------------- - MenuWrapper* editMenu = addMenu("Edit"); - - // Edit > Undo - QUndoStack* undoStack = qApp->getUndoStack(); - QAction* undoAction = undoStack->createUndoAction(editMenu); - undoAction->setShortcut(Qt::CTRL | Qt::Key_Z); - addActionToQMenuAndActionHash(editMenu, undoAction); - - // Edit > Redo - QAction* redoAction = undoStack->createRedoAction(editMenu); - redoAction->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_Z); - addActionToQMenuAndActionHash(editMenu, redoAction); - - // Edit > Running Sccripts - addActionToQMenuAndActionHash(editMenu, MenuOption::RunningScripts, Qt::CTRL | Qt::Key_J, - qApp, SLOT(toggleRunningScriptsWidget())); - - // Edit > Open and Run Script from File... [advanced] - addActionToQMenuAndActionHash(editMenu, MenuOption::LoadScript, Qt::CTRL | Qt::Key_O, - qApp, SLOT(loadDialog()), - QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); - - // Edit > Open and Run Script from Url... [advanced] - addActionToQMenuAndActionHash(editMenu, MenuOption::LoadScriptURL, - Qt::CTRL | Qt::SHIFT | Qt::Key_O, qApp, SLOT(loadScriptURLDialog()), - QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); - - // Edit > Stop All Scripts... [advanced] - addActionToQMenuAndActionHash(editMenu, MenuOption::StopAllScripts, 0, qApp, SLOT(stopAllScripts()), - QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); - - // Edit > Reload All Scripts... [advanced] - addActionToQMenuAndActionHash(editMenu, MenuOption::ReloadAllScripts, Qt::CTRL | Qt::Key_R, - qApp, SLOT(reloadAllScripts()), - QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); - - // Edit > Scripts Editor... [advanced] - addActionToQMenuAndActionHash(editMenu, MenuOption::ScriptEditor, Qt::ALT | Qt::Key_S, - dialogsManager.data(), SLOT(showScriptEditor()), - QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); - - // Edit > Console... [advanced] - addActionToQMenuAndActionHash(editMenu, MenuOption::Console, Qt::CTRL | Qt::ALT | Qt::Key_J, - DependencyManager::get().data(), - SLOT(toggleConsole()), - QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); - - // Edit > Reload All Content [advanced] - addActionToQMenuAndActionHash(editMenu, MenuOption::ReloadContent, 0, qApp, SLOT(reloadResourceCaches()), - QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); - - - // Edit > Package Model... [advanced] - addActionToQMenuAndActionHash(editMenu, MenuOption::PackageModel, 0, - qApp, SLOT(packageModel()), - QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); - - // Navigate menu ---------------------------------- MenuWrapper* navigateMenu = addMenu("Navigate"); @@ -273,14 +273,6 @@ Menu::Menu() { QAction::NoRole, UNSPECIFIED_POSITION, "Advanced"); - // Market menu ---------------------------------- - MenuWrapper* marketMenu = addMenu("Market"); - - // Market > Marketplace... -- FIXME: needs implementation - auto marketplaceAction = addActionToQMenuAndActionHash(marketMenu, "Marketplace..."); - marketplaceAction->setDisabled(true); - - // Settings menu ---------------------------------- MenuWrapper* settingsMenu = addMenu("Settings"); From 86691d5d0e2af3351e105e0f4a8e512081a52526 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Fri, 8 Jan 2016 13:12:43 -0800 Subject: [PATCH 6/9] remove vsync and framerate menus from 2d display plugin --- .../Basic2DWindowOpenGLDisplayPlugin.cpp | 63 +------------------ 1 file changed, 2 insertions(+), 61 deletions(-) diff --git a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp index 71a885b31c..290e2e4f79 100644 --- a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp @@ -18,13 +18,6 @@ const QString Basic2DWindowOpenGLDisplayPlugin::NAME("2D Display"); static const QString FULLSCREEN = "Fullscreen"; -static const QString FRAMERATE = DisplayPlugin::MENU_PATH() + ">Framerate"; -static const QString FRAMERATE_UNLIMITED = "Unlimited"; -static const QString FRAMERATE_60 = "60"; -static const QString FRAMERATE_50 = "50"; -static const QString FRAMERATE_40 = "40"; -static const QString FRAMERATE_30 = "30"; -static const QString VSYNC_ON = "V-Sync On"; const QString& Basic2DWindowOpenGLDisplayPlugin::getName() const { return NAME; @@ -42,38 +35,12 @@ void Basic2DWindowOpenGLDisplayPlugin::activate() { _container->unsetFullscreen(); } }, true, false); - _container->addMenu(FRAMERATE); - _framerateActions.push_back( - _container->addMenuItem(PluginType::DISPLAY_PLUGIN, FRAMERATE, FRAMERATE_UNLIMITED, - [this](bool) { updateFramerate(); }, true, true, FRAMERATE)); - _framerateActions.push_back( - _container->addMenuItem(PluginType::DISPLAY_PLUGIN, FRAMERATE, FRAMERATE_60, - [this](bool) { updateFramerate(); }, true, false, FRAMERATE)); - _framerateActions.push_back( - _container->addMenuItem(PluginType::DISPLAY_PLUGIN, FRAMERATE, FRAMERATE_50, - [this](bool) { updateFramerate(); }, true, false, FRAMERATE)); - _framerateActions.push_back( - _container->addMenuItem(PluginType::DISPLAY_PLUGIN, FRAMERATE, FRAMERATE_40, - [this](bool) { updateFramerate(); }, true, false, FRAMERATE)); - _framerateActions.push_back( - _container->addMenuItem(PluginType::DISPLAY_PLUGIN, FRAMERATE, FRAMERATE_30, - [this](bool) { updateFramerate(); }, true, false, FRAMERATE)); - - // Vsync detection happens in the parent class activate, so we need to check after that - if (_vsyncSupported) { - _vsyncAction = _container->addMenuItem(PluginType::DISPLAY_PLUGIN, MENU_PATH(), VSYNC_ON, [this](bool) {}, true, true); - } else { - _vsyncAction = nullptr; - } updateFramerate(); } void Basic2DWindowOpenGLDisplayPlugin::submitSceneTexture(uint32_t frameIndex, uint32_t sceneTexture, const glm::uvec2& sceneSize) { - if (_vsyncAction) { - _wantVsync = _vsyncAction->isChecked(); - } - + _wantVsync = true; // always WindowOpenGLDisplayPlugin::submitSceneTexture(frameIndex, sceneTexture, sceneSize); } @@ -87,9 +54,7 @@ const uint32_t THROTTLED_FRAMERATE = 15; int Basic2DWindowOpenGLDisplayPlugin::getDesiredInterval() const { static const int ULIMIITED_PAINT_TIMER_DELAY_MS = 1; int result = ULIMIITED_PAINT_TIMER_DELAY_MS; - if (0 != _framerateTarget) { - result = MSECS_PER_SECOND / _framerateTarget; - } else if (_isThrottled) { + if (_isThrottled) { // This test wouldn't be necessary if we could depend on updateFramerate setting _framerateTarget. // Alas, that gets complicated: isThrottled() is const and other stuff depends on it. result = MSECS_PER_SECOND / THROTTLED_FRAMERATE; @@ -112,30 +77,6 @@ bool Basic2DWindowOpenGLDisplayPlugin::isThrottled() const { } void Basic2DWindowOpenGLDisplayPlugin::updateFramerate() { - QAction* checkedFramerate{ nullptr }; - foreach(auto action, _framerateActions) { - if (action->isChecked()) { - checkedFramerate = action; - break; - } - } - - _framerateTarget = 0; - if (checkedFramerate) { - QString actionText = checkedFramerate->text(); - if (FRAMERATE_60 == actionText) { - _framerateTarget = 60; - } else if (FRAMERATE_50 == actionText) { - _framerateTarget = 50; - } else if (FRAMERATE_40 == actionText) { - _framerateTarget = 40; - } else if (FRAMERATE_30 == actionText) { - _framerateTarget = 30; - } - } else if (_isThrottled) { - _framerateTarget = THROTTLED_FRAMERATE; - } - int newInterval = getDesiredInterval(); _timer.start(newInterval); } From 46ed5f6479c31937d5f0a62ae763fe18b255aedd Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Sat, 9 Jan 2016 14:27:57 -0800 Subject: [PATCH 7/9] Fix AssignmentParentFinder not handling null parentID --- assignment-client/src/entities/AssignmentParentFinder.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/assignment-client/src/entities/AssignmentParentFinder.cpp b/assignment-client/src/entities/AssignmentParentFinder.cpp index cc5c7557dc..294556383e 100644 --- a/assignment-client/src/entities/AssignmentParentFinder.cpp +++ b/assignment-client/src/entities/AssignmentParentFinder.cpp @@ -13,6 +13,12 @@ SpatiallyNestableWeakPointer AssignmentParentFinder::find(QUuid parentID, bool& success) const { SpatiallyNestableWeakPointer parent; + + if (parentID.isNull()) { + success = true; + return parent; + } + // search entities parent = _tree->findEntityByEntityItemID(parentID); if (parent.expired()) { From d74686474a08ddf980d8c9bab6bc6a200760a00b Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Sun, 10 Jan 2016 11:39:47 -0800 Subject: [PATCH 8/9] Ensure VR menus never render off the overlay --- interface/resources/qml/VrMenu.qml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/interface/resources/qml/VrMenu.qml b/interface/resources/qml/VrMenu.qml index 738ec34a02..689171f9e9 100644 --- a/interface/resources/qml/VrMenu.qml +++ b/interface/resources/qml/VrMenu.qml @@ -51,6 +51,16 @@ Hifi.VrMenu { VrMenuView { property int menuDepth: root.models.length - 1 model: root.models[menuDepth] + + function fit(position, size, maxposition) { + var padding = 8; + if (position < padding) { + position = padding; + } else if (position + size + padding > maxposition) { + position = maxposition - (size + padding); + } + return position; + } Component.onCompleted: { if (menuDepth === 0) { @@ -61,6 +71,8 @@ Hifi.VrMenu { x = lastColumn.x + 64; y = lastMousePosition.y - height / 2; } + x = fit(x, width, parent.width); + y = fit(y, height, parent.height); } onSelected: { From 9068d559988af9e6c47a0cd2ef3441d21b208517 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Mon, 11 Jan 2016 15:58:00 +1300 Subject: [PATCH 9/9] Fix display of File > About Interface window --- interface/resources/html/interface-welcome.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/resources/html/interface-welcome.html b/interface/resources/html/interface-welcome.html index 1fc719ed72..113de7f2a0 100644 --- a/interface/resources/html/interface-welcome.html +++ b/interface/resources/html/interface-welcome.html @@ -1,4 +1,4 @@ - + @@ -14,7 +14,7 @@ body { background: white; - width: 839px; + width: 100%; overflow-x: hidden; } @@ -181,7 +181,7 @@ function overrideBodyWidth() { document.body.style.width = "100%"; - container.style.width = "0"; + } //]]>