Fix moving and resizing editor/debugger window

* Stop hard drive thrashing when moving/resizing
* Also fixed #691.
1008-fix
melex750 2017-06-26 14:11:47 -04:00
parent 75d9f8573b
commit 2d2990ff91
4 changed files with 52 additions and 8 deletions

View File

@ -121,6 +121,8 @@ void CSettings::SaveSettings()
GetConfigFile().SetFloatProperty("Edit", "WindowPosY", m_windowPos.y); GetConfigFile().SetFloatProperty("Edit", "WindowPosY", m_windowPos.y);
GetConfigFile().SetFloatProperty("Edit", "WindowDimX", m_windowDim.x); GetConfigFile().SetFloatProperty("Edit", "WindowDimX", m_windowDim.x);
GetConfigFile().SetFloatProperty("Edit", "WindowDimY", m_windowDim.y); GetConfigFile().SetFloatProperty("Edit", "WindowDimY", m_windowDim.y);
GetConfigFile().SetBoolProperty ("Edit", "WindowMaximized", m_windowMax);
GetConfigFile().SetBoolProperty("Edit", "IOPublic", m_IOPublic); GetConfigFile().SetBoolProperty("Edit", "IOPublic", m_IOPublic);
GetConfigFile().SetFloatProperty("Edit", "IOPosX", m_IOPos.x); GetConfigFile().SetFloatProperty("Edit", "IOPosX", m_IOPos.x);
GetConfigFile().SetFloatProperty("Edit", "IOPosY", m_IOPos.y); GetConfigFile().SetFloatProperty("Edit", "IOPosY", m_IOPos.y);
@ -281,6 +283,7 @@ void CSettings::LoadSettings()
GetConfigFile().GetFloatProperty("Edit", "WindowPosY", m_windowPos.y); GetConfigFile().GetFloatProperty("Edit", "WindowPosY", m_windowPos.y);
GetConfigFile().GetFloatProperty("Edit", "WindowDimX", m_windowDim.x); GetConfigFile().GetFloatProperty("Edit", "WindowDimX", m_windowDim.x);
GetConfigFile().GetFloatProperty("Edit", "WindowDimY", m_windowDim.y); GetConfigFile().GetFloatProperty("Edit", "WindowDimY", m_windowDim.y);
GetConfigFile().GetBoolProperty ("Edit", "WindowMaximized", m_windowMax);
GetConfigFile().GetBoolProperty ("Edit", "IOPublic", m_IOPublic); GetConfigFile().GetBoolProperty ("Edit", "IOPublic", m_IOPublic);
GetConfigFile().GetFloatProperty("Edit", "IOPosX", m_IOPos.x); GetConfigFile().GetFloatProperty("Edit", "IOPosX", m_IOPos.x);
@ -393,6 +396,18 @@ Math::Point CSettings::GetWindowDim()
return m_windowDim; 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) void CSettings::SetIOPublic(bool mode)
{ {
m_IOPublic = mode; m_IOPublic = mode;

View File

@ -70,6 +70,9 @@ public:
void SetWindowDim(Math::Point dim); void SetWindowDim(Math::Point dim);
Math::Point GetWindowDim(); Math::Point GetWindowDim();
void SetWindowMax(bool max);
bool GetWindowMax();
//@} //@}
//! Managing windows open/save //! Managing windows open/save
@ -98,6 +101,7 @@ protected:
float m_fontSize; float m_fontSize;
Math::Point m_windowPos; Math::Point m_windowPos;
Math::Point m_windowDim; Math::Point m_windowDim;
bool m_windowMax;
bool m_IOPublic; bool m_IOPublic;
Math::Point m_IOPos; Math::Point m_IOPos;

View File

@ -249,16 +249,16 @@ bool CStudio::EventProcess(const Event &event)
{ {
m_editActualPos = m_editFinalPos = pw->GetPos(); m_editActualPos = m_editFinalPos = pw->GetPos();
m_editActualDim = m_editFinalDim = pw->GetDim(); m_editActualDim = m_editFinalDim = pw->GetDim();
m_settings->SetWindowPos(m_editActualPos); m_windowPos = m_editActualPos;
m_settings->SetWindowDim(m_editActualDim); m_windowDim = m_editActualDim;
AdjustEditScript(); AdjustEditScript();
} }
if ( event.type == pw->GetEventTypeReduce() ) if ( event.type == pw->GetEventTypeReduce() )
{ {
if ( m_bEditMinimized ) if ( m_bEditMinimized )
{ {
m_editFinalPos = m_settings->GetWindowPos(); m_editFinalPos = m_windowPos;
m_editFinalDim = m_settings->GetWindowDim(); m_editFinalDim = m_windowDim;
m_bEditMinimized = false; m_bEditMinimized = false;
m_bEditMaximized = false; m_bEditMaximized = false;
} }
@ -283,8 +283,8 @@ bool CStudio::EventProcess(const Event &event)
{ {
if ( m_bEditMaximized ) if ( m_bEditMaximized )
{ {
m_editFinalPos = m_settings->GetWindowPos(); m_editFinalPos = m_windowPos;
m_editFinalDim = m_settings->GetWindowDim(); m_editFinalDim = m_windowDim;
m_bEditMinimized = false; m_bEditMinimized = false;
m_bEditMaximized = 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)); pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW6));
if (pw != nullptr) pw->ClearState(STATE_VISIBLE | STATE_ENABLE); if (pw != nullptr) pw->ClearState(STATE_VISIBLE | STATE_ENABLE);
pos = m_editFinalPos = m_editActualPos = m_settings->GetWindowPos(); m_windowPos = m_settings->GetWindowPos();
dim = m_editFinalDim = m_editActualDim = m_settings->GetWindowDim(); 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); pw = m_interface->CreateWindows(pos, dim, 8, EVENT_WINDOW3);
if (pw == nullptr) if (pw == nullptr)
return; return;
@ -597,6 +614,8 @@ void CStudio::StartEditScript(CScript *script, std::string name, Program* progra
pw->SetMinDim(Math::Point(0.49f, 0.50f)); pw->SetMinDim(Math::Point(0.49f, 0.50f));
pw->SetMaximized(m_bEditMaximized); pw->SetMaximized(m_bEditMaximized);
pw->SetMinimized(m_bEditMinimized); pw->SetMinimized(m_bEditMinimized);
// stop camera control if maximized
m_main->SetEditFull(m_bEditMaximized); m_main->SetEditFull(m_bEditMaximized);
edit = pw->CreateEdit(pos, dim, 0, EVENT_STUDIO_EDIT); edit = pw->CreateEdit(pos, dim, 0, EVENT_STUDIO_EDIT);
@ -910,6 +929,10 @@ bool CStudio::StopEditScript(bool closeWithErrors)
m_runningPause = nullptr; m_runningPause = nullptr;
m_main->SetEditLock(false, true); m_main->SetEditLock(false, true);
m_camera->SetType(m_editCamera); m_camera->SetType(m_editCamera);
m_settings->SetWindowPos(m_windowPos);
m_settings->SetWindowDim(m_windowDim);
m_settings->SetWindowMax(m_bEditMaximized);
return true; return true;
} }

View File

@ -108,6 +108,8 @@ protected:
Math::Point m_editActualDim; Math::Point m_editActualDim;
Math::Point m_editFinalPos; Math::Point m_editFinalPos;
Math::Point m_editFinalDim; Math::Point m_editFinalDim;
Math::Point m_windowPos;
Math::Point m_windowDim;
float m_time; float m_time;
float m_fixInfoTextTime; float m_fixInfoTextTime;