diff options
| -rw-r--r-- | include/m_core.h | 1 | ||||
| -rw-r--r-- | libs/win32/mir_core.lib | bin | 501182 -> 501354 bytes | |||
| -rw-r--r-- | libs/win64/mir_core.lib | bin | 506528 -> 506684 bytes | |||
| -rw-r--r-- | src/mir_app/src/menu_utils.cpp | 18 | ||||
| -rw-r--r-- | src/mir_core/src/Windows/miranda.cpp | 2 | ||||
| -rw-r--r-- | src/mir_core/src/Windows/threads.cpp | 2 | ||||
| -rw-r--r-- | src/mir_core/src/Windows/winver.cpp | 17 | ||||
| -rw-r--r-- | src/mir_core/src/mir_core.def | 1 | ||||
| -rw-r--r-- | src/mir_core/src/mir_core64.def | 1 | ||||
| -rw-r--r-- | src/mir_core/src/miranda.h | 2 |
10 files changed, 25 insertions, 19 deletions
diff --git a/include/m_core.h b/include/m_core.h index a9f7f4d252..2366a2fa85 100644 --- a/include/m_core.h +++ b/include/m_core.h @@ -544,6 +544,7 @@ MIR_CORE_DLL(BOOL) IsWinVer7Plus(); MIR_CORE_DLL(BOOL) IsWinVer8Plus();
MIR_CORE_DLL(BOOL) IsWinVer81Plus();
MIR_CORE_DLL(BOOL) IsWinVer10Plus();
+MIR_CORE_DLL(BOOL) IsWine();
MIR_CORE_DLL(BOOL) IsFullScreen();
MIR_CORE_DLL(BOOL) IsWorkstationLocked();
diff --git a/libs/win32/mir_core.lib b/libs/win32/mir_core.lib Binary files differindex 9cdcd20f15..3d1a08a7d6 100644 --- a/libs/win32/mir_core.lib +++ b/libs/win32/mir_core.lib diff --git a/libs/win64/mir_core.lib b/libs/win64/mir_core.lib Binary files differindex 87b0a95ebe..dc52baf2b0 100644 --- a/libs/win64/mir_core.lib +++ b/libs/win64/mir_core.lib diff --git a/src/mir_app/src/menu_utils.cpp b/src/mir_app/src/menu_utils.cpp index 33baa03ddb..2dad01211a 100644 --- a/src/mir_app/src/menu_utils.cpp +++ b/src/mir_app/src/menu_utils.cpp @@ -97,7 +97,7 @@ HBITMAP ConvertIconToBitmap(HIMAGELIST hIml, int iconId) endBufferedPaint = (pfnEndBufferedPaint)GetProcAddress(hThemeAPI, "EndBufferedPaint");
}
- BITMAPINFO bmi = { 0 };
+ BITMAPINFO bmi = {};
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biCompression = BI_RGB;
@@ -110,7 +110,7 @@ HBITMAP ConvertIconToBitmap(HIMAGELIST hIml, int iconId) HBITMAP hbmpOld = (HBITMAP)SelectObject(hdc, hbmp);
BLENDFUNCTION bfAlpha = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };
- BP_PAINTPARAMS paintParams = { 0 };
+ BP_PAINTPARAMS paintParams = {};
paintParams.cbSize = sizeof(paintParams);
paintParams.dwFlags = BPPF_ERASE;
paintParams.pBlendFunction = &bfAlpha;
@@ -901,7 +901,7 @@ MIR_APP_DLL(HGENMENU) Menu_AddItem(int hMenuObject, TMO_MenuItem *pmi, void *pUs static int WhereToPlace(HMENU hMenu, TMO_MenuItem *mi)
{
- MENUITEMINFO mii = { 0 };
+ MENUITEMINFO mii = {};
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_SUBMENU | MIIM_DATA;
for (int i = GetMenuItemCount(hMenu) - 1; i >= 0; i--) {
@@ -921,7 +921,7 @@ static int WhereToPlace(HMENU hMenu, TMO_MenuItem *mi) static uint32_t GetMenuItemType(HMENU hMenu, int uItem)
{
- MENUITEMINFO mii = { 0 };
+ MENUITEMINFO mii = {};
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_TYPE;
GetMenuItemInfo(hMenu, uItem, TRUE, &mii);
@@ -930,7 +930,7 @@ static uint32_t GetMenuItemType(HMENU hMenu, int uItem) static UINT GetMenuItemTypeData(HMENU hMenu, int uItem, TMO_IntMenuItem *&p)
{
- MENUITEMINFO mii = { 0 };
+ MENUITEMINFO mii = {};
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_DATA | MIIM_TYPE;
GetMenuItemInfo(hMenu, uItem, TRUE, &mii);
@@ -940,7 +940,7 @@ static UINT GetMenuItemTypeData(HMENU hMenu, int uItem, TMO_IntMenuItem *&p) static void InsertSeparator(HMENU hMenu, int uItem)
{
- MENUITEMINFO mii = { 0 };
+ MENUITEMINFO mii = {};
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_TYPE;
mii.fType = MFT_SEPARATOR;
@@ -1129,7 +1129,7 @@ static HMENU BuildRecursiveMenu(HMENU hMenu, const TMO_LinkedList &pList, WPARAM mii.fMask = MIIM_DATA | MIIM_ID | MIIM_STRING | MIIM_STATE;
if (pmi->iconId != -1 && g_bMenuIconsEnabled) {
mii.fMask |= MIIM_BITMAP;
- if (IsWinVerVistaPlus() && IsThemeActive()) {
+ if (IsWinVerVistaPlus() && IsThemeActive() && !IsWine()) {
if (pmi->hBmp == nullptr)
pmi->hBmp = ConvertIconToBitmap(pmi->parent->m_hMenuIcons, pmi->iconId);
mii.hbmpItem = pmi->hBmp;
@@ -1232,8 +1232,8 @@ static int MO_ReloadIcon(TMO_IntMenuItem *pmi, const void *) int OnIconLibChanges(WPARAM, LPARAM)
{
- {
- mir_cslock lck(csMenuHook);
+ { mir_cslock lck(csMenuHook);
+
for (auto &p : g_menus)
if (hStatusMenuObject != p->id) //skip status menu
MO_RecursiveWalkMenu(p->m_items, MO_ReloadIcon);
diff --git a/src/mir_core/src/Windows/miranda.cpp b/src/mir_core/src/Windows/miranda.cpp index dc867b89fe..0e4bd9d344 100644 --- a/src/mir_core/src/Windows/miranda.cpp +++ b/src/mir_core/src/Windows/miranda.cpp @@ -39,7 +39,7 @@ void InitHyperlink(); void InitTimeZones();
void InitWinver();
-HINSTANCE g_hInst = nullptr;
+HINSTANCE g_hInst = nullptr, g_hNtdll = GetModuleHandleA("ntdll.dll");
HCURSOR g_hCursorNS, g_hCursorWE;
HANDLE hThreadQueueEmpty;
diff --git a/src/mir_core/src/Windows/threads.cpp b/src/mir_core/src/Windows/threads.cpp index 1685d8c31a..898c6c0455 100644 --- a/src/mir_core/src/Windows/threads.cpp +++ b/src/mir_core/src/Windows/threads.cpp @@ -305,7 +305,7 @@ typedef LONG (WINAPI *pNtQIT)(HANDLE, LONG, PVOID, ULONG, PULONG); static void* GetCurrentThreadEntryPoint()
{
- pNtQIT NtQueryInformationThread = (pNtQIT)GetProcAddress(GetModuleHandle(L"ntdll.dll"), "NtQueryInformationThread");
+ pNtQIT NtQueryInformationThread = (pNtQIT)GetProcAddress(g_hNtdll, "NtQueryInformationThread");
if (NtQueryInformationThread == nullptr)
return nullptr;
diff --git a/src/mir_core/src/Windows/winver.cpp b/src/mir_core/src/Windows/winver.cpp index 704464d5f3..b3fadf2043 100644 --- a/src/mir_core/src/Windows/winver.cpp +++ b/src/mir_core/src/Windows/winver.cpp @@ -30,11 +30,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #endif
static int dwWinVer;
+static bool bIsWine = false;
void InitWinver()
{
uint32_t dwVer = LOWORD(GetVersion());
dwWinVer = MAKEWORD(HIBYTE(dwVer), LOBYTE(dwVer));
+ bIsWine = GetProcAddress(g_hNtdll, "wine_get_version") != 0;
}
MIR_CORE_DLL(BOOL) IsWinVerVistaPlus()
@@ -62,17 +64,21 @@ MIR_CORE_DLL(BOOL) IsWinVer10Plus() return dwWinVer >= _WIN32_WINNT_WIN10;
}
-MIR_CORE_DLL(BOOL) IsFullScreen()
+MIR_CORE_DLL(BOOL) IsWine()
{
- RECT rcScreen = { 0 };
+ return bIsWine;
+}
+MIR_CORE_DLL(BOOL) IsFullScreen()
+{
+ RECT rcScreen = {};
rcScreen.right = GetSystemMetrics(SM_CXSCREEN);
rcScreen.bottom = GetSystemMetrics(SM_CYSCREEN);
HMONITOR hMon = MonitorFromWindow(GetForegroundWindow(), MONITOR_DEFAULTTONEAREST);
MONITORINFO mi;
mi.cbSize = sizeof(mi);
- if (GetMonitorInfo(hMon, &mi))
+ if (GetMonitorInfoW(hMon, &mi))
rcScreen = mi.rcMonitor;
HWND hWndDesktop = GetDesktopWindow();
@@ -362,11 +368,8 @@ MIR_CORE_DLL(BOOL) OS_GetDisplayString(char *buf, size_t bufSize) ret.AppendFormat(" (build %d)", osvi.dwBuildNumber);
- HMODULE hNtDll = GetModuleHandleA("ntdll.dll");
- if (WGV wine_get_version = (WGV)GetProcAddress(hNtDll, "wine_get_version"))
- {
+ if (WGV wine_get_version = (WGV)GetProcAddress(g_hNtdll, "wine_get_version"))
ret.AppendFormat(" (Wine %s)", wine_get_version());
- }
mir_strncpy(buf, ret, bufSize);
return true;
diff --git a/src/mir_core/src/mir_core.def b/src/mir_core/src/mir_core.def index 2c91438bee..f0ce0a70db 100644 --- a/src/mir_core/src/mir_core.def +++ b/src/mir_core/src/mir_core.def @@ -1589,3 +1589,4 @@ _db_event_delivered@8 @1806 NONAME ??6MBinBuffer@@QAEAAV0@_K@Z @1814 NONAME
_Utils_IsoToUnixTime@4 @1815 NONAME
?db_event_setJson@@YGHIPBD@Z @1816 NONAME
+_IsWine@0 @1817 NONAME
diff --git a/src/mir_core/src/mir_core64.def b/src/mir_core/src/mir_core64.def index 2f83d9c0b0..935c5d83cb 100644 --- a/src/mir_core/src/mir_core64.def +++ b/src/mir_core/src/mir_core64.def @@ -1589,3 +1589,4 @@ db_event_delivered @1806 NONAME ??6MBinBuffer@@QEAAAEAV0@_K@Z @1814 NONAME
Utils_IsoToUnixTime @1815 NONAME
?db_event_setJson@@YAHIPEBD@Z @1816 NONAME
+IsWine @1817 NONAME
diff --git a/src/mir_core/src/miranda.h b/src/mir_core/src/miranda.h index c76d55c2c6..cedf24e528 100644 --- a/src/mir_core/src/miranda.h +++ b/src/mir_core/src/miranda.h @@ -31,7 +31,7 @@ void DestroyModularEngine(void); int InitPathUtils(void);
-extern HINSTANCE g_hInst;
+extern HINSTANCE g_hInst, g_hNtdll;
extern HWND hAPCWindow;
extern HANDLE hThreadQueueEmpty;
extern HCURSOR g_hCursorNS, g_hCursorWE;
|
