forked from pool/telegram-desktop
2499b63875
Use system qt to build. OBS-URL: https://build.opensuse.org/request/show/560896 OBS-URL: https://build.opensuse.org/package/show/server:messaging/telegram-desktop?expand=0&rev=31
263 lines
10 KiB
Diff
263 lines
10 KiB
Diff
diff --git a/Telegram/Resources/qrc/telegram_linux.qrc b/Telegram/Resources/qrc/telegram_linux.qrc
|
|
index 0554fa179..3ea027406 100644
|
|
--- a/Telegram/Resources/qrc/telegram_linux.qrc
|
|
+++ b/Telegram/Resources/qrc/telegram_linux.qrc
|
|
@@ -1,5 +1,4 @@
|
|
<RCC>
|
|
<qresource prefix="/qt">
|
|
- <file alias="etc/qt.conf">../etc/qt_linux.conf</file>
|
|
</qresource>
|
|
</RCC>
|
|
diff --git a/Telegram/SourceFiles/core/launcher.cpp b/Telegram/SourceFiles/core/launcher.cpp
|
|
index c05915976..9b19941df 100644
|
|
--- a/Telegram/SourceFiles/core/launcher.cpp
|
|
+++ b/Telegram/SourceFiles/core/launcher.cpp
|
|
@@ -43,9 +43,10 @@ void Launcher::init() {
|
|
|
|
QCoreApplication::setApplicationName(qsl("TelegramDesktop"));
|
|
|
|
-#ifndef OS_MAC_OLD
|
|
+#if !defined(Q_OS_MAC) && QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
|
|
+ // Retina display support is working fine, others are not.
|
|
QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling, true);
|
|
-#endif // OS_MAC_OLD
|
|
+#endif // not defined Q_OS_MAC and QT_VERSION >= 5.6.0
|
|
|
|
initHook();
|
|
}
|
|
@@ -63,6 +64,13 @@ int Launcher::exec() {
|
|
Logs::start(this); // must be started before Platform is started
|
|
Platform::start(); // must be started before QApplication is created
|
|
|
|
+ // I don't know why path is not in QT_PLUGIN_PATH by default
|
|
+ QCoreApplication::addLibraryPath("/usr/lib/qt/plugins");
|
|
+ // without this Telegram doesn't start on Ubuntu 17.04 due GTK errors
|
|
+ setenv("QT_STYLE_OVERRIDE", "qwerty", false);
|
|
+ // Telegram doesn't start when extraordinary theme is set, see launchpad.net/bugs/1680943
|
|
+ unsetenv("QT_QPA_PLATFORMTHEME");
|
|
+
|
|
auto result = 0;
|
|
{
|
|
Application app(this, _argc, _argv);
|
|
diff --git a/Telegram/SourceFiles/platform/linux/linux_libs.h b/Telegram/SourceFiles/platform/linux/linux_libs.h
|
|
index e9e349be9..d82963fa2 100644
|
|
--- a/Telegram/SourceFiles/platform/linux/linux_libs.h
|
|
+++ b/Telegram/SourceFiles/platform/linux/linux_libs.h
|
|
@@ -30,7 +30,7 @@ extern "C" {
|
|
} // extern "C"
|
|
|
|
#ifndef TDESKTOP_DISABLE_UNITY_INTEGRATION
|
|
-#include <unity/unity/unity.h>
|
|
+typedef void UnityLauncherEntry;
|
|
#endif // !TDESKTOP_DISABLE_UNITY_INTEGRATION
|
|
#endif // !TDESKTOP_DISABLE_GTK_INTEGRATION
|
|
|
|
diff --git a/Telegram/SourceFiles/qt_functions.cpp b/Telegram/SourceFiles/qt_functions.cpp
|
|
new file mode 100644
|
|
index 000000000..4a722b8d7
|
|
--- /dev/null
|
|
+++ b/Telegram/SourceFiles/qt_functions.cpp
|
|
@@ -0,0 +1,94 @@
|
|
+/****************************************************************************
|
|
+**
|
|
+** Copyright (C) 2015 The Qt Company Ltd.
|
|
+** Contact: http://www.qt.io/licensing/
|
|
+**
|
|
+** This file contains some parts of the Qt Toolkit.
|
|
+**
|
|
+** $QT_BEGIN_LICENSE:LGPL21$
|
|
+** Commercial License Usage
|
|
+** Licensees holding valid commercial Qt licenses may use this file in
|
|
+** accordance with the commercial license agreement provided with the
|
|
+** Software or, alternatively, in accordance with the terms contained in
|
|
+** a written agreement between you and The Qt Company. For licensing terms
|
|
+** and conditions see http://www.qt.io/terms-conditions. For further
|
|
+** information use the contact form at http://www.qt.io/contact-us.
|
|
+**
|
|
+** GNU Lesser General Public License Usage
|
|
+** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
+** General Public License version 2.1 or version 3 as published by the Free
|
|
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
|
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
|
+** following information to ensure the GNU Lesser General Public License
|
|
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
|
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
+**
|
|
+** As a special exception, The Qt Company gives you certain additional
|
|
+** rights. These rights are described in The Qt Company LGPL Exception
|
|
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
+**
|
|
+** $QT_END_LICENSE$
|
|
+**
|
|
+****************************************************************************/
|
|
+
|
|
+/* TODO: find a dynamic library with these symbols. */
|
|
+
|
|
+/* Debian maintainer: this function is taken from qfiledialog.cpp */
|
|
+/*
|
|
+ Makes a list of filters from ;;-separated text.
|
|
+ Used by the mac and windows implementations
|
|
+*/
|
|
+QStringList qt_make_filter_list(const QString &filter)
|
|
+{
|
|
+ QString f(filter);
|
|
+
|
|
+ if (f.isEmpty())
|
|
+ return QStringList();
|
|
+
|
|
+ QString sep(QLatin1String(";;"));
|
|
+ int i = f.indexOf(sep, 0);
|
|
+ if (i == -1) {
|
|
+ if (f.indexOf(QLatin1Char('\n'), 0) != -1) {
|
|
+ sep = QLatin1Char('\n');
|
|
+ i = f.indexOf(sep, 0);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return f.split(sep);
|
|
+}
|
|
+
|
|
+/* Debian maintainer: this constructor is taken from qtextengine.cpp for TextPainter::drawLine */
|
|
+QTextItemInt::QTextItemInt(const QGlyphLayout &g, QFont *font, const QChar *chars_, int numChars, QFontEngine *fe, const QTextCharFormat &format)
|
|
+ : flags(0), justified(false), underlineStyle(QTextCharFormat::NoUnderline), charFormat(format),
|
|
+ num_chars(numChars), chars(chars_), logClusters(0), f(font), glyphs(g), fontEngine(fe)
|
|
+{
|
|
+}
|
|
+
|
|
+/* Debian maintainer: this method is also taken from qtextengine.cpp */
|
|
+// Fix up flags and underlineStyle with given info
|
|
+void QTextItemInt::initWithScriptItem(const QScriptItem &si)
|
|
+{
|
|
+ // explicitly initialize flags so that initFontAttributes can be called
|
|
+ // multiple times on the same TextItem
|
|
+ flags = 0;
|
|
+ if (si.analysis.bidiLevel %2)
|
|
+ flags |= QTextItem::RightToLeft;
|
|
+ ascent = si.ascent;
|
|
+ descent = si.descent;
|
|
+
|
|
+ if (charFormat.hasProperty(QTextFormat::TextUnderlineStyle)) {
|
|
+ underlineStyle = charFormat.underlineStyle();
|
|
+ } else if (charFormat.boolProperty(QTextFormat::FontUnderline)
|
|
+ || f->d->underline) {
|
|
+ underlineStyle = QTextCharFormat::SingleUnderline;
|
|
+ }
|
|
+
|
|
+ // compat
|
|
+ if (underlineStyle == QTextCharFormat::SingleUnderline)
|
|
+ flags |= QTextItem::Underline;
|
|
+
|
|
+ if (f->d->overline || charFormat.fontOverline())
|
|
+ flags |= QTextItem::Overline;
|
|
+ if (f->d->strikeOut || charFormat.fontStrikeOut())
|
|
+ flags |= QTextItem::StrikeOut;
|
|
+}
|
|
diff --git a/Telegram/SourceFiles/qt_static_plugins.cpp b/Telegram/SourceFiles/qt_static_plugins.cpp
|
|
index b975c7a84..f2f876b30 100644
|
|
--- a/Telegram/SourceFiles/qt_static_plugins.cpp
|
|
+++ b/Telegram/SourceFiles/qt_static_plugins.cpp
|
|
@@ -28,13 +28,4 @@ Q_IMPORT_PLUGIN(QWebpPlugin)
|
|
Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin)
|
|
Q_IMPORT_PLUGIN(QGenericEnginePlugin)
|
|
#elif defined Q_OS_LINUX // Q_OS_WIN | Q_OS_MAC
|
|
-Q_IMPORT_PLUGIN(QWebpPlugin)
|
|
-Q_IMPORT_PLUGIN(QXcbIntegrationPlugin)
|
|
-Q_IMPORT_PLUGIN(QConnmanEnginePlugin)
|
|
-Q_IMPORT_PLUGIN(QGenericEnginePlugin)
|
|
-Q_IMPORT_PLUGIN(QNetworkManagerEnginePlugin)
|
|
-Q_IMPORT_PLUGIN(QComposePlatformInputContextPlugin)
|
|
-Q_IMPORT_PLUGIN(QIbusPlatformInputContextPlugin)
|
|
-Q_IMPORT_PLUGIN(QFcitxPlatformInputContextPlugin)
|
|
-Q_IMPORT_PLUGIN(QHimePlatformInputContextPlugin)
|
|
#endif // Q_OS_WIN | Q_OS_MAC | Q_OS_LINUX
|
|
diff --git a/Telegram/SourceFiles/ui/text/text.cpp b/Telegram/SourceFiles/ui/text/text.cpp
|
|
index 710277fe2..5eb4465d6 100644
|
|
--- a/Telegram/SourceFiles/ui/text/text.cpp
|
|
+++ b/Telegram/SourceFiles/ui/text/text.cpp
|
|
@@ -1707,11 +1707,11 @@ private:
|
|
if (item == -1)
|
|
return;
|
|
|
|
-#ifdef OS_MAC_OLD
|
|
+#if defined(OS_MAC_OLD) || QT_VERSION < QT_VERSION_CHECK(5, 6, 0)
|
|
auto end = _e->findItem(line.from + line.length - 1);
|
|
-#else // OS_MAC_OLD
|
|
+#else
|
|
auto end = _e->findItem(line.from + line.length - 1, item);
|
|
-#endif // OS_MAC_OLD
|
|
+#endif
|
|
|
|
auto blockIndex = _lineStartBlock;
|
|
auto currentBlock = _t->_blocks[blockIndex].get();
|
|
diff --git a/Telegram/SourceFiles/ui/text/text_block.cpp b/Telegram/SourceFiles/ui/text/text_block.cpp
|
|
index e435b50dc..893496b4f 100644
|
|
--- a/Telegram/SourceFiles/ui/text/text_block.cpp
|
|
+++ b/Telegram/SourceFiles/ui/text/text_block.cpp
|
|
@@ -332,7 +332,7 @@ TextBlock::TextBlock(const style::font &font, const QString &str, QFixed minResi
|
|
CrashReports::SetAnnotationRef("CrashString", &part);
|
|
|
|
QStackTextEngine engine(part, blockFont->f);
|
|
- QTextLayout layout(&engine);
|
|
+ QTextLayout layout(part, blockFont->f);
|
|
layout.beginLayout();
|
|
layout.createLine();
|
|
|
|
diff --git a/Telegram/SourceFiles/ui/twidget.cpp b/Telegram/SourceFiles/ui/twidget.cpp
|
|
index a78af59dd..feee450ea 100644
|
|
--- a/Telegram/SourceFiles/ui/twidget.cpp
|
|
+++ b/Telegram/SourceFiles/ui/twidget.cpp
|
|
@@ -234,9 +234,9 @@ void sendSynteticMouseEvent(QWidget *widget, QEvent::Type type, Qt::MouseButton
|
|
, button
|
|
, QGuiApplication::mouseButtons() | button
|
|
, QGuiApplication::keyboardModifiers()
|
|
-#ifndef OS_MAC_OLD
|
|
+#if !defined(OS_MAC_OLD) && QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
|
|
, Qt::MouseEventSynthesizedByApplication
|
|
-#endif // OS_MAC_OLD
|
|
+#endif
|
|
);
|
|
ev.setTimestamp(getms());
|
|
QGuiApplication::sendEvent(windowHandle, &ev);
|
|
diff --git a/Telegram/gyp/PrecompiledHeader.cmake b/Telegram/gyp/PrecompiledHeader.cmake
|
|
index 5d6830e96..c3f08d3f6 100644
|
|
--- a/Telegram/gyp/PrecompiledHeader.cmake
|
|
+++ b/Telegram/gyp/PrecompiledHeader.cmake
|
|
@@ -112,7 +112,7 @@ function(add_precompiled_header _target _input)
|
|
set(_compiler_FLAGS "@${_pch_c_flags_file}")
|
|
add_custom_command(
|
|
OUTPUT "${_output_c}"
|
|
- COMMAND "${CMAKE_C_COMPILER}" ${_compiler_FLAGS} -x c-header -o "${_output_c}" -c "${_pchfile}"
|
|
+ COMMAND "${CMAKE_C_COMPILER}" "$(C_DEFINES)" "$(C_INCLUDES)" "$(C_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)")
|
|
@@ -123,7 +123,7 @@ function(add_precompiled_header _target _input)
|
|
set(_compiler_FLAGS "@${_pch_cpp_flags_file}")
|
|
add_custom_command(
|
|
OUTPUT "${_output_cxx}"
|
|
- COMMAND "${CMAKE_CXX_COMPILER}" ${_compiler_FLAGS} -x c++-header -o "${_output_cxx}" -c "${_pchfile}"
|
|
+ COMMAND "${CMAKE_CXX_COMPILER}" "$(CXX_DEFINES)" "$(CXX_INCLUDES)" "$(CXX_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++)")
|
|
diff --git a/Telegram/gyp/telegram_sources.txt b/Telegram/gyp/telegram_sources.txt
|
|
index bbf2b2ade..2d380810f 100644
|
|
--- a/Telegram/gyp/telegram_sources.txt
|
|
+++ b/Telegram/gyp/telegram_sources.txt
|
|
@@ -693,14 +693,7 @@
|
|
<(emoji_suggestions_loc)/emoji_suggestions.cpp
|
|
<(emoji_suggestions_loc)/emoji_suggestions.h
|
|
|
|
-platforms: !win
|
|
-<(minizip_loc)/crypt.h
|
|
-<(minizip_loc)/ioapi.c
|
|
-<(minizip_loc)/ioapi.h
|
|
-<(minizip_loc)/zip.c
|
|
-<(minizip_loc)/zip.h
|
|
-<(minizip_loc)/unzip.c
|
|
-<(minizip_loc)/unzip.h
|
|
+<(src_loc)/qt_functions.cpp
|
|
|
|
platforms: mac
|
|
<(sp_media_key_tap_loc)/SPMediaKeyTap.m
|