From d19032779296481ece089c77a2c180a4f383b788 Mon Sep 17 00:00:00 2001
From: George Hazan <ghazan@miranda.im>
Date: Tue, 10 May 2022 20:33:37 +0300
Subject: =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=D1=8B=20=D0=BF=D0=B5=D1=80?=
 =?UTF-8?q?=D0=B5=D0=B4=20=D1=80=D0=B0=D1=81=D1=82=D0=B0=D1=81=D0=BA=D0=B8?=
 =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=BD=D0=B0=20=D1=87?=
 =?UTF-8?q?=D0=B0=D1=81=D1=82=D0=B8=20=D1=86=D0=B8=D0=BA=D0=BB=D0=B0=20?=
 =?UTF-8?q?=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/mir_app/mir_app.mk         |  7 ++++++-
 src/mir_app/mir_app.project    |  1 +
 src/mir_app/src/menu_utils.cpp | 12 ++++++++++++
 src/mir_app/src/miranda.cpp    | 14 +++-----------
 4 files changed, 22 insertions(+), 12 deletions(-)

(limited to 'src/mir_app')

diff --git a/src/mir_app/mir_app.mk b/src/mir_app/mir_app.mk
index fa8afdc03a..5163e32169 100644
--- a/src/mir_app/mir_app.mk
+++ b/src/mir_app/mir_app.mk
@@ -62,7 +62,7 @@ AS       := as
 ## User defined environment variables
 ##
 CodeLiteDir:=/usr/share/codelite
-Objects0=$(IntermediateDirectory)/src_database.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_db_intf.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_db_events.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_contact.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_CMPluginBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_addcontact.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_stdafx.cxx$(ObjectSuffix) 
+Objects0=$(IntermediateDirectory)/src_miranda.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_database.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_db_intf.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_db_events.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_contact.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_CMPluginBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_addcontact.cpp$(ObjectSuffix) $(IntermediateDirectory)/src_stdafx.cxx$(ObjectSuffix) 
 
 
 
@@ -94,6 +94,11 @@ PreBuild:
 ##
 ## Objects
 ##
+$(IntermediateDirectory)/src_miranda.cpp$(ObjectSuffix): src/miranda.cpp 
+	$(CXX) $(IncludePCH) $(SourceSwitch) "/home/ghazan/miranda-ng/src/mir_app/src/miranda.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/src_miranda.cpp$(ObjectSuffix) $(IncludePath)
+$(IntermediateDirectory)/src_miranda.cpp$(PreprocessSuffix): src/miranda.cpp
+	$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/src_miranda.cpp$(PreprocessSuffix) src/miranda.cpp
+
 $(IntermediateDirectory)/src_database.cpp$(ObjectSuffix): src/database.cpp 
 	$(CXX) $(IncludePCH) $(SourceSwitch) "/home/ghazan/miranda-ng/src/mir_app/src/database.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/src_database.cpp$(ObjectSuffix) $(IncludePath)
 $(IntermediateDirectory)/src_database.cpp$(PreprocessSuffix): src/database.cpp
diff --git a/src/mir_app/mir_app.project b/src/mir_app/mir_app.project
index 0d7dee9b74..121dc016a2 100644
--- a/src/mir_app/mir_app.project
+++ b/src/mir_app/mir_app.project
@@ -3,6 +3,7 @@
   <Description/>
   <Dependencies/>
   <VirtualDirectory Name="src">
+    <File Name="src/miranda.cpp"/>
     <File Name="src/database.cpp"/>
     <File Name="src/db_intf.cpp"/>
     <File Name="src/db_events.cpp"/>
diff --git a/src/mir_app/src/menu_utils.cpp b/src/mir_app/src/menu_utils.cpp
index 395a19fe71..0a619a6874 100644
--- a/src/mir_app/src/menu_utils.cpp
+++ b/src/mir_app/src/menu_utils.cpp
@@ -83,8 +83,20 @@ LPTSTR GetMenuItemText(TMO_IntMenuItem *pimi)
 
 ///////////////////////////////////////////////////////////////////////////////
 
+typedef HANDLE(STDAPICALLTYPE* pfnBeginBufferedPaint)(HDC, RECT*, BP_BUFFERFORMAT, BP_PAINTPARAMS*, HDC*);
+static pfnBeginBufferedPaint beginBufferedPaint;
+
+typedef HRESULT(STDAPICALLTYPE* pfnEndBufferedPaint)(HANDLE, BOOL);
+static pfnEndBufferedPaint endBufferedPaint;
+
 HBITMAP ConvertIconToBitmap(HIMAGELIST hIml, int iconId)
 {
+	if (!beginBufferedPaint) {
+		HMODULE hThemeAPI = GetModuleHandleA("uxtheme.dll");
+		beginBufferedPaint = (pfnBeginBufferedPaint)GetProcAddress(hThemeAPI, "BeginBufferedPaint");
+		endBufferedPaint = (pfnEndBufferedPaint)GetProcAddress(hThemeAPI, "EndBufferedPaint");
+	}
+
 	BITMAPINFO bmi = { 0 };
 	bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
 	bmi.bmiHeader.biPlanes = 1;
diff --git a/src/mir_app/src/miranda.cpp b/src/mir_app/src/miranda.cpp
index 7c6219aa17..ab95ae30a2 100644
--- a/src/mir_app/src/miranda.cpp
+++ b/src/mir_app/src/miranda.cpp
@@ -42,12 +42,6 @@ pfnBufferedPaintInit bufferedPaintInit;
 typedef HRESULT(STDAPICALLTYPE* pfnBufferedPaintUninit)(void);
 pfnBufferedPaintUninit bufferedPaintUninit;
 
-typedef HANDLE(STDAPICALLTYPE* pfnBeginBufferedPaint)(HDC, RECT*, BP_BUFFERFORMAT, BP_PAINTPARAMS*, HDC*);
-pfnBeginBufferedPaint beginBufferedPaint;
-
-typedef HRESULT(STDAPICALLTYPE* pfnEndBufferedPaint)(HANDLE, BOOL);
-pfnEndBufferedPaint endBufferedPaint;
-
 HANDLE hOkToExitEvent, hModulesLoadedEvent;
 HANDLE hShutdownEvent, hPreShutdownEvent;
 uint32_t hMainThreadId;
@@ -307,8 +301,6 @@ int WINAPI mir_main(LPTSTR cmdLine)
 		if (hThemeAPI) {
 			bufferedPaintInit = (pfnBufferedPaintInit)GetProcAddress(hThemeAPI, "BufferedPaintInit");
 			bufferedPaintUninit = (pfnBufferedPaintUninit)GetProcAddress(hThemeAPI, "BufferedPaintUninit");
-			beginBufferedPaint = (pfnBeginBufferedPaint)GetProcAddress(hThemeAPI, "BeginBufferedPaint");
-			endBufferedPaint = (pfnEndBufferedPaint)GetProcAddress(hThemeAPI, "EndBufferedPaint");
 		}
 	}
 	else hThemeAPI = nullptr;
@@ -485,9 +477,9 @@ MIR_APP_DLL(void) Miranda_GetVersionText(char *pDest, size_t cbSize)
 	UINT blockSize;
 	VerQueryValue(pVerInfo, L"\\StringFileInfo\\000004b0\\ProductVersion", (LPVOID*)&productVersion, &blockSize);
 	strncpy_s(pDest, cbSize, _T2A(productVersion), _TRUNCATE);
-#if defined(_WIN64)
-	strcat_s(pDest, cbSize, " x64");
-#endif
+	#if defined(_WIN64)
+		strcat_s(pDest, cbSize, " x64");
+	#endif
 }
 
 MIR_APP_DLL(CDlgBase *) Miranda_GetSystemWindow()
-- 
cgit v1.2.3