From 10f3d2049a20f03cb959993156dbec10511f5599 Mon Sep 17 00:00:00 2001 From: Iman Date: Sun, 7 Aug 2016 13:06:14 +0430 Subject: [PATCH 1/9] Update building-msvc.md Signed-off-by: Iman (github: IMAN4K) --- doc/building-msvc.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/building-msvc.md b/doc/building-msvc.md index ec67b58d6e..e5e758605d 100644 --- a/doc/building-msvc.md +++ b/doc/building-msvc.md @@ -205,6 +205,11 @@ If you didn't install Windows SDKs before, you need to install them now. To inst If you already have Windows SDKs then find the library folder and correct it at configure's command below (like **C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86**). #### Building library +go to Libraries directory + + D: + cd /tbuild/libraries/qt5_6_0/qtbase +and run configure -debug-and-release -force-debug-info -opensource -confirm-license -static -I "D:\TBuild\Libraries\openssl\Release\include" -L "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib" -l Gdi32 -no-opengl -openssl-linked OPENSSL_LIBS_DEBUG="D:\TBuild\Libraries\openssl_debug\Debug\lib\ssleay32.lib D:\TBuild\Libraries\openssl_debug\Debug\lib\libeay32.lib" OPENSSL_LIBS_RELEASE="D:\TBuild\Libraries\openssl\Release\lib\ssleay32.lib D:\TBuild\Libraries\openssl\Release\lib\libeay32.lib" -mp -nomake examples -nomake tests -platform win32-msvc2015 nmake From 71cfc83c1d55058a591db060871877aa52ce054b Mon Sep 17 00:00:00 2001 From: Iman Date: Sun, 7 Aug 2016 13:39:27 +0430 Subject: [PATCH 2/9] Update building-msvc.md --- doc/building-msvc.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/building-msvc.md b/doc/building-msvc.md index e5e758605d..b82c0cd79e 100644 --- a/doc/building-msvc.md +++ b/doc/building-msvc.md @@ -253,8 +253,8 @@ and run #### Build * Open in VS2015 **D:\TBuild\Libraries\breakpad\src\client\windows\breakpad_client.sln** -* Change "Treat WChar_t As Built in Type" to "No" in all projects & configurations -* Change "Treat Warnings As Errors" to "No" in all projects & configurations +* Change "Treat WChar_t As Built in Type" to "No" in all projects & configurations (should be in project>>properties>>C/C++>>Language) +* Change "Treat Warnings As Errors" to "No" in all projects & configurations (should be in project>>properties>>C/C++>>General) * Build Debug configuration * Build Release configuration From 43a40c3b9a5c7c78343dfbbf3e971ac5c98836a1 Mon Sep 17 00:00:00 2001 From: EXL Date: Thu, 18 Aug 2016 15:35:39 +0000 Subject: [PATCH 3/9] Add zooming in media viewer on Ctrl + mouse wheel Mouse wheel without Ctrl key is used for switch to the prev/next image; Clicking on mouse wheel is used to reset zoom; To switch images are taken only a physical mouse wheel events. Signed-off-by: Serg Koles (github: EXL) --- Telegram/SourceFiles/mediaview.cpp | 144 +++++++++++++++++++---------- Telegram/SourceFiles/mediaview.h | 6 ++ 2 files changed, 99 insertions(+), 51 deletions(-) diff --git a/Telegram/SourceFiles/mediaview.cpp b/Telegram/SourceFiles/mediaview.cpp index 44669a2768..fcaaf98e0c 100644 --- a/Telegram/SourceFiles/mediaview.cpp +++ b/Telegram/SourceFiles/mediaview.cpp @@ -520,6 +520,74 @@ void MediaView::step_radial(uint64 ms, bool timer) { } } +void MediaView::zoomIn() { + int32 newZoom = _zoom; + if (newZoom == ZoomToScreenLevel) { + if (qCeil(_zoomToScreen) <= MaxZoomLevel) { + newZoom = qCeil(_zoomToScreen); + } + } else { + if (newZoom < _zoomToScreen && (newZoom + 1 > _zoomToScreen || (_zoomToScreen > MaxZoomLevel && newZoom == MaxZoomLevel))) { + newZoom = ZoomToScreenLevel; + } else if (newZoom < MaxZoomLevel) { + ++newZoom; + } + } + zoomUpdate(newZoom); +} + +void MediaView::zoomOut() { + int32 newZoom = _zoom; + if (newZoom == ZoomToScreenLevel) { + if (qFloor(_zoomToScreen) >= -MaxZoomLevel) { + newZoom = qFloor(_zoomToScreen); + } + } else { + if (newZoom > _zoomToScreen && (newZoom - 1 < _zoomToScreen || (_zoomToScreen < -MaxZoomLevel && newZoom == -MaxZoomLevel))) { + newZoom = ZoomToScreenLevel; + } else if (newZoom > -MaxZoomLevel) { + --newZoom; + } + } + zoomUpdate(newZoom); +} + +void MediaView::zoomReset() { + int32 newZoom = _zoom; + if (_zoom == 0) { + if (qFloor(_zoomToScreen) == qCeil(_zoomToScreen) && qRound(_zoomToScreen) >= -MaxZoomLevel && qRound(_zoomToScreen) <= MaxZoomLevel) { + newZoom = qRound(_zoomToScreen); + } else { + newZoom = ZoomToScreenLevel; + } + } else { + newZoom = 0; + } + _x = -_width / 2; + _y = -((gifShown() ? _gif->height() : (_current.height() / cIntRetinaFactor())) / 2); + float64 z = (_zoom == ZoomToScreenLevel) ? _zoomToScreen : _zoom; + if (z >= 0) { + _x = qRound(_x * (z + 1)); + _y = qRound(_y * (z + 1)); + } else { + _x = qRound(_x / (-z + 1)); + _y = qRound(_y / (-z + 1)); + } + _x += width() / 2; + _y += height() / 2; + update(); + zoomUpdate(newZoom); +} + +void MediaView::zoomUpdate(int32 &newZoom) { + if (newZoom != ZoomToScreenLevel) { + while ((newZoom < 0 && (-newZoom + 1) > _w) || (-newZoom + 1) > _h) { + ++newZoom; + } + } + setZoomLevel(newZoom); +} + void MediaView::clearData() { if (!isHidden()) { hide(); @@ -1810,62 +1878,34 @@ void MediaView::keyPressEvent(QKeyEvent *e) { moveToNext(-1); } else if (e->key() == Qt::Key_Right) { moveToNext(1); - } else if (e->modifiers().testFlag(Qt::ControlModifier) && (e->key() == Qt::Key_Plus || e->key() == Qt::Key_Equal || e->key() == ']' || e->key() == Qt::Key_Asterisk || e->key() == Qt::Key_Minus || e->key() == Qt::Key_Underscore || e->key() == Qt::Key_0)) { - int32 newZoom = _zoom; - if (e->key() == Qt::Key_Plus || e->key() == Qt::Key_Equal || e->key() == Qt::Key_Asterisk || e->key() == ']') { - if (newZoom == ZoomToScreenLevel) { - if (qCeil(_zoomToScreen) <= MaxZoomLevel) { - newZoom = qCeil(_zoomToScreen); - } - } else { - if (newZoom < _zoomToScreen && (newZoom + 1 > _zoomToScreen || (_zoomToScreen > MaxZoomLevel && newZoom == MaxZoomLevel))) { - newZoom = ZoomToScreenLevel; - } else if (newZoom < MaxZoomLevel) { - ++newZoom; - } - } + } else if (e->modifiers().testFlag(Qt::ControlModifier) && (e->key() == Qt::Key_Plus || e->key() == Qt::Key_Equal || e->key() == ']' || e->key() == Qt::Key_Asterisk || e->key() == Qt::Key_Minus || e->key() == Qt::Key_Underscore || e->key() == Qt::Key_0)) { + if (e->key() == Qt::Key_Plus || e->key() == Qt::Key_Equal || e->key() == Qt::Key_Asterisk || e->key() == ']') { + zoomIn(); } else if (e->key() == Qt::Key_Minus || e->key() == Qt::Key_Underscore) { - if (newZoom == ZoomToScreenLevel) { - if (qFloor(_zoomToScreen) >= -MaxZoomLevel) { - newZoom = qFloor(_zoomToScreen); - } - } else { - if (newZoom > _zoomToScreen && (newZoom - 1 < _zoomToScreen || (_zoomToScreen < -MaxZoomLevel && newZoom == -MaxZoomLevel))) { - newZoom = ZoomToScreenLevel; - } else if (newZoom > -MaxZoomLevel) { - --newZoom; - } - } + zoomOut(); } else { - if (_zoom == 0) { - if (qFloor(_zoomToScreen) == qCeil(_zoomToScreen) && qRound(_zoomToScreen) >= -MaxZoomLevel && qRound(_zoomToScreen) <= MaxZoomLevel) { - newZoom = qRound(_zoomToScreen); - } else { - newZoom = ZoomToScreenLevel; - } - } else { - newZoom = 0; - } - _x = -_width / 2; - _y = -((gifShown() ? _gif->height() : (_current.height() / cIntRetinaFactor())) / 2); - float64 z = (_zoom == ZoomToScreenLevel) ? _zoomToScreen : _zoom; - if (z >= 0) { - _x = qRound(_x * (z + 1)); - _y = qRound(_y * (z + 1)); - } else { - _x = qRound(_x / (-z + 1)); - _y = qRound(_y / (-z + 1)); - } - _x += width() / 2; - _y += height() / 2; - update(); + zoomReset(); } - if (newZoom != ZoomToScreenLevel) { - while ((newZoom < 0 && (-newZoom + 1) > _w) || (-newZoom + 1) > _h) { - ++newZoom; + } +} + +void MediaView::wheelEvent(QWheelEvent *e) { + if (e->delta() < 0) { + if (e->modifiers().testFlag(Qt::ControlModifier)) { + zoomOut(); + } else { + if (e->source() == Qt::MouseEventNotSynthesized) { + moveToNext(-1); + } + } + } else { + if (e->modifiers().testFlag(Qt::ControlModifier)) { + zoomIn(); + } else { + if (e->source() == Qt::MouseEventNotSynthesized) { + moveToNext(1); } } - setZoomLevel(newZoom); } } @@ -2114,6 +2154,8 @@ void MediaView::mousePressEvent(QMouseEvent *e) { _yStart = _y; } } + } else if (e->button() == Qt::MiddleButton) { + zoomReset(); } activateControls(); } diff --git a/Telegram/SourceFiles/mediaview.h b/Telegram/SourceFiles/mediaview.h index c33222545b..3f8756b390 100644 --- a/Telegram/SourceFiles/mediaview.h +++ b/Telegram/SourceFiles/mediaview.h @@ -107,6 +107,7 @@ protected: void paintEvent(QPaintEvent *e) override; void keyPressEvent(QKeyEvent *e) override; + void wheelEvent(QWheelEvent *e) override; void mousePressEvent(QMouseEvent *e) override; void mouseDoubleClickEvent(QMouseEvent *e) override; void mouseMoveEvent(QMouseEvent *e) override; @@ -170,6 +171,11 @@ private: void step_state(uint64 ms, bool timer); void step_radial(uint64 ms, bool timer); + void zoomIn(); + void zoomOut(); + void zoomReset(); + void zoomUpdate(int32 &newZoom); + void paintDocRadialLoading(Painter &p, bool radial, float64 radialOpacity); QBrush _transparentBrush; From ffe75444d1e3ad0dcf014caa02d5e9e8b3be79e1 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 12 Sep 2016 18:48:01 +0300 Subject: [PATCH 4/9] Stable 0.10.6 (only for OS X): fixing Updater erasing. --- Telegram/Resources/winrc/Telegram.rc | 8 ++++---- Telegram/Resources/winrc/Updater.rc | 8 ++++---- Telegram/SourceFiles/_other/updater_osx.m | 15 +++++++++++++++ Telegram/SourceFiles/core/version.h | 4 ++-- Telegram/build/version | 6 +++--- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/Telegram/Resources/winrc/Telegram.rc b/Telegram/Resources/winrc/Telegram.rc index 983ed4d620..a456e1856f 100644 --- a/Telegram/Resources/winrc/Telegram.rc +++ b/Telegram/Resources/winrc/Telegram.rc @@ -34,8 +34,8 @@ IDI_ICON1 ICON "..\\art\\icon256.ico" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,10,5,0 - PRODUCTVERSION 0,10,5,0 + FILEVERSION 0,10,6,0 + PRODUCTVERSION 0,10,6,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -51,10 +51,10 @@ BEGIN BLOCK "040904b0" BEGIN VALUE "CompanyName", "Telegram Messenger LLP" - VALUE "FileVersion", "0.10.5.0" + VALUE "FileVersion", "0.10.6.0" VALUE "LegalCopyright", "Copyright (C) 2014-2016" VALUE "ProductName", "Telegram Desktop" - VALUE "ProductVersion", "0.10.5.0" + VALUE "ProductVersion", "0.10.6.0" END END BLOCK "VarFileInfo" diff --git a/Telegram/Resources/winrc/Updater.rc b/Telegram/Resources/winrc/Updater.rc index aec4845242..34bd669ad6 100644 --- a/Telegram/Resources/winrc/Updater.rc +++ b/Telegram/Resources/winrc/Updater.rc @@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,10,5,0 - PRODUCTVERSION 0,10,5,0 + FILEVERSION 0,10,6,0 + PRODUCTVERSION 0,10,6,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -43,10 +43,10 @@ BEGIN BEGIN VALUE "CompanyName", "Telegram Messenger LLP" VALUE "FileDescription", "Telegram Updater" - VALUE "FileVersion", "0.10.5.0" + VALUE "FileVersion", "0.10.6.0" VALUE "LegalCopyright", "Copyright (C) 2014-2016" VALUE "ProductName", "Telegram Desktop" - VALUE "ProductVersion", "0.10.5.0" + VALUE "ProductVersion", "0.10.6.0" END END BLOCK "VarFileInfo" diff --git a/Telegram/SourceFiles/_other/updater_osx.m b/Telegram/SourceFiles/_other/updater_osx.m index 2c532fdd56..07e017aee6 100644 --- a/Telegram/SourceFiles/_other/updater_osx.m +++ b/Telegram/SourceFiles/_other/updater_osx.m @@ -160,6 +160,21 @@ int main(int argc, const char * argv[]) { writeLog([@"Starting update files iteration, path: " stringByAppendingString: srcEnum]); + // Take the Updater (this currently running binary) from the place where it was placed by Telegram + // and copy it to the folder with the new version of the app (ready), + // so it won't be deleted when we will clear the "Telegram.app/Contents" folder. + NSString *oldVersionUpdaterPath = [appDirFull stringByAppendingString: @"/Contents/Frameworks/Updater" ]; + NSString *newVersionUpdaterPath = [srcEnum stringByAppendingString:[[NSArray arrayWithObjects:@"/", appName, @"/Contents/Frameworks/Updater", nil] componentsJoinedByString:@""]]; + writeLog([[NSArray arrayWithObjects: @"Copying Updater from old path ", oldVersionUpdaterPath, @" to new path ", newVersionUpdaterPath, nil] componentsJoinedByString:@""]); + if (![fileManager fileExistsAtPath:newVersionUpdaterPath]) { + if (![fileManager copyItemAtPath:oldVersionUpdaterPath toPath:newVersionUpdaterPath error:nil]) { + writeLog([[NSArray arrayWithObjects: @"Failed to copy file from ", oldVersionUpdaterPath, @" to ", newVersionUpdaterPath, nil] componentsJoinedByString:@""]); + delFolder(); + return -1; + } + } + + NSString *contentsPath = [appDirFull stringByAppendingString: @"/Contents"]; writeLog([[NSArray arrayWithObjects: @"Clearing dir ", contentsPath, nil] componentsJoinedByString:@""]); if (![fileManager removeItemAtPath:contentsPath error:nil]) { diff --git a/Telegram/SourceFiles/core/version.h b/Telegram/SourceFiles/core/version.h index a2627a7ce4..1e2acd471c 100644 --- a/Telegram/SourceFiles/core/version.h +++ b/Telegram/SourceFiles/core/version.h @@ -24,7 +24,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org #define BETA_VERSION_MACRO (0ULL) -constexpr int AppVersion = 10005; -constexpr str_const AppVersionStr = "0.10.5"; +constexpr int AppVersion = 10006; +constexpr str_const AppVersionStr = "0.10.6"; constexpr bool AppAlphaVersion = false; constexpr uint64 AppBetaVersion = BETA_VERSION_MACRO; diff --git a/Telegram/build/version b/Telegram/build/version index 2014aa4459..a1bfbfb6ed 100644 --- a/Telegram/build/version +++ b/Telegram/build/version @@ -1,6 +1,6 @@ -AppVersion 10005 +AppVersion 10006 AppVersionStrMajor 0.10 -AppVersionStrSmall 0.10.5 -AppVersionStr 0.10.5 +AppVersionStrSmall 0.10.6 +AppVersionStr 0.10.6 AlphaChannel 0 BetaVersion 0 From 8660ab555bc759a008658a78981a6e3ea06502d5 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 13 Sep 2016 17:07:30 +0300 Subject: [PATCH 5/9] Stable 0.10.6 for Linux: dynamic xcb link, cmake dependencies fixed. --- Telegram/gyp/PrecompiledHeader.cmake | 4 ++++ Telegram/gyp/qt.gypi | 5 +---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Telegram/gyp/PrecompiledHeader.cmake b/Telegram/gyp/PrecompiledHeader.cmake index 8b899e4676..fc189e4a1b 100644 --- a/Telegram/gyp/PrecompiledHeader.cmake +++ b/Telegram/gyp/PrecompiledHeader.cmake @@ -102,6 +102,8 @@ function(add_precompiled_header _target _input) OUTPUT "${_pchfile}" COMMAND "${CMAKE_COMMAND}" -E copy "${_pch_header}" "${_pchfile}" DEPENDS "${_pch_header}" + IMPLICIT_DEPENDS CXX "${_pch_header}" + IMPLICIT_DEPENDS C "${_pch_header}" COMMENT "Updating ${_name}") if(_source_for_c_flags) @@ -112,6 +114,7 @@ function(add_precompiled_header _target _input) OUTPUT "${_output_c}" COMMAND "${CMAKE_C_COMPILER}" ${_compiler_FLAGS} -x c-header -o "${_output_c}" -c "${_pchfile}" DEPENDS "${_pchfile}" "${_pch_c_flags_file}" + IMPLICIT_DEPENDS C "${_pch_header}" COMMENT "Precompiling ${_name} for ${_target} (C)") endif() if(_source_for_cpp_flags) @@ -122,6 +125,7 @@ function(add_precompiled_header _target _input) OUTPUT "${_output_cxx}" COMMAND "${CMAKE_CXX_COMPILER}" ${_compiler_FLAGS} -x c++-header -o "${_output_cxx}" -c "${_pchfile}" DEPENDS "${_pchfile}" "${_pch_cpp_flags_file}" + IMPLICIT_DEPENDS CXX "${_pch_header}" COMMENT "Precompiling ${_name} for ${_target} (C++)") endif() diff --git a/Telegram/gyp/qt.gypi b/Telegram/gyp/qt.gypi index ea6f0f55b7..b82f83325a 100644 --- a/Telegram/gyp/qt.gypi +++ b/Telegram/gyp/qt.gypi @@ -101,7 +101,6 @@ 'fontconfig', 'expat', 'freetype', - 'xcb', 'xcb-shm', 'xcb-xfixes', 'xcb-render', @@ -202,12 +201,10 @@ ], 'conditions': [ [ 'build_linux', { - 'library_dirs': [ - '<(qt_loc)/plugins/platforms/xcb/xcb-static', - ], 'libraries': [ '/usr/local/lib/libxkbcommon.a', '<@(qt_libs_release)', + 'xcb', 'X11', 'X11-xcb', 'dbus-1', From a7b692e8edf4b855d2096c9abd24179866bfb279 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 14 Sep 2016 19:05:40 +0300 Subject: [PATCH 6/9] PR #1954 improvements. Inverted the direction of move-by-wheel, so that scrolling down will move you forward through the photos or documents overview. Added an accumulation of the scroll amount so that you don't zoom or skip photos each time a (possibly very frequent) wheel event fires. --- Telegram/SourceFiles/mediaview.cpp | 31 ++++++++++++++++++------------ Telegram/SourceFiles/mediaview.h | 2 ++ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/Telegram/SourceFiles/mediaview.cpp b/Telegram/SourceFiles/mediaview.cpp index bf2b6a1f7c..635c9166cd 100644 --- a/Telegram/SourceFiles/mediaview.cpp +++ b/Telegram/SourceFiles/mediaview.cpp @@ -1890,20 +1890,27 @@ void MediaView::keyPressEvent(QKeyEvent *e) { } void MediaView::wheelEvent(QWheelEvent *e) { - if (e->delta() < 0) { - if (e->modifiers().testFlag(Qt::ControlModifier)) { - zoomOut(); - } else { - if (e->source() == Qt::MouseEventNotSynthesized) { - moveToNext(-1); + constexpr auto step = static_cast(QWheelEvent::DefaultDeltasPerStep); + + _verticalWheelDelta += e->angleDelta().y(); + while (qAbs(_verticalWheelDelta) >= step) { + if (_verticalWheelDelta < 0) { + _verticalWheelDelta += step; + if (e->modifiers().testFlag(Qt::ControlModifier)) { + zoomOut(); + } else { + if (e->source() == Qt::MouseEventNotSynthesized) { + moveToNext(1); + } } - } - } else { - if (e->modifiers().testFlag(Qt::ControlModifier)) { - zoomIn(); } else { - if (e->source() == Qt::MouseEventNotSynthesized) { - moveToNext(1); + _verticalWheelDelta -= step; + if (e->modifiers().testFlag(Qt::ControlModifier)) { + zoomIn(); + } else { + if (e->source() == Qt::MouseEventNotSynthesized) { + moveToNext(-1); + } } } } diff --git a/Telegram/SourceFiles/mediaview.h b/Telegram/SourceFiles/mediaview.h index 3f8756b390..ff1e85b6ad 100644 --- a/Telegram/SourceFiles/mediaview.h +++ b/Telegram/SourceFiles/mediaview.h @@ -322,6 +322,8 @@ private: typedef QMap ShowingOpacities; ShowingOpacities _animOpacities; + int _verticalWheelDelta = 0; + void updateOverRect(OverState state); bool updateOverState(OverState newState); float64 overLevel(OverState control) const; From 96202f775cc3e75f2406b1f65b0a9bbeb0de1507 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 15 Sep 2016 13:26:31 +0300 Subject: [PATCH 7/9] Fixed settings reset in case of tiled background. --- Telegram/SourceFiles/localstorage.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Telegram/SourceFiles/localstorage.cpp b/Telegram/SourceFiles/localstorage.cpp index 3cceb24e43..848fbedb5a 100644 --- a/Telegram/SourceFiles/localstorage.cpp +++ b/Telegram/SourceFiles/localstorage.cpp @@ -581,6 +581,7 @@ namespace { FileKey _backgroundKey = 0; bool _backgroundWasRead = false; + bool _readingUserSettings = false; FileKey _userSettingsKey = 0; FileKey _recentHashtagsAndBotsKey = 0; bool _recentHashtagsAndBotsWereRead = false; @@ -1548,6 +1549,12 @@ namespace { } void _writeUserSettings() { + if (_readingUserSettings) { + LOG(("App Error: attempt to write settings while reading them!")); + return; + } + LOG(("App Info: writing encrypted user settings...")); + if (!_userSettingsKey) { _userSettingsKey = genKey(); _mapChanged = true; @@ -1622,22 +1629,28 @@ namespace { void _readUserSettings() { FileReadDescriptor userSettings; if (!readEncryptedFile(userSettings, _userSettingsKey)) { + LOG(("App Info: could not read encrypted user settings...")); _readOldUserSettings(); return _writeUserSettings(); } LOG(("App Info: reading encrypted user settings...")); + _readingUserSettings = true; while (!userSettings.stream.atEnd()) { quint32 blockId; userSettings.stream >> blockId; if (!_checkStreamStatus(userSettings.stream)) { + _readingUserSettings = false; return _writeUserSettings(); } if (!_readSetting(blockId, userSettings.stream, userSettings.version)) { + _readingUserSettings = false; return _writeUserSettings(); } } + _readingUserSettings = false; + LOG(("App Info: encrypted user settings read.")); } void _writeMtpData() { From 708bf688ea468a0c76ae356e1e67595f4c60de46 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 15 Sep 2016 13:50:43 +0300 Subject: [PATCH 8/9] Xcode 8 supported. Fixed quit by Cmd+Q in case of macOS fullscreen window. --- Telegram/SourceFiles/application.cpp | 7 +++++++ Telegram/SourceFiles/application.h | 9 ++------- Telegram/gyp/qt.gypi | 4 +++- Telegram/gyp/refresh.sh | 4 ++-- Telegram/gyp/utils.gyp | 22 +++++++++++++++------- 5 files changed, 29 insertions(+), 17 deletions(-) diff --git a/Telegram/SourceFiles/application.cpp b/Telegram/SourceFiles/application.cpp index 27d75fcea1..3cb326d6cb 100644 --- a/Telegram/SourceFiles/application.cpp +++ b/Telegram/SourceFiles/application.cpp @@ -126,6 +126,13 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv) { } } +bool Application::event(QEvent *e) { + if (e->type() == QEvent::Close) { + App::quit(); + } + return QApplication::event(e); +} + void Application::socketConnected() { LOG(("Socket connected, this is not the first application instance, sending show command...")); _secondInstance = true; diff --git a/Telegram/SourceFiles/application.h b/Telegram/SourceFiles/application.h index 025164cd64..60c2d520ba 100644 --- a/Telegram/SourceFiles/application.h +++ b/Telegram/SourceFiles/application.h @@ -28,12 +28,12 @@ class Application : public QApplication { Q_OBJECT public: - Application(int &argc, char **argv); + bool event(QEvent *e) override; + // Single instance application public slots: - void socketConnected(); void socketError(QLocalSocket::LocalSocketError e); void socketDisconnected(); @@ -48,7 +48,6 @@ public slots: void closeApplication(); // will be done in aboutToQuit() private: - typedef QPair LocalClient; typedef QList LocalClients; @@ -64,7 +63,6 @@ private: // Autoupdating public: - void startUpdateCheck(bool forceWait); void stopUpdate(); @@ -78,7 +76,6 @@ public: int32 updatingReady(); signals: - void updateChecking(); void updateLatest(); void updateProgress(qint64 ready, qint64 total); @@ -86,7 +83,6 @@ signals: void updateFailed(); public slots: - void updateCheck(); void updateGotCurrent(); @@ -96,7 +92,6 @@ public slots: void onUpdateFailed(); private: - SingleTimer _updateCheckTimer; QNetworkReply *_updateReply = nullptr; QNetworkAccessManager _updateManager; diff --git a/Telegram/gyp/qt.gypi b/Telegram/gyp/qt.gypi index b82f83325a..5ef32496ac 100644 --- a/Telegram/gyp/qt.gypi +++ b/Telegram/gyp/qt.gypi @@ -191,7 +191,6 @@ '<(qt_loc)/plugins/bearer', '<(qt_loc)/plugins/platforms', '<(qt_loc)/plugins/imageformats', - '<(qt_loc)/plugins/platforminputcontexts', ], 'defines': [ 'QT_WIDGETS_LIB', @@ -201,6 +200,9 @@ ], 'conditions': [ [ 'build_linux', { + 'library_dirs': [ + '<(qt_loc)/plugins/platforminputcontexts', + ], 'libraries': [ '/usr/local/lib/libxkbcommon.a', '<@(qt_libs_release)', diff --git a/Telegram/gyp/refresh.sh b/Telegram/gyp/refresh.sh index 39337e4d04..5a456ce284 100755 --- a/Telegram/gyp/refresh.sh +++ b/Telegram/gyp/refresh.sh @@ -11,7 +11,7 @@ if [ "$MySystem" == "Linux" ]; then ../../../Libraries/gyp/gyp --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp --format=cmake cd ../../out/Debug ../../../Libraries/cmake-3.6.2/bin/cmake . - cd ../Release + cd ../Release ../../../Libraries/cmake-3.6.2/bin/cmake . cd ../../Telegram/gyp else @@ -19,7 +19,7 @@ else #gyp --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp --format=xcode-ninja #gyp --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp --format=xcode # use patched gyp with Xcode project generator - ../../../Libraries/gyp/gyp --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp --format=xcode + ../../../Libraries/gyp/gyp --depth=. --generator-output=../.. -Goutput_dir=out Telegram.gyp -Gxcode_upgrade_check_project_version=800 --format=xcode fi cd ../.. diff --git a/Telegram/gyp/utils.gyp b/Telegram/gyp/utils.gyp index 117c87aa51..209c737043 100644 --- a/Telegram/gyp/utils.gyp +++ b/Telegram/gyp/utils.gyp @@ -91,14 +91,22 @@ 'lzma', ], }], + [ 'build_mac', { + 'include_dirs': [ + '<(libs_loc)/openssl-xcode/include' + ], + 'library_dirs': [ + '<(libs_loc)/openssl-xcode', + ], + 'xcode_settings': { + 'OTHER_LDFLAGS': [ + '-lssl', + '-lcrypto', + '-llzma', + ], + }, + }], ], - 'xcode_settings': { - 'OTHER_LDFLAGS': [ - '-lssl', - '-lcrypto', - '-llzma', - ], - }, 'include_dirs': [ '<(src_loc)', '<(libs_loc)/lzma/C', From c00456e12e3477e0a20611d57020626001a0b897 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 15 Sep 2016 14:08:45 +0300 Subject: [PATCH 9/9] Fixed build for OS X 10.6 and 10.7 on Qt 5.3 and libstdc++. --- Telegram/SourceFiles/history.cpp | 2 ++ Telegram/SourceFiles/mediaview.cpp | 8 ++++++++ Telegram/SourceFiles/mtproto/file_download.cpp | 4 +++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp index 4e66631135..b1f7516453 100644 --- a/Telegram/SourceFiles/history.cpp +++ b/Telegram/SourceFiles/history.cpp @@ -5896,7 +5896,9 @@ void LocationManager::init() { App::setProxySettings(*manager); connect(manager, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), this, SLOT(onFailed(QNetworkReply*))); +#ifndef OS_MAC_OLD connect(manager, SIGNAL(sslErrors(QNetworkReply*, const QList&)), this, SLOT(onFailed(QNetworkReply*))); +#endif // OS_MAC_OLD connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*))); if (black) { diff --git a/Telegram/SourceFiles/mediaview.cpp b/Telegram/SourceFiles/mediaview.cpp index 635c9166cd..77eb491d78 100644 --- a/Telegram/SourceFiles/mediaview.cpp +++ b/Telegram/SourceFiles/mediaview.cpp @@ -1890,7 +1890,11 @@ void MediaView::keyPressEvent(QKeyEvent *e) { } void MediaView::wheelEvent(QWheelEvent *e) { +#ifdef OS_MAC_OLD + constexpr auto step = 120; +#else // OS_MAC_OLD constexpr auto step = static_cast(QWheelEvent::DefaultDeltasPerStep); +#endif // OS_MAC_OLD _verticalWheelDelta += e->angleDelta().y(); while (qAbs(_verticalWheelDelta) >= step) { @@ -1899,18 +1903,22 @@ void MediaView::wheelEvent(QWheelEvent *e) { if (e->modifiers().testFlag(Qt::ControlModifier)) { zoomOut(); } else { +#ifndef OS_MAC_OLD if (e->source() == Qt::MouseEventNotSynthesized) { moveToNext(1); } +#endif // OS_MAC_OLD } } else { _verticalWheelDelta -= step; if (e->modifiers().testFlag(Qt::ControlModifier)) { zoomIn(); } else { +#ifndef OS_MAC_OLD if (e->source() == Qt::MouseEventNotSynthesized) { moveToNext(-1); } +#endif // OS_MAC_OLD } } } diff --git a/Telegram/SourceFiles/mtproto/file_download.cpp b/Telegram/SourceFiles/mtproto/file_download.cpp index 34e0a5f2f1..e4623dbc97 100644 --- a/Telegram/SourceFiles/mtproto/file_download.cpp +++ b/Telegram/SourceFiles/mtproto/file_download.cpp @@ -818,7 +818,9 @@ WebLoadManager::WebLoadManager(QThread *thread) { connect(this, SIGNAL(error(webFileLoader*)), _webLoadMainManager, SLOT(error(webFileLoader*))); connect(&_manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)), this, SLOT(onFailed(QNetworkReply*))); +#ifndef OS_MAC_OLD connect(&_manager, SIGNAL(sslErrors(QNetworkReply*,const QList&)), this, SLOT(onFailed(QNetworkReply*))); +#endif // OS_MAC_OLD } void WebLoadManager::append(webFileLoader *loader, const QString &url) { @@ -1108,4 +1110,4 @@ void notifyImageLoaded() { } } // namespace internal -} \ No newline at end of file +}