diff options
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/window/layout.cxx | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/vcl/source/window/layout.cxx b/vcl/source/window/layout.cxx index 5f5ad67ce6f0..9d4b1672cd83 100644 --- a/vcl/source/window/layout.cxx +++ b/vcl/source/window/layout.cxx @@ -1340,10 +1340,21 @@ void VclFrame::setAllocation(const Size &rAllocation) setLayoutAllocation(*pChild, aChildPos, aAllocation); } +IMPL_LINK(VclFrame, WindowEventListener, VclSimpleEvent*, pEvent) +{ + if (pEvent && pEvent->GetId() == VCLEVENT_OBJECT_DYING) + designate_label(NULL); + return 0; +} + void VclFrame::designate_label(vcl::Window *pWindow) { - assert(pWindow->GetParent() == this); + assert(!pWindow || pWindow->GetParent() == this); + if (m_pLabel) + m_pLabel->RemoveEventListener(LINK(this, VclFrame, WindowEventListener)); m_pLabel = pWindow; + if (m_pLabel) + m_pLabel->AddEventListener(LINK(this, VclFrame, WindowEventListener)); } const vcl::Window *VclFrame::get_label_widget() const |