mirror of
				https://github.com/chibicitiberiu/rainmeter-studio.git
				synced 2024-02-24 04:33:31 +00:00 
			
		
		
		
	Make Rainmeter a singleton class
This change is part of making the Libray project more testable. The old g_Rainmeter global pointer has been replaced with a GetRainmeter() function to guarantee that the object exists in some state.
This commit is contained in:
		| @@ -70,8 +70,6 @@ FPDWMGETCOLORIZATIONCOLOR MeterWindow::c_DwmGetColorizationColor = nullptr; | ||||
| FPDWMSETWINDOWATTRIBUTE MeterWindow::c_DwmSetWindowAttribute = nullptr; | ||||
| FPDWMISCOMPOSITIONENABLED MeterWindow::c_DwmIsCompositionEnabled = nullptr; | ||||
|  | ||||
| extern Rainmeter* g_Rainmeter; | ||||
|  | ||||
| /* | ||||
| ** Constructor | ||||
| ** | ||||
| @@ -144,7 +142,7 @@ MeterWindow::MeterWindow(const std::wstring& folderPath, const std::wstring& fil | ||||
| 	m_FontCollection(), | ||||
| 	m_ToolTipHidden(false) | ||||
| { | ||||
| 	m_Canvas = (Platform::IsAtLeastWinVista() && g_Rainmeter->CanUseD2D()) ? | ||||
| 	m_Canvas = (Platform::IsAtLeastWinVista() && GetRainmeter().CanUseD2D()) ? | ||||
| 		(Gfx::Canvas*)new Gfx::CanvasD2D() : (Gfx::Canvas*)new Gfx::CanvasGDIP(); | ||||
|  | ||||
| 	if (!c_DwmInstance && Platform::IsAtLeastWinVista()) | ||||
| @@ -164,7 +162,7 @@ MeterWindow::MeterWindow(const std::wstring& folderPath, const std::wstring& fil | ||||
| 		WNDCLASSEX wc = {sizeof(WNDCLASSEX)}; | ||||
| 		wc.style = CS_NOCLOSE | CS_DBLCLKS; | ||||
| 		wc.lpfnWndProc = InitialWndProc; | ||||
| 		wc.hInstance = g_Rainmeter->GetInstance(); | ||||
| 		wc.hInstance = GetRainmeter().GetModuleInstance(); | ||||
| 		wc.hCursor = nullptr;  // The cursor should be controlled by using SetCursor() when needed. | ||||
| 		wc.lpszClassName = METERWINDOW_CLASS_NAME; | ||||
| 		RegisterClassEx(&wc); | ||||
| @@ -181,7 +179,7 @@ MeterWindow::~MeterWindow() | ||||
| { | ||||
| 	if (!m_OnCloseAction.empty()) | ||||
| 	{ | ||||
| 		g_Rainmeter->ExecuteCommand(m_OnCloseAction.c_str(), this); | ||||
| 		GetRainmeter().ExecuteCommand(m_OnCloseAction.c_str(), this); | ||||
| 	} | ||||
|  | ||||
| 	Dispose(false); | ||||
| @@ -190,7 +188,7 @@ MeterWindow::~MeterWindow() | ||||
|  | ||||
| 	if (c_InstanceCount == 0) | ||||
| 	{ | ||||
| 		UnregisterClass(METERWINDOW_CLASS_NAME, g_Rainmeter->GetInstance()); | ||||
| 		UnregisterClass(METERWINDOW_CLASS_NAME, GetRainmeter().GetModuleInstance()); | ||||
|  | ||||
| 		if (c_DwmInstance) | ||||
| 		{ | ||||
| @@ -289,7 +287,7 @@ void MeterWindow::Initialize() | ||||
| 		CW_USEDEFAULT, | ||||
| 		nullptr, | ||||
| 		nullptr, | ||||
| 		g_Rainmeter->GetInstance(), | ||||
| 		GetRainmeter().GetModuleInstance(), | ||||
| 		this); | ||||
|  | ||||
| 	setlocale(LC_NUMERIC, "C"); | ||||
| @@ -387,8 +385,8 @@ void MeterWindow::Deactivate() | ||||
| { | ||||
| 	m_State = STATE_CLOSING; | ||||
|  | ||||
| 	g_Rainmeter->RemoveMeterWindow(this); | ||||
| 	g_Rainmeter->AddUnmanagedMeterWindow(this); | ||||
| 	GetRainmeter().RemoveMeterWindow(this); | ||||
| 	GetRainmeter().AddUnmanagedMeterWindow(this); | ||||
|  | ||||
| 	HideFade(); | ||||
| 	SetTimer(m_Window, TIMER_DEACTIVATE, m_FadeDuration + 50, nullptr); | ||||
| @@ -403,7 +401,7 @@ void MeterWindow::Refresh(bool init, bool all) | ||||
| 	if (m_State == STATE_CLOSING) return; | ||||
| 	m_State = STATE_REFRESHING; | ||||
|  | ||||
| 	g_Rainmeter->SetCurrentParser(&m_Parser); | ||||
| 	GetRainmeter().SetCurrentParser(&m_Parser); | ||||
|  | ||||
| 	std::wstring notice = L"Refreshing skin \"" + m_FolderPath; | ||||
| 	notice += L'\\'; | ||||
| @@ -422,7 +420,7 @@ void MeterWindow::Refresh(bool init, bool all) | ||||
|  | ||||
| 	if (!ReadSkin()) | ||||
| 	{ | ||||
| 		g_Rainmeter->DeactivateSkin(this, -1); | ||||
| 		GetRainmeter().DeactivateSkin(this, -1); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| @@ -470,13 +468,13 @@ void MeterWindow::Refresh(bool init, bool all) | ||||
|  | ||||
| 	SetTimer(m_Window, TIMER_MOUSE, INTERVAL_MOUSE, nullptr); | ||||
|  | ||||
| 	g_Rainmeter->SetCurrentParser(nullptr); | ||||
| 	GetRainmeter().SetCurrentParser(nullptr); | ||||
|  | ||||
| 	m_State = STATE_RUNNING; | ||||
|  | ||||
| 	if (!m_OnRefreshAction.empty()) | ||||
| 	{ | ||||
| 		g_Rainmeter->ExecuteCommand(m_OnRefreshAction.c_str(), this); | ||||
| 		GetRainmeter().ExecuteCommand(m_OnRefreshAction.c_str(), this); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -634,7 +632,7 @@ void MeterWindow::ChangeZPos(ZPOSITION zPos, bool all) | ||||
| 		break; | ||||
|  | ||||
| 	case ZPOSITION_NORMAL: | ||||
| 		if (all || !g_Rainmeter->IsNormalStayDesktop()) break; | ||||
| 		if (all || !GetRainmeter().IsNormalStayDesktop()) break; | ||||
| 	case ZPOSITION_ONDESKTOP: | ||||
| 		if (System::GetShowDesktop()) | ||||
| 		{ | ||||
| @@ -685,7 +683,7 @@ void MeterWindow::ChangeZPos(ZPOSITION zPos, bool all) | ||||
| */ | ||||
| void MeterWindow::ChangeSingleZPos(ZPOSITION zPos, bool all) | ||||
| { | ||||
| 	if (zPos == ZPOSITION_NORMAL && g_Rainmeter->IsNormalStayDesktop() && (!all || System::GetShowDesktop())) | ||||
| 	if (zPos == ZPOSITION_NORMAL && GetRainmeter().IsNormalStayDesktop() && (!all || System::GetShowDesktop())) | ||||
| 	{ | ||||
| 		m_WindowZPosition = zPos; | ||||
|  | ||||
| @@ -1794,7 +1792,7 @@ void MeterWindow::ReadOptions() | ||||
|  | ||||
| 	const WCHAR* section = m_FolderPath.c_str(); | ||||
| 	ConfigParser parser; | ||||
| 	parser.Initialize(g_Rainmeter->GetIniFile(), nullptr, section); | ||||
| 	parser.Initialize(GetRainmeter().GetIniFile(), nullptr, section); | ||||
|  | ||||
| 	INT writeFlags = 0; | ||||
| 	auto addWriteFlag = [&](INT flag) | ||||
| @@ -1878,7 +1876,7 @@ void MeterWindow::ReadOptions() | ||||
| */ | ||||
| void MeterWindow::WriteOptions(INT setting) | ||||
| { | ||||
| 	const WCHAR* iniFile = g_Rainmeter->GetIniFile().c_str(); | ||||
| 	const WCHAR* iniFile = GetRainmeter().GetIniFile().c_str(); | ||||
|  | ||||
| 	if (*iniFile) | ||||
| 	{ | ||||
| @@ -1974,7 +1972,7 @@ bool MeterWindow::ReadSkin() | ||||
| 	if (_waccess(iniFile.c_str(), 0) == -1) | ||||
| 	{ | ||||
| 		std::wstring message = GetFormattedString(ID_STR_UNABLETOREFRESHSKIN, m_FolderPath.c_str(), m_FileName.c_str()); | ||||
| 		g_Rainmeter->ShowMessage(m_Window, message.c_str(), MB_OK | MB_ICONEXCLAMATION); | ||||
| 		GetRainmeter().ShowMessage(m_Window, message.c_str(), MB_OK | MB_ICONEXCLAMATION); | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| @@ -2000,7 +1998,7 @@ bool MeterWindow::ReadSkin() | ||||
| 		} | ||||
|  | ||||
| 		std::wstring text = GetFormattedString(ID_STR_NEWVERSIONREQUIRED, m_FolderPath.c_str(), m_FileName.c_str(), buffer); | ||||
| 		g_Rainmeter->ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); | ||||
| 		GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| @@ -2131,7 +2129,7 @@ bool MeterWindow::ReadSkin() | ||||
| 		do | ||||
| 		{ | ||||
| 			// Try program folder first | ||||
| 			std::wstring szFontFile = g_Rainmeter->GetPath() + L"Fonts\\"; | ||||
| 			std::wstring szFontFile = GetRainmeter().GetPath() + L"Fonts\\"; | ||||
| 			szFontFile += localFont; | ||||
| 			if (!m_FontCollection->AddFile(szFontFile.c_str())) | ||||
| 			{ | ||||
| @@ -2209,7 +2207,7 @@ bool MeterWindow::ReadSkin() | ||||
| 	if (m_Meters.empty()) | ||||
| 	{ | ||||
| 		std::wstring text = GetFormattedString(ID_STR_NOMETERSINSKIN, m_FolderPath.c_str(), m_FileName.c_str()); | ||||
| 		g_Rainmeter->ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); | ||||
| 		GetRainmeter().ShowMessage(m_Window, text.c_str(), MB_OK | MB_ICONEXCLAMATION); | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| @@ -2697,7 +2695,7 @@ void MeterWindow::Update(bool refresh) | ||||
|  | ||||
| 		// 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 (g_Rainmeter->IsRedrawable()) | ||||
| 		if (GetRainmeter().IsRedrawable()) | ||||
| 		{ | ||||
| 			Redraw(); | ||||
| 		} | ||||
| @@ -2708,7 +2706,7 @@ void MeterWindow::Update(bool refresh) | ||||
|  | ||||
| 	if (!m_OnUpdateAction.empty()) | ||||
| 	{ | ||||
| 		g_Rainmeter->ExecuteCommand(m_OnUpdateAction.c_str(), this); | ||||
| 		GetRainmeter().ExecuteCommand(m_OnUpdateAction.c_str(), this); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -2769,7 +2767,7 @@ LRESULT MeterWindow::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
| 		break; | ||||
|  | ||||
| 	case TIMER_MOUSE: | ||||
| 		if (!g_Rainmeter->IsMenuActive() && !m_Dragging) | ||||
| 		if (!GetRainmeter().IsMenuActive() && !m_Dragging) | ||||
| 		{ | ||||
| 			ShowWindowIfAppropriate(); | ||||
|  | ||||
| @@ -2874,7 +2872,7 @@ LRESULT MeterWindow::OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
| 		if (m_FadeStartTime == 0) | ||||
| 		{ | ||||
| 			KillTimer(m_Window, TIMER_DEACTIVATE); | ||||
| 			g_Rainmeter->RemoveUnmanagedMeterWindow(this); | ||||
| 			GetRainmeter().RemoveUnmanagedMeterWindow(this); | ||||
| 			delete this; | ||||
| 		} | ||||
| 		break; | ||||
| @@ -3287,7 +3285,7 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
| 	switch (wParam) | ||||
| 	{ | ||||
| 	case IDM_SKIN_EDITSKIN: | ||||
| 		g_Rainmeter->EditSkinFile(m_FolderPath, m_FileName); | ||||
| 		GetRainmeter().EditSkinFile(m_FolderPath, m_FileName); | ||||
| 		break; | ||||
|  | ||||
| 	case IDM_SKIN_REFRESH: | ||||
| @@ -3295,7 +3293,7 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
| 		break; | ||||
|  | ||||
| 	case IDM_SKIN_OPENSKINSFOLDER: | ||||
| 		g_Rainmeter->OpenSkinFolder(m_FolderPath); | ||||
| 		GetRainmeter().OpenSkinFolder(m_FolderPath); | ||||
| 		break; | ||||
|  | ||||
| 	case IDM_SKIN_MANAGESKIN: | ||||
| @@ -3357,7 +3355,7 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
| 	case IDM_CLOSESKIN: | ||||
| 		if (m_State != STATE_CLOSING) | ||||
| 		{ | ||||
| 			g_Rainmeter->DeactivateSkin(this, -1); | ||||
| 			GetRainmeter().DeactivateSkin(this, -1); | ||||
| 		} | ||||
| 		break; | ||||
|  | ||||
| @@ -3447,13 +3445,13 @@ LRESULT MeterWindow::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
|  | ||||
| 			if (!action.empty()) | ||||
| 			{ | ||||
| 				g_Rainmeter->ExecuteCommand(action.c_str(), this); | ||||
| 				GetRainmeter().ExecuteCommand(action.c_str(), this); | ||||
| 			} | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			// Forward to tray window, which handles all the other commands | ||||
| 			HWND tray = g_Rainmeter->GetTrayWindow()->GetWindow(); | ||||
| 			HWND tray = GetRainmeter().GetTrayWindow()->GetWindow(); | ||||
|  | ||||
| 			if (wParam == IDM_QUIT) | ||||
| 			{ | ||||
| @@ -3660,7 +3658,7 @@ LRESULT MeterWindow::OnExitSizeMove(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
| */ | ||||
| LRESULT MeterWindow::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
| { | ||||
| 	if (m_WindowDraggable && !g_Rainmeter->GetDisableDragging()) | ||||
| 	if (m_WindowDraggable && !GetRainmeter().GetDisableDragging()) | ||||
| 	{ | ||||
| 		POINT pos; | ||||
| 		pos.x = GET_X_LPARAM(lParam); | ||||
| @@ -3700,7 +3698,7 @@ LRESULT MeterWindow::OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam | ||||
|  | ||||
| 	if (m_State != STATE_REFRESHING) | ||||
| 	{ | ||||
| 		if (m_WindowZPosition == ZPOSITION_NORMAL && g_Rainmeter->IsNormalStayDesktop() && System::GetShowDesktop()) | ||||
| 		if (m_WindowZPosition == ZPOSITION_NORMAL && GetRainmeter().IsNormalStayDesktop() && System::GetShowDesktop()) | ||||
| 		{ | ||||
| 			if (!(wp->flags & (SWP_NOOWNERZORDER | SWP_NOACTIVATE))) | ||||
| 			{ | ||||
| @@ -3745,7 +3743,7 @@ LRESULT MeterWindow::OnWindowPosChanging(UINT uMsg, WPARAM wParam, LPARAM lParam | ||||
| 				} | ||||
|  | ||||
| 				// Snap to other windows | ||||
| 				for (auto iter = g_Rainmeter->GetAllMeterWindows().cbegin(); iter != g_Rainmeter->GetAllMeterWindows().cend(); ++iter) | ||||
| 				for (auto iter = GetRainmeter().GetAllMeterWindows().cbegin(); iter != GetRainmeter().GetAllMeterWindows().cend(); ++iter) | ||||
| 				{ | ||||
| 					if ((*iter).second != this) | ||||
| 					{ | ||||
| @@ -4228,14 +4226,14 @@ LRESULT MeterWindow::OnSetWindowFocus(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
| 	case WM_SETFOCUS: | ||||
| 		if (!m_OnFocusAction.empty()) | ||||
| 		{ | ||||
| 			g_Rainmeter->ExecuteCommand(m_OnFocusAction.c_str(), this); | ||||
| 			GetRainmeter().ExecuteCommand(m_OnFocusAction.c_str(), this); | ||||
| 		} | ||||
| 		break; | ||||
|  | ||||
| 	case WM_KILLFOCUS: | ||||
| 		if (!m_OnUnfocusAction.empty()) | ||||
| 		{ | ||||
| 			g_Rainmeter->ExecuteCommand(m_OnUnfocusAction.c_str(), this); | ||||
| 			GetRainmeter().ExecuteCommand(m_OnUnfocusAction.c_str(), this); | ||||
| 		} | ||||
| 		break; | ||||
| 	} | ||||
| @@ -4278,7 +4276,7 @@ LRESULT MeterWindow::OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	g_Rainmeter->ShowContextMenu(pos, this); | ||||
| 	GetRainmeter().ShowContextMenu(pos, this); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
| @@ -4319,7 +4317,7 @@ bool MeterWindow::DoAction(int x, int y, MOUSEACTION action, bool test) | ||||
| 	{ | ||||
| 		if (!test) | ||||
| 		{ | ||||
| 			g_Rainmeter->ExecuteCommand(command.c_str(), this); | ||||
| 			GetRainmeter().ExecuteCommand(command.c_str(), this); | ||||
| 		} | ||||
|  | ||||
| 		return true; | ||||
| @@ -4355,7 +4353,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) | ||||
| 					if (!m_Mouse.GetOverAction().empty()) | ||||
| 					{ | ||||
| 						UINT currCounter = m_MouseMoveCounter; | ||||
| 						g_Rainmeter->ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); | ||||
| 						GetRainmeter().ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); | ||||
| 						return (currCounter == m_MouseMoveCounter); | ||||
| 					} | ||||
| 				} | ||||
| @@ -4392,7 +4390,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) | ||||
| 						if (!mouse.GetOverAction().empty()) | ||||
| 						{ | ||||
| 							UINT currCounter = m_MouseMoveCounter; | ||||
| 							g_Rainmeter->ExecuteCommand(mouse.GetOverAction().c_str(), this); | ||||
| 							GetRainmeter().ExecuteCommand(mouse.GetOverAction().c_str(), this); | ||||
| 							return (currCounter == m_MouseMoveCounter); | ||||
| 						} | ||||
| 					} | ||||
| @@ -4418,7 +4416,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) | ||||
| 					const Mouse& mouse = (*j)->GetMouse(); | ||||
| 					if (!mouse.GetLeaveAction().empty()) | ||||
| 					{ | ||||
| 						g_Rainmeter->ExecuteCommand(mouse.GetLeaveAction().c_str(), this); | ||||
| 						GetRainmeter().ExecuteCommand(mouse.GetLeaveAction().c_str(), this); | ||||
| 						return true; | ||||
| 					} | ||||
| 				} | ||||
| @@ -4441,7 +4439,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) | ||||
| 				if (!m_Mouse.GetOverAction().empty()) | ||||
| 				{ | ||||
| 					UINT currCounter = m_MouseMoveCounter; | ||||
| 					g_Rainmeter->ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); | ||||
| 					GetRainmeter().ExecuteCommand(m_Mouse.GetOverAction().c_str(), this); | ||||
| 					return (currCounter == m_MouseMoveCounter); | ||||
| 				} | ||||
| 			} | ||||
| @@ -4461,7 +4459,7 @@ bool MeterWindow::DoMoveAction(int x, int y, MOUSEACTION action) | ||||
|  | ||||
| 				if (!m_Mouse.GetLeaveAction().empty()) | ||||
| 				{ | ||||
| 					g_Rainmeter->ExecuteCommand(m_Mouse.GetLeaveAction().c_str(), this); | ||||
| 					GetRainmeter().ExecuteCommand(m_Mouse.GetLeaveAction().c_str(), this); | ||||
| 					return true; | ||||
| 				} | ||||
| 			} | ||||
| @@ -4536,7 +4534,7 @@ LRESULT MeterWindow::OnWake(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
| { | ||||
| 	if (wParam == PBT_APMRESUMEAUTOMATIC && !m_OnWakeAction.empty()) | ||||
| 	{ | ||||
| 		g_Rainmeter->ExecuteCommand(m_OnWakeAction.c_str(), this); | ||||
| 		GetRainmeter().ExecuteCommand(m_OnWakeAction.c_str(), this); | ||||
| 	} | ||||
|  | ||||
| 	return 0; | ||||
| @@ -4661,10 +4659,10 @@ LRESULT MeterWindow::OnCopyData(UINT uMsg, WPARAM wParam, LPARAM lParam) | ||||
|  | ||||
| 	if (pCopyDataStruct && (pCopyDataStruct->dwData == 1) && (pCopyDataStruct->cbData > 0)) | ||||
| 	{ | ||||
| 		if (g_Rainmeter->HasMeterWindow(this)) | ||||
| 		if (GetRainmeter().HasMeterWindow(this)) | ||||
| 		{ | ||||
| 			const WCHAR* command = (const WCHAR*)pCopyDataStruct->lpData; | ||||
| 			g_Rainmeter->ExecuteCommand(command, this); | ||||
| 			GetRainmeter().ExecuteCommand(command, this); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| @@ -4719,8 +4717,8 @@ void MeterWindow::MakePathAbsolute(std::wstring& path) | ||||
| 	else | ||||
| 	{ | ||||
| 		std::wstring absolute; | ||||
| 		absolute.reserve(g_Rainmeter->GetSkinPath().size() + m_FolderPath.size() + 1 + path.size()); | ||||
| 		absolute = g_Rainmeter->GetSkinPath(); | ||||
| 		absolute.reserve(GetRainmeter().GetSkinPath().size() + m_FolderPath.size() + 1 + path.size()); | ||||
| 		absolute = GetRainmeter().GetSkinPath(); | ||||
| 		absolute += m_FolderPath; | ||||
| 		absolute += L'\\'; | ||||
| 		absolute += path; | ||||
| @@ -4730,7 +4728,7 @@ void MeterWindow::MakePathAbsolute(std::wstring& path) | ||||
|  | ||||
| std::wstring MeterWindow::GetFilePath() | ||||
| { | ||||
| 	std::wstring file = g_Rainmeter->GetSkinPath() + m_FolderPath; | ||||
| 	std::wstring file = GetRainmeter().GetSkinPath() + m_FolderPath; | ||||
| 	file += L'\\'; | ||||
| 	file += m_FileName; | ||||
| 	return file; | ||||
| @@ -4738,7 +4736,7 @@ std::wstring MeterWindow::GetFilePath() | ||||
|  | ||||
| std::wstring MeterWindow::GetRootPath() | ||||
| { | ||||
| 	std::wstring path = g_Rainmeter->GetSkinPath(); | ||||
| 	std::wstring path = GetRainmeter().GetSkinPath(); | ||||
|  | ||||
| 	std::wstring::size_type loc; | ||||
| 	if ((loc = m_FolderPath.find_first_of(L'\\')) != std::wstring::npos) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Birunthan Mohanathas
					Birunthan Mohanathas