[colobot] 21/62: Fix moving and resizing editor/debugger window
Didier Raboud
odyx at moszumanska.debian.org
Fri Nov 10 11:53:55 UTC 2017
This is an automated email from the git hooks/post-receive script.
odyx pushed a commit to branch debian/master
in repository colobot.
commit 2d2990ff91eb3e5539f2f05c6abf36875482d661
Author: melex750 <melex750 at users.noreply.github.com>
Date: Mon Jun 26 14:11:47 2017 -0400
Fix moving and resizing editor/debugger window
* Stop hard drive thrashing when moving/resizing
* Also fixed #691.
---
src/common/settings.cpp | 15 +++++++++++++++
src/common/settings.h | 4 ++++
src/ui/studio.cpp | 39 +++++++++++++++++++++++++++++++--------
src/ui/studio.h | 2 ++
4 files changed, 52 insertions(+), 8 deletions(-)
diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index 8ebd55c..cf7dcc7 100644
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -121,6 +121,8 @@ void CSettings::SaveSettings()
GetConfigFile().SetFloatProperty("Edit", "WindowPosY", m_windowPos.y);
GetConfigFile().SetFloatProperty("Edit", "WindowDimX", m_windowDim.x);
GetConfigFile().SetFloatProperty("Edit", "WindowDimY", m_windowDim.y);
+ GetConfigFile().SetBoolProperty ("Edit", "WindowMaximized", m_windowMax);
+
GetConfigFile().SetBoolProperty("Edit", "IOPublic", m_IOPublic);
GetConfigFile().SetFloatProperty("Edit", "IOPosX", m_IOPos.x);
GetConfigFile().SetFloatProperty("Edit", "IOPosY", m_IOPos.y);
@@ -281,6 +283,7 @@ void CSettings::LoadSettings()
GetConfigFile().GetFloatProperty("Edit", "WindowPosY", m_windowPos.y);
GetConfigFile().GetFloatProperty("Edit", "WindowDimX", m_windowDim.x);
GetConfigFile().GetFloatProperty("Edit", "WindowDimY", m_windowDim.y);
+ GetConfigFile().GetBoolProperty ("Edit", "WindowMaximized", m_windowMax);
GetConfigFile().GetBoolProperty ("Edit", "IOPublic", m_IOPublic);
GetConfigFile().GetFloatProperty("Edit", "IOPosX", m_IOPos.x);
@@ -393,6 +396,18 @@ Math::Point CSettings::GetWindowDim()
return m_windowDim;
}
+void CSettings::SetWindowMax(bool max)
+{
+ m_windowMax = max;
+ GetConfigFile().SetBoolProperty("Edit", "WindowMaximized", m_windowMax);
+ GetConfigFile().Save();
+}
+
+bool CSettings::GetWindowMax()
+{
+ return m_windowMax;
+}
+
void CSettings::SetIOPublic(bool mode)
{
m_IOPublic = mode;
diff --git a/src/common/settings.h b/src/common/settings.h
index 4e9b762..9291684 100644
--- a/src/common/settings.h
+++ b/src/common/settings.h
@@ -70,6 +70,9 @@ public:
void SetWindowDim(Math::Point dim);
Math::Point GetWindowDim();
+
+ void SetWindowMax(bool max);
+ bool GetWindowMax();
//@}
//! Managing windows open/save
@@ -98,6 +101,7 @@ protected:
float m_fontSize;
Math::Point m_windowPos;
Math::Point m_windowDim;
+ bool m_windowMax;
bool m_IOPublic;
Math::Point m_IOPos;
diff --git a/src/ui/studio.cpp b/src/ui/studio.cpp
index e3545cb..d98dc25 100644
--- a/src/ui/studio.cpp
+++ b/src/ui/studio.cpp
@@ -249,16 +249,16 @@ bool CStudio::EventProcess(const Event &event)
{
m_editActualPos = m_editFinalPos = pw->GetPos();
m_editActualDim = m_editFinalDim = pw->GetDim();
- m_settings->SetWindowPos(m_editActualPos);
- m_settings->SetWindowDim(m_editActualDim);
+ m_windowPos = m_editActualPos;
+ m_windowDim = m_editActualDim;
AdjustEditScript();
}
if ( event.type == pw->GetEventTypeReduce() )
{
if ( m_bEditMinimized )
{
- m_editFinalPos = m_settings->GetWindowPos();
- m_editFinalDim = m_settings->GetWindowDim();
+ m_editFinalPos = m_windowPos;
+ m_editFinalDim = m_windowDim;
m_bEditMinimized = false;
m_bEditMaximized = false;
}
@@ -283,8 +283,8 @@ bool CStudio::EventProcess(const Event &event)
{
if ( m_bEditMaximized )
{
- m_editFinalPos = m_settings->GetWindowPos();
- m_editFinalDim = m_settings->GetWindowDim();
+ m_editFinalPos = m_windowPos;
+ m_editFinalDim = m_windowDim;
m_bEditMinimized = false;
m_bEditMaximized = false;
}
@@ -579,8 +579,25 @@ void CStudio::StartEditScript(CScript *script, std::string name, Program* progra
pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW6));
if (pw != nullptr) pw->ClearState(STATE_VISIBLE | STATE_ENABLE);
- pos = m_editFinalPos = m_editActualPos = m_settings->GetWindowPos();
- dim = m_editFinalDim = m_editActualDim = m_settings->GetWindowDim();
+ m_windowPos = m_settings->GetWindowPos();
+ m_windowDim = m_settings->GetWindowDim();
+ m_bEditMaximized = m_settings->GetWindowMax();
+
+ if ( m_bEditMaximized )
+ {
+ m_editFinalPos.x = 0.00f;
+ m_editFinalPos.y = 0.00f;
+ m_editFinalDim.x = 1.00f;
+ m_editFinalDim.y = 1.00f;
+ }
+ else
+ {
+ m_editFinalPos = m_windowPos;
+ m_editFinalDim = m_windowDim;
+ }
+ pos = m_editActualPos = m_editFinalPos;
+ dim = m_editActualDim = m_editFinalDim;
+
pw = m_interface->CreateWindows(pos, dim, 8, EVENT_WINDOW3);
if (pw == nullptr)
return;
@@ -597,6 +614,8 @@ void CStudio::StartEditScript(CScript *script, std::string name, Program* progra
pw->SetMinDim(Math::Point(0.49f, 0.50f));
pw->SetMaximized(m_bEditMaximized);
pw->SetMinimized(m_bEditMinimized);
+
+ // stop camera control if maximized
m_main->SetEditFull(m_bEditMaximized);
edit = pw->CreateEdit(pos, dim, 0, EVENT_STUDIO_EDIT);
@@ -910,6 +929,10 @@ bool CStudio::StopEditScript(bool closeWithErrors)
m_runningPause = nullptr;
m_main->SetEditLock(false, true);
m_camera->SetType(m_editCamera);
+
+ m_settings->SetWindowPos(m_windowPos);
+ m_settings->SetWindowDim(m_windowDim);
+ m_settings->SetWindowMax(m_bEditMaximized);
return true;
}
diff --git a/src/ui/studio.h b/src/ui/studio.h
index f336975..7ce580c 100644
--- a/src/ui/studio.h
+++ b/src/ui/studio.h
@@ -108,6 +108,8 @@ protected:
Math::Point m_editActualDim;
Math::Point m_editFinalPos;
Math::Point m_editFinalDim;
+ Math::Point m_windowPos;
+ Math::Point m_windowDim;
float m_time;
float m_fixInfoTextTime;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git
More information about the Pkg-games-commits
mailing list