diff --git a/Library/Meter.cpp b/Library/Meter.cpp index 98e4d334..f70e1f04 100644 --- a/Library/Meter.cpp +++ b/Library/Meter.cpp @@ -251,6 +251,7 @@ void CMeter::ReadOptions(CConfigParser& parser, const WCHAR* section) parser.SetStyleTemplate(style); } + int oldX = m_X; std::wstring& x = (std::wstring&)parser.ReadString(section, L"X", L"0"); if (!x.empty()) { @@ -278,6 +279,7 @@ void CMeter::ReadOptions(CConfigParser& parser, const WCHAR* section) m_RelativeX = POSITION_ABSOLUTE; } + int oldY = m_Y; std::wstring& y = (std::wstring&)parser.ReadString(section, L"Y", L"0"); if (!y.empty()) { @@ -311,8 +313,14 @@ void CMeter::ReadOptions(CConfigParser& parser, const WCHAR* section) m_H = parser.ReadInt(section, L"H", 1); m_HDefined = parser.GetLastValueDefined(); + bool oldHidden = m_Hidden; m_Hidden = 0!=parser.ReadInt(section, L"Hidden", 0); + if (oldX != m_X || oldY != m_Y || oldHidden != m_Hidden) + { + m_MeterWindow->SetResizeWindowMode(RESIZEMODE_CHECK); // Need to recalculate the window size + } + m_SolidBevel = (BEVELTYPE)parser.ReadInt(section, L"BevelType", BEVELTYPE_NONE); m_SolidColor = parser.ReadColor(section, L"SolidColor", Color::MakeARGB(0, 0, 0, 0)); diff --git a/Library/MeterWindow.h b/Library/MeterWindow.h index 9787a237..bd4c9c2e 100644 --- a/Library/MeterWindow.h +++ b/Library/MeterWindow.h @@ -139,6 +139,13 @@ enum BANGCOMMAND BANG_SETOPTIONGROUP }; +enum RESIZEMODE +{ + RESIZEMODE_NONE = 0, + RESIZEMODE_CHECK, + RESIZEMODE_RESET +}; + class CRainmeter; class CMeasure; class CMeter; @@ -182,6 +189,8 @@ public: bool IsBlur() { return m_Blur; } void SetBlur(bool b) { m_Blur = b; } + void SetResizeWindowMode(RESIZEMODE mode) { if (m_ResizeWindow != RESIZEMODE_RESET || mode != RESIZEMODE_CHECK) m_ResizeWindow = mode; } + Gdiplus::Bitmap* GetDoubleBuffer() { return m_DoubleBuffer; } HWND GetWindow() { return m_Window; } @@ -288,15 +297,6 @@ private: OPTION_ALL = 0xFFFFFFFF }; - enum RESIZEMODE - { - RESIZEMODE_NONE = 0, - RESIZEMODE_CHECK, - RESIZEMODE_RESET - }; - - void SetResizeWindowMode(RESIZEMODE mode) { if (m_ResizeWindow != RESIZEMODE_RESET || mode != RESIZEMODE_CHECK) m_ResizeWindow = mode; } - bool HitTest(int x, int y); void SnapToWindow(CMeterWindow* window, LPWINDOWPOS wp);