https://github.com/libsdl-org/Maelstrom/commit/ef617ae637108eb47d4d73d0e6981817df8013a1
From ef617ae637108eb47d4d73d0e6981817df8013a1 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sat, 5 Nov 2011 00:32:55 -0400
Subject: [PATCH] A more flexible way of determining whether a panel should
save data when it's hidden.
---
screenlib/UIDialog.cpp | 9 ++++++++-
screenlib/UIDialog.h | 1 +
screenlib/UIPanel.cpp | 4 ++--
screenlib/UIPanel.h | 6 ++----
4 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/screenlib/UIDialog.cpp b/screenlib/UIDialog.cpp
index 49028f4e..cc66f8b4 100644
--- a/screenlib/UIDialog.cpp
+++ b/screenlib/UIDialog.cpp
@@ -50,13 +50,20 @@ UIDialog::Show()
void
UIDialog::Hide()
{
- UIPanel::Hide(m_status > 0);
+ UIPanel::Hide();
if (m_handleDone) {
m_handleDone(this, m_status);
}
}
+bool
+UIDialog::ShouldSaveData()
+{
+ // FIXME: Is this the behavior we want?
+ return (m_status > 0);
+}
+
bool
UIDialog::HandleEvent(const SDL_Event &event)
{
diff --git a/screenlib/UIDialog.h b/screenlib/UIDialog.h
index db2fbf60..2d4c2b7f 100644
--- a/screenlib/UIDialog.h
+++ b/screenlib/UIDialog.h
@@ -66,6 +66,7 @@ DECLARE_TYPESAFE_CLASS(UIPanel)
override void Show();
override void Hide();
+ override bool ShouldSaveData();
override bool HandleEvent(const SDL_Event &event);
protected:
diff --git a/screenlib/UIPanel.cpp b/screenlib/UIPanel.cpp
index 0db30d0a..c911b714 100644
--- a/screenlib/UIPanel.cpp
+++ b/screenlib/UIPanel.cpp
@@ -103,7 +103,7 @@ UIPanel::Show()
}
void
-UIPanel::Hide(bool saveData)
+UIPanel::Hide()
{
if (m_leaveSound) {
m_ui->PlaySound(m_leaveSound);
@@ -112,7 +112,7 @@ UIPanel::Hide(bool saveData)
UIBaseElement::Hide();
// Save data to preferences
- if (saveData) {
+ if (ShouldSaveData()) {
SaveData(GetUI()->GetPrefs());
}
diff --git a/screenlib/UIPanel.h b/screenlib/UIPanel.h
index 8509c212..8a5d27bb 100644
--- a/screenlib/UIPanel.h
+++ b/screenlib/UIPanel.h
@@ -69,10 +69,8 @@ DECLARE_TYPESAFE_CLASS(UIBaseElement)
void SetPanelDelegate(UIPanelDelegate *delegate, bool autodelete = true);
override void Show();
- override void Hide() {
- Hide(true);
- }
- void Hide(bool saveData);
+ override void Hide();
+ virtual bool ShouldSaveData() { return true; }
void HideAll();