aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/llviewerwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/newview/llviewerwindow.cpp')
-rw-r--r--linden/indra/newview/llviewerwindow.cpp338
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;
227BOOL gDebugFastUIRender = FALSE; 231BOOL gDebugFastUIRender = FALSE;
228 232
229BOOL gbCapturing = FALSE; 233BOOL gbCapturing = FALSE;
234#if !LL_SOLARIS
230MovieMaker gMovieMaker; 235MovieMaker gMovieMaker;
236#endif
231 237
232S32 CHAT_BAR_HEIGHT = 28; 238S32 CHAT_BAR_HEIGHT = 28;
233S32 OVERLAY_BAR_HEIGHT = 20; 239S32 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
1116BOOL 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
1124BOOL 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
1100void LLViewerWindow::handleMouseMove(LLWindow *window, LLCoordGL pos, MASK mask) 1132void 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
1225BOOL LLViewerWindow::handleTranslatedKeyDown(KEY key, MASK mask, BOOL repeated) 1258BOOL 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
1244BOOL LLViewerWindow::handleTranslatedKeyUp(KEY key, MASK mask) 1280BOOL 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
2179void 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
2153void LLViewerWindow::drawDebugText() 2194void 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}