mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Added workaround for the issue that skins disappear when resuming from sleep mode.
http://rainmeter.net/forum/viewtopic.php?f=5&t=11313
This commit is contained in:
parent
0fec35edaa
commit
3254520ced
@ -2921,7 +2921,7 @@ void CMeterWindow::Update(bool nodraw)
|
||||
|
||||
// If our option is to disable when in an RDP session, then check if in an RDP session.
|
||||
// Only redraw if we are not in a remote session
|
||||
if (!m_Rainmeter->GetDisableRDP() || !GetSystemMetrics(SM_REMOTESESSION))
|
||||
if (m_Rainmeter->IsRedrawable())
|
||||
{
|
||||
Redraw();
|
||||
}
|
||||
|
@ -181,6 +181,7 @@ public:
|
||||
void Deactivate();
|
||||
void Refresh(bool init, bool all = false);
|
||||
void Redraw();
|
||||
void RedrawWindow() { UpdateTransparency(m_TransparencyValue, false); }
|
||||
void SetVariable(const std::wstring& variable, const std::wstring& value);
|
||||
void SetOption(const std::wstring& section, const std::wstring& option, const std::wstring& value, bool group);
|
||||
|
||||
@ -240,8 +241,6 @@ public:
|
||||
bool GetMeterToolTipHidden() { return m_ToolTipHidden; }
|
||||
bool GetMeterMouseActionCursor() { return m_MouseActionCursor; }
|
||||
|
||||
void AddMeasureBang(const WCHAR* bang, int index, CMeasure* measure);
|
||||
|
||||
void MakePathAbsolute(std::wstring& path);
|
||||
|
||||
Gdiplus::PrivateFontCollection* GetPrivateFontCollection() { return m_FontCollection; }
|
||||
|
@ -190,6 +190,7 @@ public:
|
||||
void DeleteLogFile();
|
||||
|
||||
bool GetDisableRDP() { return m_DisableRDP; }
|
||||
bool IsRedrawable() { return (!GetDisableRDP() || !GetSystemMetrics(SM_REMOTESESSION)); }
|
||||
|
||||
bool GetDisableDragging() { return m_DisableDragging; }
|
||||
void SetDisableDragging(bool dragging);
|
||||
|
@ -32,12 +32,14 @@ using namespace Gdiplus;
|
||||
|
||||
enum TIMER
|
||||
{
|
||||
TIMER_SHOWDESKTOP = 1
|
||||
TIMER_SHOWDESKTOP = 1,
|
||||
TIMER_RESUME = 2
|
||||
};
|
||||
enum INTERVAL
|
||||
{
|
||||
INTERVAL_SHOWDESKTOP = 250,
|
||||
INTERVAL_RESTOREWINDOWS = 100
|
||||
INTERVAL_RESTOREWINDOWS = 100,
|
||||
INTERVAL_RESUME = 1000
|
||||
};
|
||||
|
||||
MULTIMONITOR_INFO CSystem::c_Monitors = { 0 };
|
||||
@ -133,6 +135,7 @@ void CSystem::Initialize(HINSTANCE instance)
|
||||
void CSystem::Finalize()
|
||||
{
|
||||
KillTimer(c_Window, TIMER_SHOWDESKTOP);
|
||||
KillTimer(c_Window, TIMER_RESUME);
|
||||
|
||||
if (c_WinEventHook)
|
||||
{
|
||||
@ -999,12 +1002,29 @@ LRESULT CALLBACK CSystem::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
|
||||
break;
|
||||
|
||||
case WM_TIMER:
|
||||
switch (wParam)
|
||||
{
|
||||
case TIMER_SHOWDESKTOP:
|
||||
if (wParam == TIMER_SHOWDESKTOP)
|
||||
{
|
||||
CheckDesktopState(GetWorkerW());
|
||||
}
|
||||
break;
|
||||
|
||||
case TIMER_RESUME:
|
||||
KillTimer(hWnd, TIMER_RESUME);
|
||||
if (Rainmeter->IsRedrawable())
|
||||
{
|
||||
std::map<std::wstring, CMeterWindow*>::const_iterator iter = Rainmeter->GetAllMeterWindows().begin();
|
||||
for ( ; iter != Rainmeter->GetAllMeterWindows().end(); ++iter)
|
||||
{
|
||||
(*iter).second->RedrawWindow();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_DISPLAYCHANGE:
|
||||
Log(LOG_NOTICE, L"System: Display settings changed");
|
||||
ClearMultiMonitorInfo();
|
||||
@ -1028,6 +1048,14 @@ LRESULT CALLBACK CSystem::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_POWERBROADCAST:
|
||||
if (wParam == PBT_APMRESUMESUSPEND)
|
||||
{
|
||||
// Deliver PBT_APMRESUMESUSPEND event to all meter windows
|
||||
SetTimer(hWnd, TIMER_RESUME, INTERVAL_RESUME, NULL);
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
default:
|
||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user