diff options
Diffstat (limited to 'linden/indra/newview/llviewerwindow.cpp')
-rw-r--r-- | linden/indra/newview/llviewerwindow.cpp | 338 |
1 files changed, 198 insertions, 140 deletions
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp index d2190cc..13a4c41 100644 --- a/linden/indra/newview/llviewerwindow.cpp +++ b/linden/indra/newview/llviewerwindow.cpp | |||
@@ -39,6 +39,8 @@ | |||
39 | #include "llviewercamera.h" | 39 | #include "llviewercamera.h" |
40 | //#include "imdebug.h" | 40 | //#include "imdebug.h" |
41 | 41 | ||
42 | #include "llvoiceclient.h" // for push-to-talk button handling | ||
43 | |||
42 | #ifdef SABINRIG | 44 | #ifdef SABINRIG |
43 | #include "cbw.h" | 45 | #include "cbw.h" |
44 | #endif //SABINRIG | 46 | #endif //SABINRIG |
@@ -87,9 +89,11 @@ | |||
87 | #include "llfeaturemanager.h" | 89 | #include "llfeaturemanager.h" |
88 | #include "llfilepicker.h" | 90 | #include "llfilepicker.h" |
89 | #include "llfloater.h" | 91 | #include "llfloater.h" |
92 | #include "llfloateractivespeakers.h" | ||
90 | #include "llfloaterbuildoptions.h" | 93 | #include "llfloaterbuildoptions.h" |
91 | #include "llfloaterbuyland.h" | 94 | #include "llfloaterbuyland.h" |
92 | #include "llfloaterchat.h" | 95 | #include "llfloaterchat.h" |
96 | #include "llfloaterchatterbox.h" | ||
93 | #include "llfloatercustomize.h" | 97 | #include "llfloatercustomize.h" |
94 | #include "llfloatereditui.h" // HACK JAMESDEBUG for ui editor | 98 | #include "llfloatereditui.h" // HACK JAMESDEBUG for ui editor |
95 | #include "llfloaterland.h" | 99 | #include "llfloaterland.h" |
@@ -227,7 +231,9 @@ BOOL gPickTransparent = TRUE; | |||
227 | BOOL gDebugFastUIRender = FALSE; | 231 | BOOL gDebugFastUIRender = FALSE; |
228 | 232 | ||
229 | BOOL gbCapturing = FALSE; | 233 | BOOL gbCapturing = FALSE; |
234 | #if !LL_SOLARIS | ||
230 | MovieMaker gMovieMaker; | 235 | MovieMaker gMovieMaker; |
236 | #endif | ||
231 | 237 | ||
232 | S32 CHAT_BAR_HEIGHT = 28; | 238 | S32 CHAT_BAR_HEIGHT = 28; |
233 | S32 OVERLAY_BAR_HEIGHT = 20; | 239 | S32 OVERLAY_BAR_HEIGHT = 20; |
@@ -515,30 +521,40 @@ public: | |||
515 | ypos += y_inc; | 521 | ypos += y_inc; |
516 | } | 522 | } |
517 | 523 | ||
518 | if (LLPipeline::getRenderParticleBeacons(NULL)) | 524 | // only display these messages if we are actually rendering beacons at this moment |
519 | { | 525 | if (LLPipeline::getRenderBeacons(NULL) && LLPipeline::getProcessBeacons(NULL)) |
520 | addText(xpos, ypos, "Viewing particle beacons (blue)"); | ||
521 | ypos += y_inc; | ||
522 | } | ||
523 | if (LLPipeline::toggleRenderTypeControlNegated((void*)LLPipeline::RENDER_TYPE_PARTICLES)) | ||
524 | { | ||
525 | addText(xpos, ypos, "Hiding particles"); | ||
526 | ypos += y_inc; | ||
527 | } | ||
528 | if (LLPipeline::getRenderPhysicalBeacons(NULL)) | ||
529 | { | ||
530 | addText(xpos, ypos, "Viewing physical object beacons (green)"); | ||
531 | ypos += y_inc; | ||
532 | } | ||
533 | if (LLPipeline::getRenderScriptedBeacons(NULL)) | ||
534 | { | ||
535 | addText(xpos, ypos, "Viewing scripted object beacons (red)"); | ||
536 | ypos += y_inc; | ||
537 | } | ||
538 | if (LLPipeline::getRenderSoundBeacons(NULL)) | ||
539 | { | 526 | { |
540 | addText(xpos, ypos, "Viewing sound beacons (yellow)"); | 527 | if (LLPipeline::getRenderParticleBeacons(NULL)) |
541 | ypos += y_inc; | 528 | { |
529 | addText(xpos, ypos, "Viewing particle beacons (blue)"); | ||
530 | ypos += y_inc; | ||
531 | } | ||
532 | if (LLPipeline::toggleRenderTypeControlNegated((void*)LLPipeline::RENDER_TYPE_PARTICLES)) | ||
533 | { | ||
534 | addText(xpos, ypos, "Hiding particles"); | ||
535 | ypos += y_inc; | ||
536 | } | ||
537 | if (LLPipeline::getRenderPhysicalBeacons(NULL)) | ||
538 | { | ||
539 | addText(xpos, ypos, "Viewing physical object beacons (green)"); | ||
540 | ypos += y_inc; | ||
541 | } | ||
542 | if (LLPipeline::getRenderScriptedBeacons(NULL)) | ||
543 | { | ||
544 | addText(xpos, ypos, "Viewing scripted object beacons (red)"); | ||
545 | ypos += y_inc; | ||
546 | } | ||
547 | else | ||
548 | if (LLPipeline::getRenderScriptedTouchBeacons(NULL)) | ||
549 | { | ||
550 | addText(xpos, ypos, "Viewing scripted object with touch function beacons (red)"); | ||
551 | ypos += y_inc; | ||
552 | } | ||
553 | if (LLPipeline::getRenderSoundBeacons(NULL)) | ||
554 | { | ||
555 | addText(xpos, ypos, "Viewing sound beacons (yellow)"); | ||
556 | ypos += y_inc; | ||
557 | } | ||
542 | } | 558 | } |
543 | } | 559 | } |
544 | 560 | ||
@@ -596,6 +612,7 @@ BOOL LLViewerWindow::handleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask | |||
596 | // Hide tooltips on mousedown | 612 | // Hide tooltips on mousedown |
597 | if( mToolTip ) | 613 | if( mToolTip ) |
598 | { | 614 | { |
615 | mToolTipBlocked = TRUE; | ||
599 | mToolTip->setVisible( FALSE ); | 616 | mToolTip->setVisible( FALSE ); |
600 | } | 617 | } |
601 | 618 | ||
@@ -1096,6 +1113,21 @@ BOOL LLViewerWindow::handleRightMouseUp(LLWindow *window, LLCoordGL pos, MASK m | |||
1096 | return TRUE; | 1113 | return TRUE; |
1097 | } | 1114 | } |
1098 | 1115 | ||
1116 | BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MASK mask) | ||
1117 | { | ||
1118 | gVoiceClient->middleMouseState(true); | ||
1119 | |||
1120 | // Always handled as far as the OS is concerned. | ||
1121 | return TRUE; | ||
1122 | } | ||
1123 | |||
1124 | BOOL LLViewerWindow::handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask) | ||
1125 | { | ||
1126 | gVoiceClient->middleMouseState(false); | ||
1127 | |||
1128 | // Always handled as far as the OS is concerned. | ||
1129 | return TRUE; | ||
1130 | } | ||
1099 | 1131 | ||
1100 | void LLViewerWindow::handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask) | 1132 | void LLViewerWindow::handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask) |
1101 | { | 1133 | { |
@@ -1112,7 +1144,8 @@ void LLViewerWindow::handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask | |||
1112 | LLCoordGL prev_saved_mouse_point = mCurrentMousePoint; | 1144 | LLCoordGL prev_saved_mouse_point = mCurrentMousePoint; |
1113 | LLCoordGL mouse_point(x, y); | 1145 | LLCoordGL mouse_point(x, y); |
1114 | saveLastMouse(mouse_point); | 1146 | saveLastMouse(mouse_point); |
1115 | BOOL mouse_actually_moved = (prev_saved_mouse_point.mX != mCurrentMousePoint.mX) || (prev_saved_mouse_point.mY != mCurrentMousePoint.mY); | 1147 | BOOL mouse_actually_moved = !gFocusMgr.getMouseCapture() && // mouse is not currenty captured |
1148 | ((prev_saved_mouse_point.mX != mCurrentMousePoint.mX) || (prev_saved_mouse_point.mY != mCurrentMousePoint.mY)); // mouse moved from last recorded position | ||
1116 | 1149 | ||
1117 | gMouseIdleTimer.reset(); | 1150 | gMouseIdleTimer.reset(); |
1118 | 1151 | ||
@@ -1224,6 +1257,9 @@ void LLViewerWindow::handleFocusLost(LLWindow *window) | |||
1224 | 1257 | ||
1225 | BOOL LLViewerWindow::handleTranslatedKeyDown(KEY key, MASK mask, BOOL repeated) | 1258 | BOOL LLViewerWindow::handleTranslatedKeyDown(KEY key, MASK mask, BOOL repeated) |
1226 | { | 1259 | { |
1260 | // Let the voice chat code check for its PTT key. Note that this never affects event processing. | ||
1261 | gVoiceClient->keyDown(key, mask); | ||
1262 | |||
1227 | if (gAwayTimer.getElapsedTimeF32() > MIN_AFK_TIME) | 1263 | if (gAwayTimer.getElapsedTimeF32() > MIN_AFK_TIME) |
1228 | { | 1264 | { |
1229 | gAgent.clearAFK(); | 1265 | gAgent.clearAFK(); |
@@ -1243,6 +1279,9 @@ BOOL LLViewerWindow::handleTranslatedKeyDown(KEY key, MASK mask, BOOL repeated) | |||
1243 | 1279 | ||
1244 | BOOL LLViewerWindow::handleTranslatedKeyUp(KEY key, MASK mask) | 1280 | BOOL LLViewerWindow::handleTranslatedKeyUp(KEY key, MASK mask) |
1245 | { | 1281 | { |
1282 | // Let the voice chat code check for its PTT key. Note that this never affects event processing. | ||
1283 | gVoiceClient->keyUp(key, mask); | ||
1284 | |||
1246 | return FALSE; | 1285 | return FALSE; |
1247 | } | 1286 | } |
1248 | 1287 | ||
@@ -1285,21 +1324,14 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated) | |||
1285 | } | 1324 | } |
1286 | 1325 | ||
1287 | // Unmute audio | 1326 | // Unmute audio |
1288 | if (!gSavedSettings.getBOOL("MuteAudio")) | 1327 | audio_update_volume(); |
1289 | { | ||
1290 | if (gAudiop) gAudiop->setMuted(FALSE); | ||
1291 | F32 volume = gSavedSettings.getF32("MediaAudioVolume"); | ||
1292 | if(LLMediaEngine::getInstance()) | ||
1293 | { | ||
1294 | LLMediaEngine::getInstance()->setVolume(volume); | ||
1295 | LLMediaEngine::updateClass(volume); | ||
1296 | } | ||
1297 | } | ||
1298 | } | 1328 | } |
1299 | else | 1329 | else |
1300 | { | 1330 | { |
1301 | mActive = FALSE; | 1331 | mActive = FALSE; |
1302 | gAgent.setAFK(); | 1332 | if (gAllowIdleAFK) { |
1333 | gAgent.setAFK(); | ||
1334 | } | ||
1303 | send_agent_pause(); | 1335 | send_agent_pause(); |
1304 | if (mWindow->getFullscreen() && !mIgnoreActivate) | 1336 | if (mWindow->getFullscreen() && !mIgnoreActivate) |
1305 | { | 1337 | { |
@@ -1307,14 +1339,7 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated) | |||
1307 | stopGL(); | 1339 | stopGL(); |
1308 | } | 1340 | } |
1309 | // Mute audio | 1341 | // Mute audio |
1310 | if (gSavedSettings.getBOOL("MuteWhenMinimized")) | 1342 | audio_update_volume(); |
1311 | { | ||
1312 | llinfos << "Muting audio on minimize" << llendl; | ||
1313 | if (gAudiop) gAudiop->setMuted(TRUE); | ||
1314 | F32 volume = 0.f; | ||
1315 | LLMediaEngine::getInstance()->setVolume(volume); | ||
1316 | LLMediaEngine::updateClass(volume); | ||
1317 | } | ||
1318 | } | 1343 | } |
1319 | return TRUE; | 1344 | return TRUE; |
1320 | } | 1345 | } |
@@ -1463,8 +1488,8 @@ LLViewerWindow::LLViewerWindow( | |||
1463 | if (NULL == mWindow) | 1488 | if (NULL == mWindow) |
1464 | { | 1489 | { |
1465 | LLSplashScreen::update("Shutting down..."); | 1490 | LLSplashScreen::update("Shutting down..."); |
1466 | #if LL_LINUX | 1491 | #if LL_LINUX || LL_SOLARIS |
1467 | llwarns << "Unable to create window, be sure screen is set at 32-bit color and your graphics driver is configured correctly. See README-linux.txt for further information." | 1492 | llwarns << "Unable to create window, be sure screen is set at 32-bit color and your graphics driver is configured correctly. See README-linux.txt or README-solaris.txt for further information." |
1468 | << llendl; | 1493 | << llendl; |
1469 | #else | 1494 | #else |
1470 | llwarns << "Unable to create window, be sure screen is set at 32-bit color in Control Panels->Display->Settings" | 1495 | llwarns << "Unable to create window, be sure screen is set at 32-bit color in Control Panels->Display->Settings" |
@@ -1714,7 +1739,7 @@ void LLViewerWindow::initBase() | |||
1714 | LLRect notify_rect = full_window; | 1739 | LLRect notify_rect = full_window; |
1715 | //notify_rect.mTop -= 24; | 1740 | //notify_rect.mTop -= 24; |
1716 | notify_rect.mBottom += STATUS_BAR_HEIGHT; | 1741 | notify_rect.mBottom += STATUS_BAR_HEIGHT; |
1717 | gNotifyBoxView = new LLNotifyBoxView("notify", notify_rect, FALSE, FOLLOWS_ALL); | 1742 | gNotifyBoxView = new LLNotifyBoxView("notify_container", notify_rect, FALSE, FOLLOWS_ALL); |
1718 | mRootView->addChild(gNotifyBoxView, -2); | 1743 | mRootView->addChild(gNotifyBoxView, -2); |
1719 | 1744 | ||
1720 | // Tooltips go above floaters | 1745 | // Tooltips go above floaters |
@@ -1819,117 +1844,117 @@ void LLViewerWindow::initWorldUI() | |||
1819 | S32 width = mRootView->getRect().getWidth(); | 1844 | S32 width = mRootView->getRect().getWidth(); |
1820 | LLRect full_window(0, height, width, 0); | 1845 | LLRect full_window(0, height, width, 0); |
1821 | 1846 | ||
1822 | LLRect bar_rect(-1, STATUS_BAR_HEIGHT, width+1, -1); | 1847 | if ( gToolBar == NULL ) // Don't re-enter if objects are alreay created |
1823 | gToolBar = new LLToolBar("toolbar", bar_rect); | 1848 | { |
1849 | LLRect bar_rect(-1, STATUS_BAR_HEIGHT, width+1, -1); | ||
1850 | gToolBar = new LLToolBar("toolbar", bar_rect); | ||
1824 | 1851 | ||
1825 | LLRect chat_bar_rect(-1,CHAT_BAR_HEIGHT, width+1, -1); | 1852 | LLRect chat_bar_rect(-1,CHAT_BAR_HEIGHT, width+1, -1); |
1826 | chat_bar_rect.translate(0, STATUS_BAR_HEIGHT-1); | 1853 | chat_bar_rect.translate(0, STATUS_BAR_HEIGHT-1); |
1827 | gChatBar = new LLChatBar("chat", chat_bar_rect); | 1854 | gChatBar = new LLChatBar("chat", chat_bar_rect); |
1828 | 1855 | ||
1829 | bar_rect.translate(0, STATUS_BAR_HEIGHT-1); | 1856 | bar_rect.translate(0, STATUS_BAR_HEIGHT-1); |
1830 | bar_rect.translate(0, CHAT_BAR_HEIGHT-1); | 1857 | bar_rect.translate(0, CHAT_BAR_HEIGHT-1); |
1831 | gOverlayBar = new LLOverlayBar("overlay", bar_rect); | 1858 | gOverlayBar = new LLOverlayBar("overlay", bar_rect); |
1832 | 1859 | ||
1833 | // panel containing chatbar, toolbar, and overlay, over floaters | 1860 | // panel containing chatbar, toolbar, and overlay, over floaters |
1834 | LLRect bottom_rect(-1, 2*STATUS_BAR_HEIGHT + CHAT_BAR_HEIGHT, width+1, -1); | 1861 | LLRect bottom_rect(-1, 2*STATUS_BAR_HEIGHT + CHAT_BAR_HEIGHT, width+1, -1); |
1835 | gBottomPanel = new LLBottomPanel("bottom panel", bottom_rect); | 1862 | gBottomPanel = new LLBottomPanel("bottom panel", bottom_rect); |
1836 | 1863 | ||
1837 | // the order here is important | 1864 | // the order here is important |
1838 | gBottomPanel->addChild(gChatBar); | 1865 | gBottomPanel->addChild(gChatBar); |
1839 | gBottomPanel->addChild(gToolBar); | 1866 | gBottomPanel->addChild(gToolBar); |
1840 | gBottomPanel->addChild(gOverlayBar); | 1867 | gBottomPanel->addChild(gOverlayBar); |
1841 | mRootView->addChild(gBottomPanel); | 1868 | mRootView->addChild(gBottomPanel); |
1842 | 1869 | ||
1843 | // View for hover information | 1870 | // View for hover information |
1844 | gHoverView = new LLHoverView("gHoverView", full_window); | 1871 | gHoverView = new LLHoverView("gHoverView", full_window); |
1845 | gHoverView->setVisible(TRUE); | 1872 | gHoverView->setVisible(TRUE); |
1846 | mRootView->addChild(gHoverView); | 1873 | mRootView->addChild(gHoverView); |
1847 | 1874 | ||
1848 | // | 1875 | // |
1849 | // Map | 1876 | // Map |
1850 | // | 1877 | // |
1851 | // TODO: Move instance management into class | 1878 | // TODO: Move instance management into class |
1852 | gFloaterMap = new LLFloaterMap("Map"); | 1879 | gFloaterMap = new LLFloaterMap("Map"); |
1853 | gFloaterMap->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT); | 1880 | gFloaterMap->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT); |
1854 | gFloaterMap->setVisible( gSavedSettings.getBOOL("ShowMiniMap") ); | 1881 | gFloaterMap->setVisible( gSavedSettings.getBOOL("ShowMiniMap") ); |
1855 | 1882 | ||
1856 | // keep onscreen | 1883 | // keep onscreen |
1857 | gFloaterView->adjustToFitScreen(gFloaterMap, FALSE); | 1884 | gFloaterView->adjustToFitScreen(gFloaterMap, FALSE); |
1858 | 1885 | ||
1859 | if (gSavedSettings.getBOOL("ShowCameraControls")) | 1886 | if (gSavedSettings.getBOOL("ShowCameraControls")) |
1860 | { | 1887 | { |
1861 | LLFloaterCamera::show(NULL); | 1888 | LLFloaterCamera::show(NULL); |
1862 | } | 1889 | } |
1863 | 1890 | ||
1864 | if (gSavedSettings.getBOOL("ShowMovementControls")) | 1891 | if (gSavedSettings.getBOOL("ShowMovementControls")) |
1865 | { | 1892 | { |
1866 | LLFloaterMove::show(NULL); | 1893 | LLFloaterMove::show(NULL); |
1867 | } | 1894 | } |
1868 | 1895 | ||
1869 | // Must have one global chat floater so it can actually store | 1896 | gIMMgr = LLIMMgr::getInstance(); |
1870 | // the history. JC | ||
1871 | gFloaterChat = new LLFloaterChat(); | ||
1872 | gFloaterChat->setVisible( FALSE ); | ||
1873 | |||
1874 | if ( gSavedPerAccountSettings.getBOOL("LogShowHistory") ) gFloaterChat->loadHistory(); | ||
1875 | 1897 | ||
1876 | gIMView = new LLIMView("gIMView", LLRect() ); | 1898 | if ( gSavedPerAccountSettings.getBOOL("LogShowHistory") ) |
1877 | gIMView->setFollowsAll(); | 1899 | { |
1878 | mRootView->addChild(gIMView); | 1900 | LLFloaterChat::getInstance(LLSD())->loadHistory(); |
1901 | } | ||
1879 | 1902 | ||
1880 | LLRect morph_view_rect = full_window; | 1903 | LLRect morph_view_rect = full_window; |
1881 | morph_view_rect.stretch( -STATUS_BAR_HEIGHT ); | 1904 | morph_view_rect.stretch( -STATUS_BAR_HEIGHT ); |
1882 | morph_view_rect.mTop = full_window.mTop - 32; | 1905 | morph_view_rect.mTop = full_window.mTop - 32; |
1883 | gMorphView = new LLMorphView("gMorphView", morph_view_rect ); | 1906 | gMorphView = new LLMorphView("gMorphView", morph_view_rect ); |
1884 | mRootView->addChild(gMorphView); | 1907 | mRootView->addChild(gMorphView); |
1885 | gMorphView->setVisible(FALSE); | 1908 | gMorphView->setVisible(FALSE); |
1886 | 1909 | ||
1887 | gFloaterMute = new LLFloaterMute(); | 1910 | gFloaterMute = new LLFloaterMute(); |
1888 | gFloaterMute->setVisible(FALSE); | 1911 | gFloaterMute->setVisible(FALSE); |
1889 | 1912 | ||
1890 | LLWorldMapView::initClass(); | 1913 | LLWorldMapView::initClass(); |
1891 | 1914 | ||
1892 | LLRect world_map_rect = gSavedSettings.getRect("FloaterWorldMapRect"); | 1915 | LLRect world_map_rect = gSavedSettings.getRect("FloaterWorldMapRect"); |
1893 | // if 0,0,0,0 then use fullscreen | 1916 | // if 0,0,0,0 then use fullscreen |
1894 | if (world_map_rect.mTop == 0 | 1917 | if (world_map_rect.mTop == 0 |
1895 | && world_map_rect.mLeft == 0 | 1918 | && world_map_rect.mLeft == 0 |
1896 | && world_map_rect.mRight == 0 | 1919 | && world_map_rect.mRight == 0 |
1897 | && world_map_rect.mBottom == 0) | 1920 | && world_map_rect.mBottom == 0) |
1898 | { | 1921 | { |
1899 | world_map_rect.set(0, height-TOOL_BAR_HEIGHT, width, STATUS_BAR_HEIGHT); | 1922 | world_map_rect.set(0, height-TOOL_BAR_HEIGHT, width, STATUS_BAR_HEIGHT); |
1900 | world_map_rect.stretch(-4); | 1923 | world_map_rect.stretch(-4); |
1901 | gSavedSettings.setRect("FloaterWorldMapRect", world_map_rect); | 1924 | gSavedSettings.setRect("FloaterWorldMapRect", world_map_rect); |
1902 | } | 1925 | } |
1903 | gFloaterWorldMap = new LLFloaterWorldMap(); | 1926 | gFloaterWorldMap = new LLFloaterWorldMap(); |
1904 | gFloaterWorldMap->setVisible(FALSE); | 1927 | gFloaterWorldMap->setVisible(FALSE); |
1905 | 1928 | ||
1906 | // | 1929 | // |
1907 | // Tools for building | 1930 | // Tools for building |
1908 | // | 1931 | // |
1909 | 1932 | ||
1910 | // Toolbox floater | 1933 | // Toolbox floater |
1911 | init_menus(); | 1934 | init_menus(); |
1912 | 1935 | ||
1913 | gFloaterTools = new LLFloaterTools(); | 1936 | gFloaterTools = new LLFloaterTools(); |
1914 | gFloaterTools->setVisible(FALSE); | 1937 | gFloaterTools->setVisible(FALSE); |
1915 | 1938 | ||
1916 | // Status bar | 1939 | // Status bar |
1917 | S32 menu_bar_height = gMenuBarView->getRect().getHeight(); | 1940 | S32 menu_bar_height = gMenuBarView->getRect().getHeight(); |
1918 | LLRect root_rect = gViewerWindow->getRootView()->getRect(); | 1941 | LLRect root_rect = gViewerWindow->getRootView()->getRect(); |
1919 | LLRect status_rect(0, root_rect.getHeight(), root_rect.getWidth(), root_rect.getHeight() - menu_bar_height); | 1942 | LLRect status_rect(0, root_rect.getHeight(), root_rect.getWidth(), root_rect.getHeight() - menu_bar_height); |
1920 | gStatusBar = new LLStatusBar("status", status_rect); | 1943 | gStatusBar = new LLStatusBar("status", status_rect); |
1921 | gStatusBar->setFollows(FOLLOWS_LEFT | FOLLOWS_RIGHT | FOLLOWS_TOP); | 1944 | gStatusBar->setFollows(FOLLOWS_LEFT | FOLLOWS_RIGHT | FOLLOWS_TOP); |
1922 | 1945 | ||
1923 | gStatusBar->reshape(root_rect.getWidth(), gStatusBar->getRect().getHeight(), TRUE); | 1946 | gStatusBar->reshape(root_rect.getWidth(), gStatusBar->getRect().getHeight(), TRUE); |
1924 | gStatusBar->translate(0, root_rect.getHeight() - gStatusBar->getRect().getHeight()); | 1947 | gStatusBar->translate(0, root_rect.getHeight() - gStatusBar->getRect().getHeight()); |
1925 | // sync bg color with menu bar | 1948 | // sync bg color with menu bar |
1926 | gStatusBar->setBackgroundColor( gMenuBarView->getBackgroundColor() ); | 1949 | gStatusBar->setBackgroundColor( gMenuBarView->getBackgroundColor() ); |
1927 | 1950 | ||
1951 | LLFloaterChatterBox::createInstance(LLSD()); | ||
1928 | 1952 | ||
1929 | gViewerWindow->getRootView()->addChild(gStatusBar); | 1953 | gViewerWindow->getRootView()->addChild(gStatusBar); |
1930 | 1954 | ||
1931 | // menu holder appears on top to get first pass at all mouse events | 1955 | // menu holder appears on top to get first pass at all mouse events |
1932 | gViewerWindow->getRootView()->sendChildToFront(gMenuHolder); | 1956 | gViewerWindow->getRootView()->sendChildToFront(gMenuHolder); |
1957 | } | ||
1933 | } | 1958 | } |
1934 | 1959 | ||
1935 | 1960 | ||
@@ -1953,13 +1978,12 @@ LLViewerWindow::~LLViewerWindow() | |||
1953 | gFloaterTools = NULL; | 1978 | gFloaterTools = NULL; |
1954 | gStatusBar = NULL; | 1979 | gStatusBar = NULL; |
1955 | gFloaterCamera = NULL; | 1980 | gFloaterCamera = NULL; |
1956 | gIMView = NULL; | 1981 | gIMMgr = NULL; |
1957 | gHoverView = NULL; | 1982 | gHoverView = NULL; |
1958 | 1983 | ||
1959 | gFloaterView = NULL; | 1984 | gFloaterView = NULL; |
1960 | gMorphView = NULL; | 1985 | gMorphView = NULL; |
1961 | 1986 | ||
1962 | gFloaterChat = NULL; | ||
1963 | gFloaterMute = NULL; | 1987 | gFloaterMute = NULL; |
1964 | 1988 | ||
1965 | gFloaterMap = NULL; | 1989 | gFloaterMap = NULL; |
@@ -2150,6 +2174,23 @@ void LLViewerWindow::reshape(S32 width, S32 height) | |||
2150 | } | 2174 | } |
2151 | } | 2175 | } |
2152 | 2176 | ||
2177 | |||
2178 | // Hide normal UI when a logon fails | ||
2179 | void LLViewerWindow::setNormalControlsVisible( BOOL visible ) | ||
2180 | { | ||
2181 | if ( gBottomPanel ) | ||
2182 | gBottomPanel->setVisible( visible ); | ||
2183 | |||
2184 | if ( gMenuBarView ) | ||
2185 | gMenuBarView->setVisible( visible ); | ||
2186 | |||
2187 | if ( gStatusBar ) | ||
2188 | gStatusBar->setVisible( visible ); | ||
2189 | } | ||
2190 | |||
2191 | |||
2192 | |||
2193 | |||
2153 | void LLViewerWindow::drawDebugText() | 2194 | void LLViewerWindow::drawDebugText() |
2154 | { | 2195 | { |
2155 | mDebugText->draw(); | 2196 | mDebugText->draw(); |
@@ -2703,16 +2744,29 @@ BOOL LLViewerWindow::handlePerFrameHover() | |||
2703 | } | 2744 | } |
2704 | } | 2745 | } |
2705 | 2746 | ||
2747 | gPipeline.sRenderProcessBeacons = FALSE; | ||
2748 | KEY key = gKeyboard->currentKey(); | ||
2749 | if (((mask & MASK_CONTROL) && ('N' == key || 'n' == key)) || (gFloaterTools && gFloaterTools->getVisible()) || gSavedSettings.getBOOL("BeaconAlwaysOn")) | ||
2750 | { | ||
2751 | gPipeline.sRenderProcessBeacons = TRUE; | ||
2752 | } | ||
2753 | |||
2754 | /* | ||
2706 | // Show joints while in edit mode and hold down alt key. | 2755 | // Show joints while in edit mode and hold down alt key. |
2707 | if (gHUDManager) | 2756 | if (gHUDManager) |
2708 | { | 2757 | { |
2709 | if (gSavedSettings.getBOOL("AltShowsPhysical") | 2758 | BOOL menuOption = gSavedSettings.getBOOL("AltShowsPhysical"); |
2759 | if (menuOption | ||
2710 | || (gFloaterTools && gFloaterTools->getVisible())) | 2760 | || (gFloaterTools && gFloaterTools->getVisible())) |
2711 | { | 2761 | { |
2712 | gHUDManager->toggleShowPhysical( mask & MASK_ALT ); | 2762 | gHUDManager->toggleShowPhysical( mask & MASK_ALT ); |
2713 | } | 2763 | } |
2764 | else | ||
2765 | { | ||
2766 | gHUDManager->toggleShowPhysical( FALSE ); | ||
2767 | } | ||
2714 | } | 2768 | } |
2715 | 2769 | */ | |
2716 | BOOL handled = FALSE; | 2770 | BOOL handled = FALSE; |
2717 | 2771 | ||
2718 | BOOL handled_by_top_ctrl = FALSE; | 2772 | BOOL handled_by_top_ctrl = FALSE; |
@@ -4143,11 +4197,15 @@ void LLViewerWindow::saveMovieNumbered(void*) | |||
4143 | S32 y = gViewerWindow->getWindowHeight(); | 4197 | S32 y = gViewerWindow->getWindowHeight(); |
4144 | 4198 | ||
4145 | gbCapturing = TRUE; | 4199 | gbCapturing = TRUE; |
4200 | #if !LL_SOLARIS | ||
4146 | gMovieMaker.StartCapture((char *)filepath.c_str(), x, y); | 4201 | gMovieMaker.StartCapture((char *)filepath.c_str(), x, y); |
4202 | #endif | ||
4147 | } | 4203 | } |
4148 | else | 4204 | else |
4149 | { | 4205 | { |
4206 | #if !LL_SOLARIS | ||
4150 | gMovieMaker.EndCapture(); | 4207 | gMovieMaker.EndCapture(); |
4208 | #endif | ||
4151 | gbCapturing = FALSE; | 4209 | gbCapturing = FALSE; |
4152 | } | 4210 | } |
4153 | } | 4211 | } |