diff options
Diffstat (limited to 'linden/indra/newview/llviewerwindow.cpp')
-rw-r--r-- | linden/indra/newview/llviewerwindow.cpp | 58 |
1 files changed, 35 insertions, 23 deletions
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp index eb8977c..f7713c2 100644 --- a/linden/indra/newview/llviewerwindow.cpp +++ b/linden/indra/newview/llviewerwindow.cpp | |||
@@ -54,7 +54,7 @@ | |||
54 | // | 54 | // |
55 | 55 | ||
56 | // linden library includes | 56 | // linden library includes |
57 | #include "audioengine.h" // mute on minimize | 57 | #include "llaudioengine.h" // mute on minimize |
58 | #include "indra_constants.h" | 58 | #include "indra_constants.h" |
59 | #include "llassetstorage.h" | 59 | #include "llassetstorage.h" |
60 | #include "llfontgl.h" | 60 | #include "llfontgl.h" |
@@ -156,7 +156,6 @@ | |||
156 | #include "lltoolselectland.h" | 156 | #include "lltoolselectland.h" |
157 | #include "lltoolview.h" | 157 | #include "lltoolview.h" |
158 | #include "lluictrlfactory.h" | 158 | #include "lluictrlfactory.h" |
159 | #include "lluploaddialog.h" | ||
160 | #include "llurldispatcher.h" // SLURL from other app instance | 159 | #include "llurldispatcher.h" // SLURL from other app instance |
161 | #include "llvieweraudio.h" | 160 | #include "llvieweraudio.h" |
162 | #include "llviewercamera.h" | 161 | #include "llviewercamera.h" |
@@ -164,6 +163,8 @@ | |||
164 | #include "llviewerimagelist.h" | 163 | #include "llviewerimagelist.h" |
165 | #include "llviewerinventory.h" | 164 | #include "llviewerinventory.h" |
166 | #include "llviewerkeyboard.h" | 165 | #include "llviewerkeyboard.h" |
166 | #include "llviewermedia.h" | ||
167 | #include "llviewermediafocus.h" | ||
167 | #include "llviewermenu.h" | 168 | #include "llviewermenu.h" |
168 | #include "llviewermessage.h" | 169 | #include "llviewermessage.h" |
169 | #include "llviewerobjectlist.h" | 170 | #include "llviewerobjectlist.h" |
@@ -310,7 +311,9 @@ public: | |||
310 | S32 hours = (S32)(time / (60*60)); | 311 | S32 hours = (S32)(time / (60*60)); |
311 | S32 mins = (S32)((time - hours*(60*60)) / 60); | 312 | S32 mins = (S32)((time - hours*(60*60)) / 60); |
312 | S32 secs = (S32)((time - hours*(60*60) - mins*60)); | 313 | S32 secs = (S32)((time - hours*(60*60) - mins*60)); |
313 | addText(xpos, ypos, llformat(" Debug %d: %d:%02d:%02d", idx, hours,mins,secs)); ypos += y_inc2; | 314 | std::string label = gDebugTimerLabel[idx]; |
315 | if (label.empty()) label = llformat("Debug: %d", idx); | ||
316 | addText(xpos, ypos, llformat(" %s: %d:%02d:%02d", label.c_str(), hours,mins,secs)); ypos += y_inc2; | ||
314 | } | 317 | } |
315 | 318 | ||
316 | F32 time = gFrameTimeSeconds; | 319 | F32 time = gFrameTimeSeconds; |
@@ -795,6 +798,7 @@ BOOL LLViewerWindow::handleRightMouseDown(LLWindow *window, LLCoordGL pos, MASK | |||
795 | if (handle) | 798 | if (handle) |
796 | return handle; | 799 | return handle; |
797 | 800 | ||
801 | |||
798 | // *HACK: this should be rolled into the composite tool logic, not | 802 | // *HACK: this should be rolled into the composite tool logic, not |
799 | // hardcoded at the top level. | 803 | // hardcoded at the top level. |
800 | if (CAMERA_MODE_CUSTOMIZE_AVATAR != gAgent.getCameraMode() && LLToolMgr::getInstance()->getCurrentTool() != LLToolPie::getInstance()) | 804 | if (CAMERA_MODE_CUSTOMIZE_AVATAR != gAgent.getCameraMode() && LLToolMgr::getInstance()->getCurrentTool() != LLToolPie::getInstance()) |
@@ -1141,7 +1145,7 @@ void LLViewerWindow::handleDataCopy(LLWindow *window, S32 data_type, void *data) | |||
1141 | case SLURL_MESSAGE_TYPE: | 1145 | case SLURL_MESSAGE_TYPE: |
1142 | // received URL | 1146 | // received URL |
1143 | std::string url = (const char*)data; | 1147 | std::string url = (const char*)data; |
1144 | LLWebBrowserCtrl* web = NULL; | 1148 | LLMediaCtrl* web = NULL; |
1145 | const bool trusted_browser = false; | 1149 | const bool trusted_browser = false; |
1146 | if (LLURLDispatcher::dispatch(url, web, trusted_browser)) | 1150 | if (LLURLDispatcher::dispatch(url, web, trusted_browser)) |
1147 | { | 1151 | { |
@@ -1736,6 +1740,19 @@ void LLViewerWindow::initWorldUI() | |||
1736 | // menu holder appears on top to get first pass at all mouse events | 1740 | // menu holder appears on top to get first pass at all mouse events |
1737 | 1741 | ||
1738 | mRootView->sendChildToFront(gMenuHolder); | 1742 | mRootView->sendChildToFront(gMenuHolder); |
1743 | |||
1744 | if ( gHUDView == NULL ) | ||
1745 | { | ||
1746 | LLRect hud_rect = full_window; | ||
1747 | hud_rect.mBottom += 50; | ||
1748 | if (gMenuBarView) | ||
1749 | { | ||
1750 | hud_rect.mTop -= gMenuBarView->getRect().getHeight(); | ||
1751 | } | ||
1752 | gHUDView = new LLHUDView(hud_rect); | ||
1753 | // put behind everything else in the UI | ||
1754 | mRootView->addChildAtEnd(gHUDView); | ||
1755 | } | ||
1739 | } | 1756 | } |
1740 | 1757 | ||
1741 | // Destroy the UI | 1758 | // Destroy the UI |
@@ -2180,7 +2197,7 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) | |||
2180 | if (key < 0x80) | 2197 | if (key < 0x80) |
2181 | { | 2198 | { |
2182 | // Not a special key, so likely (we hope) to generate a character. Let it fall through to character handler first. | 2199 | // Not a special key, so likely (we hope) to generate a character. Let it fall through to character handler first. |
2183 | return gFocusMgr.childHasKeyboardFocus(mRootView); | 2200 | return (gFocusMgr.getKeyboardFocus() != NULL); |
2184 | } | 2201 | } |
2185 | } | 2202 | } |
2186 | 2203 | ||
@@ -2243,7 +2260,7 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) | |||
2243 | } | 2260 | } |
2244 | 2261 | ||
2245 | // Traverses up the hierarchy | 2262 | // Traverses up the hierarchy |
2246 | LLUICtrl* keyboard_focus = gFocusMgr.getKeyboardFocus(); | 2263 | LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus(); |
2247 | if( keyboard_focus ) | 2264 | if( keyboard_focus ) |
2248 | { | 2265 | { |
2249 | // arrow keys move avatar while chatting hack | 2266 | // arrow keys move avatar while chatting hack |
@@ -2377,7 +2394,7 @@ BOOL LLViewerWindow::handleUnicodeChar(llwchar uni_char, MASK mask) | |||
2377 | } | 2394 | } |
2378 | 2395 | ||
2379 | // Traverses up the hierarchy | 2396 | // Traverses up the hierarchy |
2380 | LLView* keyboard_focus = gFocusMgr.getKeyboardFocus(); | 2397 | LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus(); |
2381 | if( keyboard_focus ) | 2398 | if( keyboard_focus ) |
2382 | { | 2399 | { |
2383 | if (keyboard_focus->handleUnicodeChar(uni_char, FALSE)) | 2400 | if (keyboard_focus->handleUnicodeChar(uni_char, FALSE)) |
@@ -2530,7 +2547,7 @@ BOOL LLViewerWindow::handlePerFrameHover() | |||
2530 | } | 2547 | } |
2531 | 2548 | ||
2532 | // clean up current focus | 2549 | // clean up current focus |
2533 | LLUICtrl* cur_focus = gFocusMgr.getKeyboardFocus(); | 2550 | LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus()); |
2534 | if (cur_focus) | 2551 | if (cur_focus) |
2535 | { | 2552 | { |
2536 | if (!cur_focus->isInVisibleChain() || !cur_focus->isInEnabledChain()) | 2553 | if (!cur_focus->isInVisibleChain() || !cur_focus->isInEnabledChain()) |
@@ -2910,12 +2927,18 @@ BOOL LLViewerWindow::handlePerFrameHover() | |||
2910 | { | 2927 | { |
2911 | do_pick = FALSE; | 2928 | do_pick = FALSE; |
2912 | } | 2929 | } |
2930 | |||
2931 | if(LLViewerMediaFocus::getInstance()->getFocus()) | ||
2932 | { | ||
2933 | // When in-world media is in focus, pick every frame so that browser mouse-overs, dragging scrollbars, etc. work properly. | ||
2934 | do_pick = TRUE; | ||
2935 | } | ||
2913 | 2936 | ||
2914 | if (do_pick) | 2937 | if (do_pick) |
2915 | { | 2938 | { |
2916 | mouse_moved_since_pick = FALSE; | 2939 | mouse_moved_since_pick = FALSE; |
2917 | mPickTimer.reset(); | 2940 | mPickTimer.reset(); |
2918 | pickAsync(getCurrentMouseX(), getCurrentMouseY(), mask, hoverPickCallback, TRUE); | 2941 | pickAsync(getCurrentMouseX(), getCurrentMouseY(), mask, hoverPickCallback, TRUE, TRUE); |
2919 | } | 2942 | } |
2920 | 2943 | ||
2921 | previous_x = x; | 2944 | previous_x = x; |
@@ -4694,7 +4717,7 @@ BOOL LLViewerWindow::changeDisplaySettings(BOOL fullscreen, LLCoordScreen size, | |||
4694 | BOOL result_first_try = FALSE; | 4717 | BOOL result_first_try = FALSE; |
4695 | BOOL result_second_try = FALSE; | 4718 | BOOL result_second_try = FALSE; |
4696 | 4719 | ||
4697 | LLUICtrl* keyboard_focus = gFocusMgr.getKeyboardFocus(); | 4720 | LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus(); |
4698 | send_agent_pause(); | 4721 | send_agent_pause(); |
4699 | llinfos << "Stopping GL during changeDisplaySettings" << llendl; | 4722 | llinfos << "Stopping GL during changeDisplaySettings" << llendl; |
4700 | stopGL(); | 4723 | stopGL(); |
@@ -4923,7 +4946,6 @@ LLBottomPanel::LLBottomPanel(const LLRect &rect) : | |||
4923 | 4946 | ||
4924 | mFactoryMap["toolbar"] = LLCallbackMap(createToolBar, NULL); | 4947 | mFactoryMap["toolbar"] = LLCallbackMap(createToolBar, NULL); |
4925 | mFactoryMap["overlay"] = LLCallbackMap(createOverlayBar, NULL); | 4948 | mFactoryMap["overlay"] = LLCallbackMap(createOverlayBar, NULL); |
4926 | mFactoryMap["hud"] = LLCallbackMap(createHUD, NULL); | ||
4927 | LLUICtrlFactory::getInstance()->buildPanel(this, "panel_bars.xml", &getFactoryMap()); | 4949 | LLUICtrlFactory::getInstance()->buildPanel(this, "panel_bars.xml", &getFactoryMap()); |
4928 | 4950 | ||
4929 | setOrigin(rect.mLeft, rect.mBottom); | 4951 | setOrigin(rect.mLeft, rect.mBottom); |
@@ -4946,12 +4968,6 @@ void LLBottomPanel::draw() | |||
4946 | LLPanel::draw(); | 4968 | LLPanel::draw(); |
4947 | } | 4969 | } |
4948 | 4970 | ||
4949 | void* LLBottomPanel::createHUD(void* data) | ||
4950 | { | ||
4951 | gHUDView = new LLHUDView(); | ||
4952 | return gHUDView; | ||
4953 | } | ||
4954 | |||
4955 | 4971 | ||
4956 | void* LLBottomPanel::createOverlayBar(void* data) | 4972 | void* LLBottomPanel::createOverlayBar(void* data) |
4957 | { | 4973 | { |
@@ -5164,12 +5180,8 @@ void LLPickInfo::updateXYCoords() | |||
5164 | LLPointer<LLViewerImage> imagep = gImageList.getImage(tep->getID()); | 5180 | LLPointer<LLViewerImage> imagep = gImageList.getImage(tep->getID()); |
5165 | if(mUVCoords.mV[VX] >= 0.f && mUVCoords.mV[VY] >= 0.f && imagep.notNull()) | 5181 | if(mUVCoords.mV[VX] >= 0.f && mUVCoords.mV[VY] >= 0.f && imagep.notNull()) |
5166 | { | 5182 | { |
5167 | LLCoordGL coords; | 5183 | mXYCoords.mX = llround(mUVCoords.mV[VX] * (F32)imagep->getWidth()); |
5168 | 5184 | mXYCoords.mY = llround((1.f - mUVCoords.mV[VY]) * (F32)imagep->getHeight()); | |
5169 | coords.mX = llround(mUVCoords.mV[VX] * (F32)imagep->getWidth()); | ||
5170 | coords.mY = llround(mUVCoords.mV[VY] * (F32)imagep->getHeight()); | ||
5171 | |||
5172 | gViewerWindow->getWindow()->convertCoords(coords, &mXYCoords); | ||
5173 | } | 5185 | } |
5174 | } | 5186 | } |
5175 | } | 5187 | } |