Updated TDesktop sources to 2.5.1+56728a0
This commit is contained in:
commit
30dfff483b
11 changed files with 157 additions and 90 deletions
|
|
@ -72,7 +72,6 @@ PRIVATE
|
||||||
if (LINUX)
|
if (LINUX)
|
||||||
target_link_libraries(Telegram
|
target_link_libraries(Telegram
|
||||||
PRIVATE
|
PRIVATE
|
||||||
desktop-app::external_xcb_screensaver
|
|
||||||
desktop-app::external_xcb
|
desktop-app::external_xcb
|
||||||
desktop-app::external_glib
|
desktop-app::external_glib
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1343,37 +1343,56 @@ void PeerListContent::mousePressReleased(Qt::MouseButton button) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PeerListContent::contextMenuEvent(QContextMenuEvent *e) {
|
void PeerListContent::showRowMenu(
|
||||||
|
not_null<PeerListRow*> row,
|
||||||
|
Fn<void(not_null<Ui::PopupMenu*>)> destroyed) {
|
||||||
|
showRowMenu(findRowIndex(row), QCursor::pos(), std::move(destroyed));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PeerListContent::showRowMenu(
|
||||||
|
RowIndex index,
|
||||||
|
QPoint globalPos,
|
||||||
|
Fn<void(not_null<Ui::PopupMenu*>)> destroyed) {
|
||||||
if (_contextMenu) {
|
if (_contextMenu) {
|
||||||
_contextMenu->deleteLater();
|
_contextMenu->setDestroyedCallback(nullptr);
|
||||||
_contextMenu = nullptr;
|
_contextMenu = nullptr;
|
||||||
}
|
}
|
||||||
setContexted(Selected());
|
setContexted(Selected());
|
||||||
if (e->reason() == QContextMenuEvent::Mouse) {
|
|
||||||
handleMouseMove(e->globalPos());
|
|
||||||
}
|
|
||||||
|
|
||||||
setContexted(_selected);
|
|
||||||
if (_pressButton != Qt::LeftButton) {
|
if (_pressButton != Qt::LeftButton) {
|
||||||
mousePressReleased(_pressButton);
|
mousePressReleased(_pressButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (const auto row = getRow(_contexted.index)) {
|
const auto row = getRow(index);
|
||||||
|
if (!row) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
_contextMenu = _controller->rowContextMenu(this, row);
|
_contextMenu = _controller->rowContextMenu(this, row);
|
||||||
if (_contextMenu) {
|
const auto raw = _contextMenu.get();
|
||||||
_contextMenu->setDestroyedCallback(crl::guard(
|
if (!raw) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
setContexted({ index, false });
|
||||||
|
raw->setDestroyedCallback(crl::guard(
|
||||||
this,
|
this,
|
||||||
[this] {
|
[=] {
|
||||||
setContexted(Selected());
|
setContexted(Selected());
|
||||||
handleMouseMove(QCursor::pos());
|
handleMouseMove(QCursor::pos());
|
||||||
}));
|
if (destroyed) {
|
||||||
_contextMenu->popup(e->globalPos());
|
destroyed(raw);
|
||||||
e->accept();
|
|
||||||
} else {
|
|
||||||
setContexted(Selected());
|
|
||||||
}
|
}
|
||||||
} else {
|
}));
|
||||||
setContexted(Selected());
|
raw->popup(globalPos);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PeerListContent::contextMenuEvent(QContextMenuEvent *e) {
|
||||||
|
if (e->reason() == QContextMenuEvent::Mouse) {
|
||||||
|
handleMouseMove(e->globalPos());
|
||||||
|
}
|
||||||
|
if (showRowMenu(_selected.index, e->globalPos())) {
|
||||||
|
e->accept();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -313,6 +313,9 @@ public:
|
||||||
peerListFinishSelectedRowsBunch();
|
peerListFinishSelectedRowsBunch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void peerListShowRowMenu(
|
||||||
|
not_null<PeerListRow*> row,
|
||||||
|
Fn<void(not_null<Ui::PopupMenu*>)> destroyed) = 0;
|
||||||
virtual int peerListSelectedRowsCount() = 0;
|
virtual int peerListSelectedRowsCount() = 0;
|
||||||
virtual std::unique_ptr<PeerListState> peerListSaveState() const = 0;
|
virtual std::unique_ptr<PeerListState> peerListSaveState() const = 0;
|
||||||
virtual void peerListRestoreState(
|
virtual void peerListRestoreState(
|
||||||
|
|
@ -570,6 +573,10 @@ public:
|
||||||
std::unique_ptr<PeerListState> saveState() const;
|
std::unique_ptr<PeerListState> saveState() const;
|
||||||
void restoreState(std::unique_ptr<PeerListState> state);
|
void restoreState(std::unique_ptr<PeerListState> state);
|
||||||
|
|
||||||
|
void showRowMenu(
|
||||||
|
not_null<PeerListRow*> row,
|
||||||
|
Fn<void(not_null<Ui::PopupMenu*>)> destroyed);
|
||||||
|
|
||||||
auto scrollToRequests() const {
|
auto scrollToRequests() const {
|
||||||
return _scrollToRequests.events();
|
return _scrollToRequests.events();
|
||||||
}
|
}
|
||||||
|
|
@ -653,6 +660,11 @@ private:
|
||||||
RowIndex findRowIndex(not_null<PeerListRow*> row, RowIndex hint = RowIndex());
|
RowIndex findRowIndex(not_null<PeerListRow*> row, RowIndex hint = RowIndex());
|
||||||
QRect getActiveActionRect(not_null<PeerListRow*> row, RowIndex index) const;
|
QRect getActiveActionRect(not_null<PeerListRow*> row, RowIndex index) const;
|
||||||
|
|
||||||
|
bool showRowMenu(
|
||||||
|
RowIndex index,
|
||||||
|
QPoint globalPos,
|
||||||
|
Fn<void(not_null<Ui::PopupMenu*>)> destroyed = nullptr);
|
||||||
|
|
||||||
crl::time paintRow(Painter &p, crl::time ms, RowIndex index);
|
crl::time paintRow(Painter &p, crl::time ms, RowIndex index);
|
||||||
|
|
||||||
void addRowEntry(not_null<PeerListRow*> row);
|
void addRowEntry(not_null<PeerListRow*> row);
|
||||||
|
|
@ -836,6 +848,11 @@ public:
|
||||||
std::unique_ptr<PeerListState> state) override {
|
std::unique_ptr<PeerListState> state) override {
|
||||||
_content->restoreState(std::move(state));
|
_content->restoreState(std::move(state));
|
||||||
}
|
}
|
||||||
|
void peerListShowRowMenu(
|
||||||
|
not_null<PeerListRow*> row,
|
||||||
|
Fn<void(not_null<Ui::PopupMenu*>)> destroyed) override {
|
||||||
|
_content->showRowMenu(row, std::move(destroyed));
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
not_null<PeerListContent*> content() const {
|
not_null<PeerListContent*> content() const {
|
||||||
|
|
|
||||||
|
|
@ -368,10 +368,10 @@ void Call::setupOutgoingVideo() {
|
||||||
_errors.fire({ ErrorType::NoCamera });
|
_errors.fire({ ErrorType::NoCamera });
|
||||||
_videoOutgoing->setState(Webrtc::VideoState::Inactive);
|
_videoOutgoing->setState(Webrtc::VideoState::Inactive);
|
||||||
} else if (_state.current() != State::Established
|
} else if (_state.current() != State::Established
|
||||||
&& state != started
|
&& (state != Webrtc::VideoState::Inactive)
|
||||||
&& !_videoCapture) {
|
&& (started == Webrtc::VideoState::Inactive)) {
|
||||||
_errors.fire({ ErrorType::NotStartedCall });
|
_errors.fire({ ErrorType::NotStartedCall });
|
||||||
_videoOutgoing->setState(started);
|
_videoOutgoing->setState(Webrtc::VideoState::Inactive);
|
||||||
} else if (state != Webrtc::VideoState::Inactive
|
} else if (state != Webrtc::VideoState::Inactive
|
||||||
&& _instance
|
&& _instance
|
||||||
&& !_instance->supportsVideo()) {
|
&& !_instance->supportsVideo()) {
|
||||||
|
|
|
||||||
|
|
@ -243,6 +243,9 @@ private:
|
||||||
void prepareRows(not_null<Data::GroupCall*> real);
|
void prepareRows(not_null<Data::GroupCall*> real);
|
||||||
//void repaintByTimer();
|
//void repaintByTimer();
|
||||||
|
|
||||||
|
[[nodiscard]] base::unique_qptr<Ui::PopupMenu> createRowContextMenu(
|
||||||
|
QWidget *parent,
|
||||||
|
not_null<PeerListRow*> row);
|
||||||
void setupListChangeViewers(not_null<GroupCall*> call);
|
void setupListChangeViewers(not_null<GroupCall*> call);
|
||||||
void subscribeToChanges(not_null<Data::GroupCall*> real);
|
void subscribeToChanges(not_null<Data::GroupCall*> real);
|
||||||
void updateRow(
|
void updateRow(
|
||||||
|
|
@ -638,10 +641,7 @@ MembersController::MembersController(
|
||||||
}
|
}
|
||||||
|
|
||||||
MembersController::~MembersController() {
|
MembersController::~MembersController() {
|
||||||
if (_menu) {
|
base::take(_menu);
|
||||||
_menu->setDestroyedCallback(nullptr);
|
|
||||||
_menu = nullptr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MembersController::setupListChangeViewers(not_null<GroupCall*> call) {
|
void MembersController::setupListChangeViewers(not_null<GroupCall*> call) {
|
||||||
|
|
@ -1002,15 +1002,8 @@ auto MembersController::kickMemberRequests() const
|
||||||
}
|
}
|
||||||
|
|
||||||
void MembersController::rowClicked(not_null<PeerListRow*> row) {
|
void MembersController::rowClicked(not_null<PeerListRow*> row) {
|
||||||
if (_menu) {
|
delegate()->peerListShowRowMenu(row, [=](not_null<Ui::PopupMenu*> menu) {
|
||||||
_menu->setDestroyedCallback(nullptr);
|
if (!_menu || _menu.get() != menu) {
|
||||||
_menu->deleteLater();
|
|
||||||
_menu = nullptr;
|
|
||||||
}
|
|
||||||
_menu = rowContextMenu(_menuParent, row);
|
|
||||||
if (const auto raw = _menu.get()) {
|
|
||||||
raw->setDestroyedCallback([=] {
|
|
||||||
if (_menu && _menu.get() != raw) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto saved = base::take(_menu);
|
auto saved = base::take(_menu);
|
||||||
|
|
@ -1023,8 +1016,6 @@ void MembersController::rowClicked(not_null<PeerListRow*> row) {
|
||||||
}
|
}
|
||||||
_menu = std::move(saved);
|
_menu = std::move(saved);
|
||||||
});
|
});
|
||||||
raw->popup(QCursor::pos());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MembersController::rowActionClicked(
|
void MembersController::rowActionClicked(
|
||||||
|
|
@ -1035,6 +1026,23 @@ void MembersController::rowActionClicked(
|
||||||
base::unique_qptr<Ui::PopupMenu> MembersController::rowContextMenu(
|
base::unique_qptr<Ui::PopupMenu> MembersController::rowContextMenu(
|
||||||
QWidget *parent,
|
QWidget *parent,
|
||||||
not_null<PeerListRow*> row) {
|
not_null<PeerListRow*> row) {
|
||||||
|
auto result = createRowContextMenu(parent, row);
|
||||||
|
|
||||||
|
if (result) {
|
||||||
|
// First clear _menu value, so that we don't check row positions yet.
|
||||||
|
base::take(_menu);
|
||||||
|
|
||||||
|
// Here unique_qptr is used like a shared pointer, where
|
||||||
|
// not the last destroyed pointer destroys the object, but the first.
|
||||||
|
_menu = base::unique_qptr<Ui::PopupMenu>(result.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
base::unique_qptr<Ui::PopupMenu> MembersController::createRowContextMenu(
|
||||||
|
QWidget *parent,
|
||||||
|
not_null<PeerListRow*> row) {
|
||||||
Expects(row->peer()->isUser());
|
Expects(row->peer()->isUser());
|
||||||
|
|
||||||
if (row->peer()->isSelf()) {
|
if (row->peer()->isSelf()) {
|
||||||
|
|
@ -1125,7 +1133,9 @@ base::unique_qptr<Ui::PopupMenu> MembersController::rowContextMenu(
|
||||||
_kickMemberRequests.fire_copy(user);
|
_kickMemberRequests.fire_copy(user);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (_peer->canManageGroupCall() && (!admin || mute)) {
|
if ((muteState != Row::State::Invited)
|
||||||
|
&& _peer->canManageGroupCall()
|
||||||
|
&& (!admin || mute)) {
|
||||||
result->addAction(
|
result->addAction(
|
||||||
(mute
|
(mute
|
||||||
? tr::lng_group_call_context_mute(tr::now)
|
? tr::lng_group_call_context_mute(tr::now)
|
||||||
|
|
|
||||||
|
|
@ -710,7 +710,8 @@ void TopBar::updateControlsGeometry() {
|
||||||
left += _durationLabel->width() + st::callBarSkip;
|
left += _durationLabel->width() + st::callBarSkip;
|
||||||
}
|
}
|
||||||
if (!_userpics.isNull()) {
|
if (!_userpics.isNull()) {
|
||||||
left += _userpics.width() / _userpics.devicePixelRatio();
|
left += (_userpics.width() / _userpics.devicePixelRatio())
|
||||||
|
+ st::callBarSkip;
|
||||||
}
|
}
|
||||||
if (_signalBars) {
|
if (_signalBars) {
|
||||||
_signalBars->moveToLeft(left, (height() - _signalBars->height()) / 2);
|
_signalBars->moveToLeft(left, (height() - _signalBars->height()) / 2);
|
||||||
|
|
|
||||||
|
|
@ -243,6 +243,10 @@ QIcon TrayIconGen(int counter, bool muted) {
|
||||||
48,
|
48,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const auto dprSize = [](const QImage &image) {
|
||||||
|
return image.size() / image.devicePixelRatio();
|
||||||
|
};
|
||||||
|
|
||||||
for (const auto iconSize : iconSizes) {
|
for (const auto iconSize : iconSizes) {
|
||||||
auto ¤tImageBack = TrayIconImageBack[iconSize];
|
auto ¤tImageBack = TrayIconImageBack[iconSize];
|
||||||
const auto desiredSize = QSize(iconSize, iconSize);
|
const auto desiredSize = QSize(iconSize, iconSize);
|
||||||
|
|
@ -261,11 +265,17 @@ QIcon TrayIconGen(int counter, bool muted) {
|
||||||
systemIcon = QIcon::fromTheme(iconName);
|
systemIcon = QIcon::fromTheme(iconName);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (systemIcon.actualSize(desiredSize) == desiredSize) {
|
// We can't use QIcon::actualSize here
|
||||||
|
// since it works incorrectly with svg icon themes
|
||||||
currentImageBack = systemIcon
|
currentImageBack = systemIcon
|
||||||
.pixmap(desiredSize)
|
.pixmap(desiredSize)
|
||||||
.toImage();
|
.toImage();
|
||||||
} else {
|
|
||||||
|
const auto firstAttemptSize = dprSize(currentImageBack);
|
||||||
|
|
||||||
|
// if current icon theme is not a svg one, Qt can return
|
||||||
|
// a pixmap that less in size even if there are a bigger one
|
||||||
|
if (firstAttemptSize.width() < desiredSize.width()) {
|
||||||
const auto availableSizes = systemIcon.availableSizes();
|
const auto availableSizes = systemIcon.availableSizes();
|
||||||
|
|
||||||
const auto biggestSize = ranges::max_element(
|
const auto biggestSize = ranges::max_element(
|
||||||
|
|
@ -273,18 +283,17 @@ QIcon TrayIconGen(int counter, bool muted) {
|
||||||
std::less<>(),
|
std::less<>(),
|
||||||
&QSize::width);
|
&QSize::width);
|
||||||
|
|
||||||
|
if ((*biggestSize).width() > firstAttemptSize.width()) {
|
||||||
currentImageBack = systemIcon
|
currentImageBack = systemIcon
|
||||||
.pixmap(*biggestSize)
|
.pixmap(*biggestSize)
|
||||||
.toImage();
|
.toImage();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
currentImageBack = Core::App().logo();
|
currentImageBack = Core::App().logo();
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto currentImageBackSize = currentImageBack.size()
|
if (dprSize(currentImageBack) != desiredSize) {
|
||||||
/ currentImageBack.devicePixelRatio();
|
|
||||||
|
|
||||||
if (currentImageBackSize != desiredSize) {
|
|
||||||
currentImageBack = currentImageBack.scaled(
|
currentImageBack = currentImageBack.scaled(
|
||||||
desiredSize * currentImageBack.devicePixelRatio(),
|
desiredSize * currentImageBack.devicePixelRatio(),
|
||||||
Qt::IgnoreAspectRatio,
|
Qt::IgnoreAspectRatio,
|
||||||
|
|
@ -372,17 +381,33 @@ std::unique_ptr<QTemporaryFile> TrayIconFile(
|
||||||
static const auto templateName = AppRuntimeDirectory()
|
static const auto templateName = AppRuntimeDirectory()
|
||||||
+ kTrayIconFilename.utf16();
|
+ kTrayIconFilename.utf16();
|
||||||
|
|
||||||
|
static const auto dprSize = [](const QPixmap &pixmap) {
|
||||||
|
return pixmap.size() / pixmap.devicePixelRatio();
|
||||||
|
};
|
||||||
|
|
||||||
static const auto desiredSize = QSize(22, 22);
|
static const auto desiredSize = QSize(22, 22);
|
||||||
|
|
||||||
|
static const auto scalePixmap = [=](const QPixmap &pixmap) {
|
||||||
|
if (dprSize(pixmap) != desiredSize) {
|
||||||
|
return pixmap.scaled(
|
||||||
|
desiredSize * pixmap.devicePixelRatio(),
|
||||||
|
Qt::IgnoreAspectRatio,
|
||||||
|
Qt::SmoothTransformation);
|
||||||
|
} else {
|
||||||
|
return pixmap;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
auto ret = std::make_unique<QTemporaryFile>(
|
auto ret = std::make_unique<QTemporaryFile>(
|
||||||
templateName,
|
templateName,
|
||||||
parent);
|
parent);
|
||||||
|
|
||||||
ret->open();
|
ret->open();
|
||||||
|
|
||||||
if (icon.actualSize(desiredSize) == desiredSize) {
|
const auto firstAttempt = icon.pixmap(desiredSize);
|
||||||
icon.pixmap(desiredSize).save(ret.get());
|
const auto firstAttemptSize = dprSize(firstAttempt);
|
||||||
} else {
|
|
||||||
|
if (firstAttemptSize.width() < desiredSize.width()) {
|
||||||
const auto availableSizes = icon.availableSizes();
|
const auto availableSizes = icon.availableSizes();
|
||||||
|
|
||||||
const auto biggestSize = ranges::max_element(
|
const auto biggestSize = ranges::max_element(
|
||||||
|
|
@ -390,14 +415,13 @@ std::unique_ptr<QTemporaryFile> TrayIconFile(
|
||||||
std::less<>(),
|
std::less<>(),
|
||||||
&QSize::width);
|
&QSize::width);
|
||||||
|
|
||||||
const auto iconPixmap = icon.pixmap(*biggestSize);
|
if ((*biggestSize).width() > firstAttemptSize.width()) {
|
||||||
|
scalePixmap(icon.pixmap(*biggestSize)).save(ret.get());
|
||||||
iconPixmap
|
} else {
|
||||||
.scaled(
|
scalePixmap(firstAttempt).save(ret.get());
|
||||||
desiredSize * iconPixmap.devicePixelRatio(),
|
}
|
||||||
Qt::IgnoreAspectRatio,
|
} else {
|
||||||
Qt::SmoothTransformation)
|
scalePixmap(firstAttempt).save(ret.get());
|
||||||
.save(ret.get());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret->close();
|
ret->close();
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#endif // !DESKTOP_APP_DISABLE_DBUS_INTEGRATION
|
#endif // !DESKTOP_APP_DISABLE_DBUS_INTEGRATION
|
||||||
|
|
||||||
#include <xcb/xcb.h>
|
#include <xcb/xcb.h>
|
||||||
#include <xcb/screensaver.h>
|
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,9 @@ bool HasExtensionFrom(const QString &file, const QStringList &extensions) {
|
||||||
bool ValidPhotoForAlbum(
|
bool ValidPhotoForAlbum(
|
||||||
const PreparedFileInformation::Image &image,
|
const PreparedFileInformation::Image &image,
|
||||||
const QString &mime) {
|
const QString &mime) {
|
||||||
if (image.animated || Core::IsMimeSticker(mime)) {
|
if (image.animated
|
||||||
|
|| Core::IsMimeSticker(mime)
|
||||||
|
|| (mime == u"application/pdf"_q)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const auto width = image.data.width();
|
const auto width = image.data.width();
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,11 @@ MessageBar::MessageBar(not_null<QWidget*> parent, const style::MessageBar &st)
|
||||||
: _st(st)
|
: _st(st)
|
||||||
, _widget(parent) {
|
, _widget(parent) {
|
||||||
setup();
|
setup();
|
||||||
|
|
||||||
|
style::PaletteChanged(
|
||||||
|
) | rpl::start_with_next([=] {
|
||||||
|
_topBarGradient = _bottomBarGradient = QPixmap();
|
||||||
|
}, _widget.lifetime());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageBar::setup() {
|
void MessageBar::setup() {
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,8 @@ apps:
|
||||||
environment:
|
environment:
|
||||||
# Tell glib to use portals on file associations handling.
|
# Tell glib to use portals on file associations handling.
|
||||||
GTK_USE_PORTAL: 1
|
GTK_USE_PORTAL: 1
|
||||||
|
# Use sandboxed ibus api
|
||||||
|
IBUS_USE_PORTAL: 1
|
||||||
plugs:
|
plugs:
|
||||||
- alsa
|
- alsa
|
||||||
- audio-playback
|
- audio-playback
|
||||||
|
|
@ -75,7 +77,6 @@ parts:
|
||||||
- liblzma-dev
|
- liblzma-dev
|
||||||
- libopus-dev
|
- libopus-dev
|
||||||
- libpulse-dev
|
- libpulse-dev
|
||||||
- libqt5svg5-dev
|
|
||||||
- libqt5waylandclient5-dev
|
- libqt5waylandclient5-dev
|
||||||
- libssl-dev
|
- libssl-dev
|
||||||
- libxcb1-dev
|
- libxcb1-dev
|
||||||
|
|
@ -87,11 +88,11 @@ parts:
|
||||||
- qt5-image-formats-plugins
|
- qt5-image-formats-plugins
|
||||||
- qtwayland5
|
- qtwayland5
|
||||||
- libasound2
|
- libasound2
|
||||||
|
- libglib2.0-0
|
||||||
- libgtk-3-0
|
- libgtk-3-0
|
||||||
- liblzma5
|
- liblzma5
|
||||||
- libopus0
|
- libopus0
|
||||||
- libpulse0
|
- libpulse0
|
||||||
- libqt5svg5
|
|
||||||
- libqt5waylandclient5
|
- libqt5waylandclient5
|
||||||
- libssl1.1
|
- libssl1.1
|
||||||
- libxcb1
|
- libxcb1
|
||||||
|
|
@ -165,16 +166,6 @@ parts:
|
||||||
after:
|
after:
|
||||||
- mozjpeg
|
- mozjpeg
|
||||||
|
|
||||||
# Qt checks that ibus-daemon binary is present, otherwise doesn't work
|
|
||||||
ibus:
|
|
||||||
plugin: nil
|
|
||||||
stage-packages:
|
|
||||||
- ibus
|
|
||||||
stage:
|
|
||||||
- -./usr/lib/$SNAPCRAFT_ARCH_TRIPLET/libjpeg.so.8.2.2
|
|
||||||
after:
|
|
||||||
- mozjpeg
|
|
||||||
|
|
||||||
ffmpeg:
|
ffmpeg:
|
||||||
plugin: nil
|
plugin: nil
|
||||||
build-packages:
|
build-packages:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue