summaryrefslogtreecommitdiff
path: root/indra/newview/llpanelprimmediacontrols.cpp
diff options
context:
space:
mode:
authorMonroe Linden <monroe@lindenlab.com>2009-11-04 15:59:04 -0800
committerMonroe Linden <monroe@lindenlab.com>2009-11-04 15:59:04 -0800
commit0bd2567bf5648808a95c7826581199bb371597cb (patch)
tree5aff88dc0027524672de6c304cf5568c7c42064c /indra/newview/llpanelprimmediacontrols.cpp
parentfa3b57bd9f0afcf2d38dae27d4b9765624baf758 (diff)
Fix for DEV-42076 (media controls should not fade out while mouse is hovered over them).
Updated LLPanelPrimMediaControls::isMouseOver() to do the right thing with the new structure of the panel.
Diffstat (limited to 'indra/newview/llpanelprimmediacontrols.cpp')
-rw-r--r--indra/newview/llpanelprimmediacontrols.cpp33
1 files changed, 20 insertions, 13 deletions
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index 58ca481b77..0b2a7e8756 100644
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -691,24 +691,31 @@ bool LLPanelPrimMediaControls::isMouseOver()
getWindow()->getCursorPosition(&cursor_pos_window);
getWindow()->convertCoords(cursor_pos_window, &cursor_pos_gl);
- LLPanel* controls_panel = NULL;
- controls_panel = getChild<LLPanel>("media_hover_controls");
- if(controls_panel && !controls_panel->getVisible())
- {
- // The hover controls aren't visible -- use the focused controls instead.
- controls_panel = getChild<LLPanel>("media_focused_controls");
- }
+ LLView* controls_view = NULL;
+ controls_view = getChild<LLView>("media_controls");
- if(controls_panel && controls_panel->getVisible())
+ if(controls_view && controls_view->getVisible())
{
- controls_panel->screenPointToLocal(cursor_pos_gl.mX, cursor_pos_gl.mY, &x, &y);
+ controls_view->screenPointToLocal(cursor_pos_gl.mX, cursor_pos_gl.mY, &x, &y);
- LLView *hit_child = controls_panel->childFromPoint(x, y);
- if(hit_child)
+ LLView *hit_child = controls_view->childFromPoint(x, y);
+ if(hit_child && hit_child->getVisible())
{
// This was useful for debugging both coordinate translation and view hieararchy problems...
-// llinfos << "mouse coords: " << x << ", " << y << " hit child " << hit_child->getName() << llendl;
- result = true;
+ // llinfos << "mouse coords: " << x << ", " << y << " hit child " << hit_child->getName() << llendl;
+
+ // This will be a direct child of the LLLayoutStack, which should be a layout_panel.
+ // These may not shown/hidden by the logic in updateShape(), so we need to do another hit test on the children of the layout panel,
+ // which are the actual controls.
+ hit_child->screenPointToLocal(cursor_pos_gl.mX, cursor_pos_gl.mY, &x, &y);
+
+ LLView *hit_child_2 = hit_child->childFromPoint(x, y);
+ if(hit_child_2 && hit_child_2->getVisible())
+ {
+ // This was useful for debugging both coordinate translation and view hieararchy problems...
+ // llinfos << " mouse coords: " << x << ", " << y << " hit child 2 " << hit_child_2->getName() << llendl;
+ result = true;
+ }
}
}
}