From 966c5dfc0d58a230a4903d06818841c96f652240 Mon Sep 17 00:00:00 2001 From: codereader Date: Sat, 22 Oct 2022 10:06:59 +0200 Subject: [PATCH] #6131: TransformPanel activation/deactivation handling --- radiant/ui/transform/TransformPanel.cpp | 32 ++++++++++++++++++------- radiant/ui/transform/TransformPanel.h | 7 ++++++ 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/radiant/ui/transform/TransformPanel.cpp b/radiant/ui/transform/TransformPanel.cpp index c1df653c7b..8eebd66f1f 100644 --- a/radiant/ui/transform/TransformPanel.cpp +++ b/radiant/ui/transform/TransformPanel.cpp @@ -48,15 +48,36 @@ TransformPanel::TransformPanel(wxWindow* parent) : { // Create all the widgets and pack them into the window populateWindow(); +} - _selectionChanged.disconnect(); +TransformPanel::~TransformPanel() +{ + disconnectListeners(); +} + +void TransformPanel::onPanelActivated() +{ + connectListeners(); + + // Update the widget sensitivity + update(); +} + +void TransformPanel::onPanelDeactivated() +{ + disconnectListeners(); +} +void TransformPanel::connectListeners() +{ // Register self to the SelSystem to get notified upon selection changes. _selectionChanged = GlobalSelectionSystem().signal_selectionChanged().connect( [this](const ISelectable&) { update(); }); +} - // Update the widget sensitivity - update(); +void TransformPanel::disconnectListeners() +{ + _selectionChanged.disconnect(); } void TransformPanel::populateWindow() @@ -173,11 +194,6 @@ TransformPanel::EntryRow TransformPanel::createEntryRow( return entryRow; } -TransformPanel::~TransformPanel() -{ - _selectionChanged.disconnect(); -} - void TransformPanel::update() { // Check if there is anything selected diff --git a/radiant/ui/transform/TransformPanel.h b/radiant/ui/transform/TransformPanel.h index 305f7a9519..d49f8faaf0 100644 --- a/radiant/ui/transform/TransformPanel.h +++ b/radiant/ui/transform/TransformPanel.h @@ -50,7 +50,14 @@ class TransformPanel : TransformPanel(wxWindow* parent); ~TransformPanel() override; +protected: + void onPanelActivated() override; + void onPanelDeactivated() override; + private: + void connectListeners(); + void disconnectListeners(); + /** greebo: Updates the sensitivity of the widgets according to * the current selection. */