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 <melex...@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

_______________________________________________
Pkg-games-commits mailing list
Pkg-games-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to