summaryrefslogtreecommitdiffstats
path: root/source/Player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Player.cpp')
-rw-r--r--source/Player.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/source/Player.cpp b/source/Player.cpp
index 8970719f1..519837f6a 100644
--- a/source/Player.cpp
+++ b/source/Player.cpp
@@ -435,7 +435,10 @@ Vector3d cPlayer::GetEyePosition()
void cPlayer::OpenWindow(cWindow * a_Window)
{
- CloseWindow();
+ if (a_Window != m_CurrentWindow)
+ {
+ CloseWindow();
+ }
a_Window->OpenedByPlayer(*this);
m_CurrentWindow = a_Window;
a_Window->SendWholeWindow(*GetClientHandle());
@@ -453,8 +456,17 @@ void cPlayer::CloseWindow(void)
return;
}
- m_CurrentWindow->ClosedByPlayer(*this);
- m_CurrentWindow = m_InventoryWindow;
+ if (m_CurrentWindow->ClosedByPlayer(*this))
+ {
+ // Close accepted, go back to inventory window (the default):
+ m_CurrentWindow = m_InventoryWindow;
+ }
+ else
+ {
+ // Re-open the window
+ m_CurrentWindow->OpenedByPlayer(*this);
+ m_CurrentWindow->SendWholeWindow(*GetClientHandle());
+ }
}
@@ -467,8 +479,7 @@ void cPlayer::CloseWindowIfID(char a_WindowID)
{
return;
}
- m_CurrentWindow->ClosedByPlayer(*this);
- m_CurrentWindow = m_InventoryWindow;
+ CloseWindow();
}