Add DESKTOP_APP_USE_PACKAGED support for Windows
This commit is contained in:
		
							parent
							
								
									547c657b1a
								
							
						
					
					
						commit
						492dc2568c
					
				
					 16 changed files with 727 additions and 646 deletions
				
			
		| 
						 | 
				
			
			@ -1212,6 +1212,10 @@ if ((NOT DESKTOP_APP_DISABLE_AUTOUPDATE OR NOT LINUX) AND NOT build_macstore AND
 | 
			
		|||
 | 
			
		||||
    set_target_properties(Updater PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${output_folder})
 | 
			
		||||
 | 
			
		||||
    if (WIN32 AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
 | 
			
		||||
        target_link_options(Updater PRIVATE -municode)
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    if (LINUX)
 | 
			
		||||
        target_link_options(Updater PRIVATE -static-libstdc++)
 | 
			
		||||
    endif()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,18 @@
 | 
			
		|||
//
 | 
			
		||||
// Generated from the TEXTINCLUDE 2 resource.
 | 
			
		||||
//
 | 
			
		||||
#include "winres.h"
 | 
			
		||||
#if defined(__MINGW64__) || defined(__MINGW32__)
 | 
			
		||||
	// MinGW-w64, MinGW
 | 
			
		||||
	#if defined(__has_include) && __has_include(<winres.h>)
 | 
			
		||||
		#include <winres.h>
 | 
			
		||||
	#else
 | 
			
		||||
		#include <afxres.h>
 | 
			
		||||
		#include <winresrc.h>
 | 
			
		||||
	#endif
 | 
			
		||||
#else
 | 
			
		||||
	// MSVC, Windows SDK
 | 
			
		||||
	#include <winres.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
#undef APSTUDIO_READONLY_SYMBOLS
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,18 @@
 | 
			
		|||
//
 | 
			
		||||
// Generated from the TEXTINCLUDE 2 resource.
 | 
			
		||||
//
 | 
			
		||||
#include "winres.h"
 | 
			
		||||
#if defined(__MINGW64__) || defined(__MINGW32__)
 | 
			
		||||
	// MinGW-w64, MinGW
 | 
			
		||||
	#if defined(__has_include) && __has_include(<winres.h>)
 | 
			
		||||
		#include <winres.h>
 | 
			
		||||
	#else
 | 
			
		||||
		#include <afxres.h>
 | 
			
		||||
		#include <winresrc.h>
 | 
			
		||||
	#endif
 | 
			
		||||
#else
 | 
			
		||||
	// MSVC, Windows SDK
 | 
			
		||||
	#include <winres.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
#undef APSTUDIO_READONLY_SYMBOLS
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -268,7 +268,7 @@ int main(int argc, char *argv[])
 | 
			
		|||
	cout << "Compression start, size: " << resultSize << "\n";
 | 
			
		||||
 | 
			
		||||
	QByteArray compressed, resultCheck;
 | 
			
		||||
#ifdef Q_OS_WIN // use Lzma SDK for win
 | 
			
		||||
#if defined Q_OS_WIN && !defined DESKTOP_APP_USE_PACKAGED // use Lzma SDK for win
 | 
			
		||||
	const int32 hSigLen = 128, hShaLen = 20, hPropsLen = LZMA_PROPS_SIZE, hOriginalSizeLen = sizeof(int32), hSize = hSigLen + hShaLen + hPropsLen + hOriginalSizeLen; // header
 | 
			
		||||
 | 
			
		||||
	compressed.resize(hSize + resultSize + 1024 * 1024); // rsa signature + sha1 + lzma props + max compressed size
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ extern "C" {
 | 
			
		|||
#include <openssl/evp.h>
 | 
			
		||||
} // extern "C"
 | 
			
		||||
 | 
			
		||||
#ifdef Q_OS_WIN // use Lzma SDK for win
 | 
			
		||||
#if defined Q_OS_WIN && !defined DESKTOP_APP_USE_PACKAGED // use Lzma SDK for win
 | 
			
		||||
#include <LzmaLib.h>
 | 
			
		||||
#else
 | 
			
		||||
#include <lzma.h>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,11 +33,11 @@ extern "C" {
 | 
			
		|||
#include <openssl/err.h>
 | 
			
		||||
} // extern "C"
 | 
			
		||||
 | 
			
		||||
#ifdef Q_OS_WIN // use Lzma SDK for win
 | 
			
		||||
#if defined Q_OS_WIN && !defined DESKTOP_APP_USE_PACKAGED // use Lzma SDK for win
 | 
			
		||||
#include <LzmaLib.h>
 | 
			
		||||
#else // Q_OS_WIN
 | 
			
		||||
#else // Q_OS_WIN && !DESKTOP_APP_USE_PACKAGED
 | 
			
		||||
#include <lzma.h>
 | 
			
		||||
#endif // else of Q_OS_WIN
 | 
			
		||||
#endif // else of Q_OS_WIN && !DESKTOP_APP_USE_PACKAGED
 | 
			
		||||
 | 
			
		||||
namespace Core {
 | 
			
		||||
namespace {
 | 
			
		||||
| 
						 | 
				
			
			@ -252,11 +252,11 @@ bool UnpackUpdate(const QString &filepath) {
 | 
			
		|||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#ifdef Q_OS_WIN // use Lzma SDK for win
 | 
			
		||||
#if defined Q_OS_WIN && !defined DESKTOP_APP_USE_PACKAGED // use Lzma SDK for win
 | 
			
		||||
	const int32 hSigLen = 128, hShaLen = 20, hPropsLen = LZMA_PROPS_SIZE, hOriginalSizeLen = sizeof(int32), hSize = hSigLen + hShaLen + hPropsLen + hOriginalSizeLen; // header
 | 
			
		||||
#else // Q_OS_WIN
 | 
			
		||||
#else // Q_OS_WIN && !DESKTOP_APP_USE_PACKAGED
 | 
			
		||||
	const int32 hSigLen = 128, hShaLen = 20, hPropsLen = 0, hOriginalSizeLen = sizeof(int32), hSize = hSigLen + hShaLen + hOriginalSizeLen; // header
 | 
			
		||||
#endif // Q_OS_WIN
 | 
			
		||||
#endif // Q_OS_WIN && !DESKTOP_APP_USE_PACKAGED
 | 
			
		||||
 | 
			
		||||
	QByteArray compressed = input.readAll();
 | 
			
		||||
	int32 compressedLen = compressed.size() - hSize;
 | 
			
		||||
| 
						 | 
				
			
			@ -311,14 +311,14 @@ bool UnpackUpdate(const QString &filepath) {
 | 
			
		|||
	uncompressed.resize(uncompressedLen);
 | 
			
		||||
 | 
			
		||||
	size_t resultLen = uncompressed.size();
 | 
			
		||||
#ifdef Q_OS_WIN // use Lzma SDK for win
 | 
			
		||||
#if defined Q_OS_WIN && !defined DESKTOP_APP_USE_PACKAGED // use Lzma SDK for win
 | 
			
		||||
	SizeT srcLen = compressedLen;
 | 
			
		||||
	int uncompressRes = LzmaUncompress((uchar*)uncompressed.data(), &resultLen, (const uchar*)(compressed.constData() + hSize), &srcLen, (const uchar*)(compressed.constData() + hSigLen + hShaLen), LZMA_PROPS_SIZE);
 | 
			
		||||
	if (uncompressRes != SZ_OK) {
 | 
			
		||||
		LOG(("Update Error: could not uncompress lzma, code: %1").arg(uncompressRes));
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
#else // Q_OS_WIN
 | 
			
		||||
#else // Q_OS_WIN && !DESKTOP_APP_USE_PACKAGED
 | 
			
		||||
	lzma_stream stream = LZMA_STREAM_INIT;
 | 
			
		||||
 | 
			
		||||
	lzma_ret ret = lzma_stream_decoder(&stream, UINT64_MAX, LZMA_CONCATENATED);
 | 
			
		||||
| 
						 | 
				
			
			@ -361,7 +361,7 @@ bool UnpackUpdate(const QString &filepath) {
 | 
			
		|||
		LOG(("Error in decompression: %1 (error code %2)").arg(msg).arg(res));
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
#endif // Q_OS_WIN
 | 
			
		||||
#endif // Q_OS_WIN && !DESKTOP_APP_USE_PACKAGED
 | 
			
		||||
 | 
			
		||||
	tempDir.mkdir(tempDir.absolutePath());
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | 
			
		|||
#include "platform/win/windows_dlls.h"
 | 
			
		||||
#include "media/audio/media_audio.h"
 | 
			
		||||
 | 
			
		||||
#include <initguid.h>
 | 
			
		||||
#include <mmdeviceapi.h>
 | 
			
		||||
#include <audioclient.h>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -117,7 +117,13 @@ void UnsafeOpenEmailLink(const QString &email) {
 | 
			
		|||
		auto wstringUrl = url.toString(QUrl::FullyEncoded).toStdWString();
 | 
			
		||||
		if (Dlls::SHOpenWithDialog) {
 | 
			
		||||
			OPENASINFO info;
 | 
			
		||||
			info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_REGISTER_EXT | OAIF_EXEC | OAIF_FILE_IS_URI | OAIF_URL_PROTOCOL;
 | 
			
		||||
			info.oaifInFlags = OAIF_ALLOW_REGISTRATION
 | 
			
		||||
				| OAIF_REGISTER_EXT
 | 
			
		||||
				| OAIF_EXEC
 | 
			
		||||
#if WINVER >= 0x0602
 | 
			
		||||
				| OAIF_FILE_IS_URI
 | 
			
		||||
#endif // WINVER >= 0x602
 | 
			
		||||
				| OAIF_URL_PROTOCOL;
 | 
			
		||||
			info.pcszClass = NULL;
 | 
			
		||||
			info.pcszFile = wstringUrl.c_str();
 | 
			
		||||
			Dlls::SHOpenWithDialog(0, &info);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | 
			
		|||
 | 
			
		||||
#include <roapi.h>
 | 
			
		||||
#include <wrl/client.h>
 | 
			
		||||
#include <windows.ui.notifications.h>
 | 
			
		||||
 | 
			
		||||
#include <Windowsx.h>
 | 
			
		||||
#include <VersionHelpers.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -46,10 +45,28 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | 
			
		|||
#undef min
 | 
			
		||||
#undef max
 | 
			
		||||
 | 
			
		||||
// WM_POINTER support from Windows 8 onwards (WINVER >= 0x0602)
 | 
			
		||||
#ifndef WM_POINTERUPDATE
 | 
			
		||||
#  define WM_NCPOINTERUPDATE 0x0241
 | 
			
		||||
#  define WM_NCPOINTERDOWN   0x0242
 | 
			
		||||
#  define WM_NCPOINTERUP     0x0243
 | 
			
		||||
#  define WM_POINTERUPDATE   0x0245
 | 
			
		||||
#  define WM_POINTERDOWN     0x0246
 | 
			
		||||
#  define WM_POINTERUP       0x0247
 | 
			
		||||
#  define WM_POINTERENTER    0x0249
 | 
			
		||||
#  define WM_POINTERLEAVE    0x024A
 | 
			
		||||
#  define WM_POINTERACTIVATE 0x024B
 | 
			
		||||
#  define WM_POINTERCAPTURECHANGED 0x024C
 | 
			
		||||
#  define WM_POINTERWHEEL    0x024E
 | 
			
		||||
#  define WM_POINTERHWHEEL   0x024F
 | 
			
		||||
#endif // WM_POINTERUPDATE
 | 
			
		||||
 | 
			
		||||
HICON qt_pixmapToWinHICON(const QPixmap &);
 | 
			
		||||
 | 
			
		||||
using namespace Microsoft::WRL;
 | 
			
		||||
 | 
			
		||||
Q_DECLARE_METATYPE(QMargins);
 | 
			
		||||
 | 
			
		||||
namespace Platform {
 | 
			
		||||
namespace {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -225,7 +242,7 @@ public:
 | 
			
		|||
				destroy();
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			SetWindowLong(hwnds[i], GWL_HWNDPARENT, (LONG)hwnd);
 | 
			
		||||
			SetWindowLongPtr(hwnds[i], GWLP_HWNDPARENT, (LONG)hwnd);
 | 
			
		||||
 | 
			
		||||
			dcs[i] = CreateCompatibleDC(screenDC);
 | 
			
		||||
			if (!dcs[i]) {
 | 
			
		||||
| 
						 | 
				
			
			@ -711,18 +728,18 @@ void MainWindow::workmodeUpdated(DBIWorkMode mode) {
 | 
			
		|||
	switch (mode) {
 | 
			
		||||
	case dbiwmWindowAndTray: {
 | 
			
		||||
		psSetupTrayIcon();
 | 
			
		||||
		HWND psOwner = (HWND)GetWindowLong(ps_hWnd, GWL_HWNDPARENT);
 | 
			
		||||
		HWND psOwner = (HWND)GetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT);
 | 
			
		||||
		if (psOwner) {
 | 
			
		||||
			SetWindowLong(ps_hWnd, GWL_HWNDPARENT, 0);
 | 
			
		||||
			SetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT, 0);
 | 
			
		||||
			psRefreshTaskbarIcon();
 | 
			
		||||
		}
 | 
			
		||||
	} break;
 | 
			
		||||
 | 
			
		||||
	case dbiwmTrayOnly: {
 | 
			
		||||
		psSetupTrayIcon();
 | 
			
		||||
		HWND psOwner = (HWND)GetWindowLong(ps_hWnd, GWL_HWNDPARENT);
 | 
			
		||||
		HWND psOwner = (HWND)GetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT);
 | 
			
		||||
		if (!psOwner) {
 | 
			
		||||
			SetWindowLong(ps_hWnd, GWL_HWNDPARENT, (LONG)ps_tbHider_hWnd);
 | 
			
		||||
			SetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT, (LONG)ps_tbHider_hWnd);
 | 
			
		||||
		}
 | 
			
		||||
	} break;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -733,9 +750,9 @@ void MainWindow::workmodeUpdated(DBIWorkMode mode) {
 | 
			
		|||
		}
 | 
			
		||||
		trayIcon = 0;
 | 
			
		||||
 | 
			
		||||
		HWND psOwner = (HWND)GetWindowLong(ps_hWnd, GWL_HWNDPARENT);
 | 
			
		||||
		HWND psOwner = (HWND)GetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT);
 | 
			
		||||
		if (psOwner) {
 | 
			
		||||
			SetWindowLong(ps_hWnd, GWL_HWNDPARENT, 0);
 | 
			
		||||
			SetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT, 0);
 | 
			
		||||
			psRefreshTaskbarIcon();
 | 
			
		||||
		}
 | 
			
		||||
	} break;
 | 
			
		||||
| 
						 | 
				
			
			@ -873,7 +890,6 @@ void MainWindow::updateSystemMenu(Qt::WindowState state) {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Q_DECLARE_METATYPE(QMargins);
 | 
			
		||||
void MainWindow::psUpdateMargins() {
 | 
			
		||||
	if (!ps_hWnd || _inUpdateMargins) return;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -884,7 +900,7 @@ void MainWindow::psUpdateMargins() {
 | 
			
		|||
	GetClientRect(ps_hWnd, &r);
 | 
			
		||||
	a = r;
 | 
			
		||||
 | 
			
		||||
	LONG style = GetWindowLong(ps_hWnd, GWL_STYLE), styleEx = GetWindowLong(ps_hWnd, GWL_EXSTYLE);
 | 
			
		||||
	LONG style = GetWindowLongPtr(ps_hWnd, GWL_STYLE), styleEx = GetWindowLongPtr(ps_hWnd, GWL_EXSTYLE);
 | 
			
		||||
	AdjustWindowRectEx(&a, style, false, styleEx);
 | 
			
		||||
	QMargins margins = QMargins(a.left - r.left, a.top - r.top, r.right - a.right, r.bottom - a.bottom);
 | 
			
		||||
	if (style & WS_MAXIMIZE) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | 
			
		|||
 | 
			
		||||
#include <roapi.h>
 | 
			
		||||
#include <wrl/client.h>
 | 
			
		||||
 | 
			
		||||
#ifndef __MINGW32__
 | 
			
		||||
#include "platform/win/wrapper_wrl_implements_h.h"
 | 
			
		||||
#include <windows.ui.notifications.h>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -32,9 +34,12 @@ using namespace Microsoft::WRL;
 | 
			
		|||
using namespace ABI::Windows::UI::Notifications;
 | 
			
		||||
using namespace ABI::Windows::Data::Xml::Dom;
 | 
			
		||||
using namespace Windows::Foundation;
 | 
			
		||||
#endif // !__MINGW32__
 | 
			
		||||
 | 
			
		||||
namespace Platform {
 | 
			
		||||
namespace Notifications {
 | 
			
		||||
 | 
			
		||||
#ifndef __MINGW32__
 | 
			
		||||
namespace {
 | 
			
		||||
 | 
			
		||||
class StringReferenceWrapper {
 | 
			
		||||
| 
						 | 
				
			
			@ -302,25 +307,33 @@ void Check() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
} // namespace
 | 
			
		||||
#endif // !__MINGW32__
 | 
			
		||||
 | 
			
		||||
bool Supported() {
 | 
			
		||||
#ifndef __MINGW32__
 | 
			
		||||
	if (!Checked) {
 | 
			
		||||
		Checked = true;
 | 
			
		||||
		Check();
 | 
			
		||||
	}
 | 
			
		||||
	return InitSucceeded;
 | 
			
		||||
#endif // !__MINGW32__
 | 
			
		||||
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::unique_ptr<Window::Notifications::Manager> Create(Window::Notifications::System *system) {
 | 
			
		||||
#ifndef __MINGW32__
 | 
			
		||||
	if (Global::NativeNotifications() && Supported()) {
 | 
			
		||||
		auto result = std::make_unique<Manager>(system);
 | 
			
		||||
		if (result->init()) {
 | 
			
		||||
			return std::move(result);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
#endif // !__MINGW32__
 | 
			
		||||
	return nullptr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifndef __MINGW32__
 | 
			
		||||
class Manager::Private {
 | 
			
		||||
public:
 | 
			
		||||
	using Type = Window::Notifications::CachedUserpics::Type;
 | 
			
		||||
| 
						 | 
				
			
			@ -597,6 +610,7 @@ void Manager::onBeforeNotificationActivated(PeerId peerId, MsgId msgId) {
 | 
			
		|||
void Manager::onAfterNotificationActivated(PeerId peerId, MsgId msgId) {
 | 
			
		||||
	_private->afterNotificationActivated(peerId, msgId);
 | 
			
		||||
}
 | 
			
		||||
#endif // !__MINGW32__
 | 
			
		||||
 | 
			
		||||
namespace {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | 
			
		|||
namespace Platform {
 | 
			
		||||
namespace Notifications {
 | 
			
		||||
 | 
			
		||||
#ifndef __MINGW32__
 | 
			
		||||
class Manager : public Window::Notifications::NativeManager {
 | 
			
		||||
public:
 | 
			
		||||
	Manager(Window::Notifications::System *system);
 | 
			
		||||
| 
						 | 
				
			
			@ -41,6 +42,7 @@ private:
 | 
			
		|||
	const std::unique_ptr<Private> _private;
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
#endif // !__MINGW32__
 | 
			
		||||
 | 
			
		||||
} // namespace Notifications
 | 
			
		||||
} // namespace Platform
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,7 +29,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | 
			
		|||
 | 
			
		||||
#include <roapi.h>
 | 
			
		||||
#include <wrl/client.h>
 | 
			
		||||
#include <windows.ui.notifications.h>
 | 
			
		||||
 | 
			
		||||
#include <openssl/conf.h>
 | 
			
		||||
#include <openssl/engine.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -64,9 +63,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
using namespace Microsoft::WRL;
 | 
			
		||||
using namespace ABI::Windows::UI::Notifications;
 | 
			
		||||
using namespace ABI::Windows::Data::Xml::Dom;
 | 
			
		||||
using namespace Windows::Foundation;
 | 
			
		||||
using namespace Platform;
 | 
			
		||||
 | 
			
		||||
namespace {
 | 
			
		||||
| 
						 | 
				
			
			@ -434,7 +430,7 @@ namespace {
 | 
			
		|||
		WCHAR defaultStr[bufSize] = { 0 };
 | 
			
		||||
		if (RegQueryValueEx(rkey, value, 0, &defaultType, (BYTE*)defaultStr, &defaultSize) != ERROR_SUCCESS || defaultType != REG_SZ || defaultSize != (v.size() + 1) * 2 || QString::fromStdWString(defaultStr) != v) {
 | 
			
		||||
			WCHAR tmp[bufSize] = { 0 };
 | 
			
		||||
			if (!v.isEmpty()) wsprintf(tmp, v.replace(QChar('%'), qsl("%%")).toStdWString().c_str());
 | 
			
		||||
			if (!v.isEmpty()) StringCbPrintf(tmp, bufSize, v.replace(QChar('%'), qsl("%%")).toStdWString().c_str());
 | 
			
		||||
			LSTATUS status = RegSetValueEx(rkey, value, 0, REG_SZ, (BYTE*)tmp, (wcslen(tmp) + 1) * sizeof(WCHAR));
 | 
			
		||||
			if (status != ERROR_SUCCESS) {
 | 
			
		||||
				QString msg = qsl("App Error: could not set %1, error %2").arg(value ? ('\'' + QString::fromStdWString(value) + '\'') : qsl("(Default)")).arg("%1: %2");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | 
			
		|||
 | 
			
		||||
#include <roapi.h>
 | 
			
		||||
#include <wrl/client.h>
 | 
			
		||||
#include <windows.ui.notifications.h>
 | 
			
		||||
 | 
			
		||||
using namespace Microsoft::WRL;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -287,6 +286,7 @@ bool validateShortcut() {
 | 
			
		|||
	PropVariantClear(&appIdPropVar);
 | 
			
		||||
	if (!SUCCEEDED(hr)) return false;
 | 
			
		||||
 | 
			
		||||
#if WINVER >= 0x602
 | 
			
		||||
	PROPVARIANT startPinPropVar;
 | 
			
		||||
	hr = InitPropVariantFromUInt32(APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL, &startPinPropVar);
 | 
			
		||||
	if (!SUCCEEDED(hr)) return false;
 | 
			
		||||
| 
						 | 
				
			
			@ -294,6 +294,7 @@ bool validateShortcut() {
 | 
			
		|||
	hr = propertyStore->SetValue(pkey_AppUserModel_StartPinOption, startPinPropVar);
 | 
			
		||||
	PropVariantClear(&startPinPropVar);
 | 
			
		||||
	if (!SUCCEEDED(hr)) return false;
 | 
			
		||||
#endif // WINVER >= 0x602
 | 
			
		||||
 | 
			
		||||
	hr = propertyStore->Commit();
 | 
			
		||||
	if (!SUCCEEDED(hr)) return false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | 
			
		|||
#include <RestartManager.h>
 | 
			
		||||
#include <psapi.h>
 | 
			
		||||
 | 
			
		||||
#ifdef __MINGW32__
 | 
			
		||||
#define __in
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
namespace Platform {
 | 
			
		||||
namespace Dlls {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -191,7 +191,7 @@ bool EventFilter::mainWindowEvent(
 | 
			
		|||
	} return false;
 | 
			
		||||
 | 
			
		||||
	case WM_SHOWWINDOW: {
 | 
			
		||||
		LONG style = GetWindowLong(hWnd, GWL_STYLE);
 | 
			
		||||
		LONG style = GetWindowLongPtr(hWnd, GWL_STYLE);
 | 
			
		||||
		auto changes = ShadowsChange::Resized | ((wParam && !(style & (WS_MAXIMIZE | WS_MINIMIZE))) ? ShadowsChange::Shown : ShadowsChange::Hidden);
 | 
			
		||||
		_window->shadowsUpdate(changes);
 | 
			
		||||
	} return false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -90,6 +90,7 @@ else()
 | 
			
		|||
        os/windows/AudioOutputWASAPI.h
 | 
			
		||||
        os/windows/AudioInputWASAPI.cpp
 | 
			
		||||
        os/windows/AudioInputWASAPI.h
 | 
			
		||||
        os/windows/MinGWSupport.h
 | 
			
		||||
        os/windows/WindowsSpecific.cpp
 | 
			
		||||
        os/windows/WindowsSpecific.h
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +123,12 @@ else()
 | 
			
		|||
        # POSIX
 | 
			
		||||
        os/posix/NetworkSocketPosix.cpp
 | 
			
		||||
        os/posix/NetworkSocketPosix.h
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    if (NOT WIN32 OR CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
 | 
			
		||||
        # Doesn't build with mingw for now
 | 
			
		||||
        nice_target_sources(lib_tgvoip ${tgvoip_loc}
 | 
			
		||||
        PRIVATE
 | 
			
		||||
            # WebRTC APM
 | 
			
		||||
            webrtc_dsp/system_wrappers/include/field_trial.h
 | 
			
		||||
            webrtc_dsp/system_wrappers/include/cpu_features_wrapper.h
 | 
			
		||||
| 
						 | 
				
			
			@ -728,6 +734,7 @@ else()
 | 
			
		|||
            # webrtc_dsp/common_audio/signal_processing/cross_correlation_neon.c
 | 
			
		||||
            # webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12_armv7.S
 | 
			
		||||
        )
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    target_compile_definitions(lib_tgvoip
 | 
			
		||||
    PUBLIC
 | 
			
		||||
| 
						 | 
				
			
			@ -737,6 +744,7 @@ else()
 | 
			
		|||
    )
 | 
			
		||||
 | 
			
		||||
    if (WIN32)
 | 
			
		||||
        if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
 | 
			
		||||
            target_compile_options(lib_tgvoip
 | 
			
		||||
            PRIVATE
 | 
			
		||||
                /wd4005
 | 
			
		||||
| 
						 | 
				
			
			@ -747,6 +755,13 @@ else()
 | 
			
		|||
            PUBLIC
 | 
			
		||||
                WEBRTC_WIN
 | 
			
		||||
            )
 | 
			
		||||
        else()
 | 
			
		||||
            target_compile_definitions(lib_tgvoip
 | 
			
		||||
            PUBLIC
 | 
			
		||||
                # Doesn't build with mingw for now
 | 
			
		||||
                TGVOIP_NO_DSP
 | 
			
		||||
            )
 | 
			
		||||
        endif()
 | 
			
		||||
    elseif (APPLE)
 | 
			
		||||
        target_compile_definitions(lib_tgvoip
 | 
			
		||||
        PUBLIC
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue