* Overlay::fVisible was not maintained correctly, but already used in ViewLayer.
* Overlay::SetView() no longer calls HWInterace::UpdateOverlay() if it's currently hidden. * ViewLayer::UpdateVisibleDeep() now calls _UpdateOverlayView() before showing the overlay. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17489 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
2cb33db616
commit
d41fb4db6e
@ -522,6 +522,9 @@ ViewLayer::_UpdateOverlayView() const
|
||||
void
|
||||
ViewLayer::UpdateOverlay()
|
||||
{
|
||||
if (!IsVisible())
|
||||
return;
|
||||
|
||||
if (_Overlay() != NULL) {
|
||||
_UpdateOverlayView();
|
||||
} else {
|
||||
@ -1262,9 +1265,10 @@ ViewLayer::UpdateVisibleDeep(bool parentVisible)
|
||||
if (overlay == NULL)
|
||||
return;
|
||||
|
||||
if (fVisible && !overlay->IsVisible())
|
||||
if (fVisible && !overlay->IsVisible()) {
|
||||
_UpdateOverlayView();
|
||||
overlay->Show();
|
||||
else if (!fVisible && overlay->IsVisible())
|
||||
} else if (!fVisible && overlay->IsVisible())
|
||||
overlay->Hide();
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,8 @@ Overlay::Overlay(HWInterface& interface)
|
||||
fHWInterface(interface),
|
||||
fOverlayBuffer(NULL),
|
||||
fClientData(NULL),
|
||||
fOverlayToken(NULL)
|
||||
fOverlayToken(NULL),
|
||||
fVisible(false)
|
||||
{
|
||||
fSemaphore = create_sem(1, "overlay lock");
|
||||
fColor.SetColor(21, 16, 21, 16);
|
||||
@ -118,6 +119,7 @@ Overlay::Show()
|
||||
return;
|
||||
}
|
||||
|
||||
fVisible = true;
|
||||
fHWInterface.ShowOverlay(this);
|
||||
}
|
||||
|
||||
@ -128,6 +130,7 @@ Overlay::Hide()
|
||||
if (fOverlayToken == NULL)
|
||||
return;
|
||||
|
||||
fVisible = false;
|
||||
fHWInterface.HideOverlay(this);
|
||||
}
|
||||
|
||||
@ -186,6 +189,7 @@ Overlay::SetView(const BRect& source, const BRect& destination)
|
||||
fWindow.width = (uint16)destination.IntegerWidth() + 1;
|
||||
fWindow.height = (uint16)destination.IntegerHeight() + 1;
|
||||
|
||||
fHWInterface.UpdateOverlay(this);
|
||||
if (fVisible)
|
||||
fHWInterface.UpdateOverlay(this);
|
||||
}
|
||||
|
||||
|
@ -47,8 +47,6 @@ class Overlay {
|
||||
const RGBColor& Color() const
|
||||
{ return fColor; }
|
||||
|
||||
void SetVisible(bool visible)
|
||||
{ fVisible = visible; }
|
||||
bool IsVisible() const
|
||||
{ return fVisible; }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user