From 96b1f821c02f5111fc7486ad99e2e3b49f7befb0 Mon Sep 17 00:00:00 2001 From: Monroe Linden Date: Thu, 29 Oct 2009 17:14:03 -0700 Subject: Made LLViewerMediaFocus::handleScrollWheel() grab the current keyboard modifiers. --- indra/newview/llviewermediafocus.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'indra/newview/llviewermediafocus.cpp') diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index 5d0b77d4fb..c32b3523b3 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -48,6 +48,8 @@ #include "llviewerparcelmgr.h" #include "llweb.h" #include "llmediaentry.h" +#include "llkeyboard.h" + // // LLViewerMediaFocus // @@ -298,8 +300,9 @@ BOOL LLViewerMediaFocus::handleScrollWheel(S32 x, S32 y, S32 clicks) // the scrollEvent() API's x and y are not the same as handleScrollWheel's x and y. // The latter is the position of the mouse at the time of the event // The former is the 'scroll amount' in x and y, respectively. - // All we have for 'scroll amount' here is 'clicks', and no mask. - media_impl->getMediaPlugin()->scrollEvent(0, clicks, /*mask*/0); + // All we have for 'scroll amount' here is 'clicks'. + // We're also not passed the keyboard modifier mask, but we can get that from gKeyboard. + media_impl->getMediaPlugin()->scrollEvent(0, clicks, gKeyboard->currentMask(TRUE)); retval = TRUE; } return retval; -- cgit v1.2.3 From 8604c978ca3d7fdcff4849cc53f44352b237406c Mon Sep 17 00:00:00 2001 From: Monroe Linden Date: Thu, 29 Oct 2009 18:38:02 -0700 Subject: Fixes for DEV-41612, DEV-41693, DEV-41963. Made LLViewerMediaFocus::update clear inworld media focus if LLViewerMediaFocus has lost keyboard focus to anything besides the media controls, or LLToolMgr::inBuildMode() returns true. Also, never fade the media controls if they have keyboard focus (this fixes the media controls fading out while the user is trying to type an URL). --- indra/newview/llviewermediafocus.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'indra/newview/llviewermediafocus.cpp') diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index c32b3523b3..0b48461d54 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -49,6 +49,7 @@ #include "llweb.h" #include "llmediaentry.h" #include "llkeyboard.h" +#include "lltoolmgr.h" // // LLViewerMediaFocus @@ -116,7 +117,7 @@ void LLViewerMediaFocus::setFocusFace(LLPointer objectp, S32 fac } else { - if(mFocusedImplID != LLUUID::null) + if(mFocusedImplID.notNull()) { if(mMediaControls.get()) { @@ -310,6 +311,30 @@ BOOL LLViewerMediaFocus::handleScrollWheel(S32 x, S32 y, S32 clicks) void LLViewerMediaFocus::update() { + if(mFocusedImplID.notNull() || mFocusedObjectID.notNull()) + { + // We have a focused impl/face. + if(!getFocus()) + { + // We've lost keyboard focus -- check to see whether the media controls have it + if(mMediaControls.get() && mMediaControls.get()->hasFocus()) + { + // the media controls have focus -- don't clear. + } + else + { + // Someone else has focus -- back off. + clearFocus(); + } + } + else if(LLToolMgr::getInstance()->inBuildMode()) + { + // Build tools are selected -- clear focus. + clearFocus(); + } + } + + LLViewerMediaImpl *media_impl = getFocusedMediaImpl(); LLViewerObject *viewer_object = getFocusedObject(); S32 face = mFocusedObjectFace; -- cgit v1.2.3 From 0da67c881929a53f7d38ead5540e0f098b65a0ae Mon Sep 17 00:00:00 2001 From: Monroe Linden Date: Thu, 29 Oct 2009 18:49:36 -0700 Subject: In LLViewerMediaFocus::setFocusFace(), when clearing focus, only clear keyboard focus if the object had it in the first place. --- indra/newview/llviewermediafocus.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indra/newview/llviewermediafocus.cpp') diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index 0b48461d54..0ef4679057 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -123,7 +123,10 @@ void LLViewerMediaFocus::setFocusFace(LLPointer objectp, S32 fac { mMediaControls.get()->resetZoomLevel(); } + } + if(hasFocus()) + { gFocusMgr.setKeyboardFocus(NULL); } -- cgit v1.2.3