Commit graph

1420 commits

Author SHA1 Message Date
John Preston
29224fea66 Improve design of mediaview controls over state. 2023-03-01 09:12:02 +04:00
John Preston
df9bd91d9a Implement semi-native macOS title buttons for the viewer. 2023-03-01 09:12:02 +04:00
John Preston
d1230167bf Improve title controls in Windows media viewer. 2023-03-01 09:12:02 +04:00
Ilya Fedin
808cf119b8 Switch freetype to experimental settings 2023-02-22 16:51:13 +04:00
Ilya Fedin
f71e7812e6 Don't hold GApplication
That's a much better way to avoid defunct event loop that will work in any edge case

Also don't assume GApplication is always running in Platform::Notifications::Enforced
2023-02-18 20:33:40 +04:00
John Preston
c09043f827 Fix build for macOS. 2023-02-18 15:10:14 +04:00
John Preston
832d47121f Save media viewer position to Settings. 2023-02-18 15:10:13 +04:00
John Preston
27d446bdda Improve Ctrl+W / Ctrl+M handling by media viewer. 2023-02-18 15:10:13 +04:00
John Preston
f9847090f9 Cmd+Q quit prevention in windowed media viewer. 2023-02-18 15:10:13 +04:00
John Preston
2a1e3c4453 Initial implementation of windowed media viewer on macOS. 2023-02-18 15:10:13 +04:00
Ilya Fedin
e78975d770 Fix event loop for non-first instance on Linux 2023-02-17 09:27:36 +04:00
Ilya Fedin
1940edd6ee Fix deprecated declarations warnings on macOS 2023-02-14 18:37:01 +04:00
Ilya Fedin
96ef82272b Use QT_DEPRECATED_WARNINGS_SINCE 2023-02-14 18:37:01 +04:00
John Preston
88e7f4b662 Improve the tabbed emoji panel design. 2023-02-02 22:12:31 +04:00
John Preston
ea4e2f0952 Fix build with Xcode. 2023-02-02 22:12:31 +04:00
John Preston
554f66f089 Support separate message type group restrictions. 2023-02-02 22:12:31 +04:00
John Preston
88f3aeca5b Show just logo in Dwm Preview when passcoded. 2023-02-02 16:14:36 +04:00
Ilya Fedin
2be4641496 Install launcher on every launch on Linux
Just like AppUserModelId on Windows

This makes the cheat code and having the function outside of private namespace unnecessary
2023-01-23 12:16:59 +04:00
Ilya Fedin
b62e1d5036 Set prgname and application name before glibmm initialization
This ensures possible warnings use right process name
2023-01-22 15:11:02 +04:00
Ilya Fedin
6f89413c76 Don't get cursor position twice for open with menu 2023-01-20 12:58:48 +04:00
John Preston
507a064153 Fix OpenWith dropdown menu positioning on Windows. 2023-01-19 12:52:59 +04:00
John Preston
b80b770631 Fix input field shortcuts on macOS. 2023-01-19 10:36:43 +04:00
John Preston
cdfdccbb66 Detach SystemMediaControls from Window::Controller. 2023-01-19 09:46:20 +04:00
John Preston
b3667d69a1 Each MainWindow has its own Global Menu. 2023-01-19 09:46:19 +04:00
John Preston
e4c16ccba4 Create tray icon without a parent. 2023-01-19 09:46:19 +04:00
John Preston
7023b013ce Initial support of separate windows for accounts. 2023-01-19 09:45:28 +04:00
Ilya Fedin
745b01a407 Another attempt to enable UTF-8 charset on Windows 2023-01-19 08:34:46 +04:00
Ilya Fedin
9b154b3c91 Ensure freedesktop capabilities aren't used when GNotification is used 2023-01-13 10:24:06 +04:00
Ilya Fedin
a1f9b5a96f Get GApplication out of experimental settings
GApplication will always be used on Linux now. GNotification gets a toggle instead.
2023-01-12 21:49:16 +04:00
Ilya Fedin
9b7826ea0d Get GApplication out of experimental settings
GApplication will always be used on Linux now. GNotification gets a toggle instead.
2023-01-12 21:30:45 +04:00
John Preston
39075538fb Enable RoundPreferFloor HighDpi support on Windows.
Add an experimental setting for exact HighDPI on Windows.
2023-01-12 13:57:09 +04:00
John Preston
94a956ce19 Beta version 4.5.4: Fix build for Windows x64. 2023-01-10 16:47:57 +04:00
John Preston
fc26457218 Show current chat name in the window title. 2023-01-09 18:39:07 +04:00
John Preston
c49dac57b7 Don't use window title for IPC. 2023-01-09 16:08:34 +04:00
Ilya Fedin
c56977cbc1 Check autostart enabling success on Linux 2023-01-02 13:10:17 +04:00
John Preston
442d0da5c1 Force autostart folder creation.
Also show an error if autostart couldn't be enabled.

Fixes #25608.
2023-01-02 12:26:20 +04:00
Ilya Fedin
1666683dbb Fix various line length in notifications_manager_linux 2022-12-29 12:30:17 +04:00
Ilya Fedin
c134861cd9 Have notification subtitle in title on Linux when body-markup is not supported
This makes it look way better
2022-12-29 12:30:17 +04:00
Ilya Fedin
a3caecbc07 Fix build with clang 2022-12-29 09:32:07 +04:00
John Preston
faf6c48f25 Remove ui/special_buttons module. 2022-12-26 14:24:06 +04:00
Ilya Fedin
13eeddf479 Don't wait for input when there are fullscreen applications 2022-12-23 14:04:17 +04:00
Ilya Fedin
ecd217a79f Implement autostart in snap 2022-12-20 18:55:29 +04:00
Ilya Fedin
4aa9c1fea3 Get saving desktop file out of group loop 2022-12-20 18:55:29 +04:00
Ilya Fedin
b3e547f4dd Fix a warning in snap build 2022-12-16 11:03:37 +04:00
Ilya Fedin
3cb333d323 Fix counter paint when DPR != 1 in Linux tray 2022-12-09 16:04:07 +04:00
Ilya Fedin
2565b948d9 Cache system icon in Linux tray 2022-12-09 16:04:07 +04:00
Ilya Fedin
577f4b6271 Don't check com.canonical.Unity for the counter
It seems there's a race condition when Telegram is auto-started on Plasma and it doesn't hurt to issue the signal always, so just remove the check
2022-12-09 09:19:00 +04:00
Klemens Nanni
9c27271571 Use std::invoke_result_T not ::result_of to fix C++20 tdesktop 4.3.4
tdesktop defaults to (probably requires) C++20, but `std::result_of`[0]
was deprecated in C++17 and removed in C++20.

0: https://en.cppreference.com/w/cpp/types/result_of
2022-12-09 09:12:34 +04:00
Ilya Fedin
5990b0fabf Fix build with Qt 5 2022-12-08 10:15:59 +04:00
Ilya Fedin
6f50906952 Don't use unneeded QEventLoop::ApplicationExec 2022-12-07 11:27:49 +04:00
John Preston
8937d732f6 Fix build with GCC. 2022-12-06 18:08:07 +04:00
23rd
e2205c7251 Fixed build on macOS. 2022-12-06 12:56:56 +03:00
John Preston
48148a8cc3 Revert "Provide the same sizes for tray icon as for main window icon"
This reverts commit f9bf68461d.
2022-12-06 12:55:09 +04:00
John Preston
cb653df0f6 Support adaptive forum userpic rounding radius. 2022-12-05 16:18:10 +04:00
23rd
4fabb3f2a2 Replaced some qsl with u""_q literal. 2022-11-30 17:17:14 +03:00
John Preston
ad3f8e72a0 Remove namespace App. 2022-11-30 17:28:09 +04:00
John Preston
01139e1b04 Remove facades module. 2022-11-30 16:55:51 +04:00
John Preston
eaed91263e Simplify HistoryHider, remove most of uses. 2022-11-30 16:13:31 +04:00
23rd
2acedca6b7 Replaced some qstr with u""_q literal. 2022-11-29 14:12:50 +03:00
Ilya Fedin
05524c3f6c Don't show reply button in Linux native notifications when it's not supposed to
All modern notification daemons have support for the default action and it's a requirement with the portal spec
2022-11-28 21:55:00 +01:00
Ilya Fedin
b383dad6ac Install launcher before registering URL scheme 2022-11-28 12:12:09 +01:00
Ilya Fedin
2bda3c4e2b Don't save temp file for native notification userpics on Linux 2022-11-26 22:15:39 +01:00
Ilya Fedin
4484edd212 Get rid of unneeded QTextStream from GenerateDesktopFile 2022-11-26 17:26:52 +01:00
Ilya Fedin
ace363f432 Use GBytesIcon with GNotification
GFileIcon is not supported by xdg-desktop-portal
2022-11-26 17:26:52 +01:00
Ilya Fedin
d6ed23b3dd Fix race condition between GApplication and GNotification 2022-11-26 17:26:52 +01:00
Ilya Fedin
9ee4ad95d0 Fix GApplication with some binary paths 2022-11-26 17:26:52 +01:00
Ilya Fedin
4ade80905f Add proper build-time checks to AutostartSupported on Linux 2022-11-26 17:26:52 +01:00
Ilya Fedin
94b4809cdf Get XDG activation token also from DESKTOP_STARTUP_ID 2022-11-25 15:11:25 +01:00
Ilya Fedin
109f6614f0 Unset XDG_ACTIVATION_TOKEN after used with GApplication 2022-11-25 15:11:25 +01:00
John Preston
8a288476b8 Implement pinned topics reordering. 2022-11-22 00:26:48 +00:00
Ilya Fedin
a94dd22caa Rewrite GenerateDesktopFile using Glib::KeyFile and KShell 2022-11-21 21:30:17 +00:00
Ilya Fedin
899ab9a16a Fix range loop warnings in Snap build 2022-11-21 21:30:17 +00:00
Ilya Fedin
2f0d14bd35 Use customWorkingDir() outside of Core::Launcher
This allows to add -workdir to shortcuts only if the process was launched with -workdir
2022-11-21 21:30:17 +00:00
Ilya Fedin
9b66b76bac Use GNotification only in flatpak by default
The UX is not the best without sound, so there's no advantage in using GNotification on GNOME.

Remove mention about being native to GNOME as it's not true anymore.
2022-11-20 08:52:36 +00:00
Ilya Fedin
a1e60a3f20 Ensure GNotification is not autodetected in snap
Snap reports it as present, but prevents the access and GNotification attempts to use portal that doesn't work in snap
2022-11-19 02:21:51 +04:00
Ilya Fedin
768fc9b8f6 Use the new Glib::Variant qint64/quint64 compatibility with old code 2022-11-18 20:40:33 +04:00
Ilya Fedin
b9b6a9e747 Follow desktop file naming specification
This is required for GApplication to enable all the features

https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#file-naming
2022-11-18 20:40:33 +04:00
Ilya Fedin
b4d310fd1e Don't subscribe to inhibiton changes when not supported 2022-11-18 20:40:33 +04:00
Ilya Fedin
f9dd2b4a0a Support GNotification
It's used if there's a gtk notification daemon or application is running sandboxed without access to the freedesktop protocol.

GNotification API is poor, but should feel native on environments using GNOME technologies.
2022-11-18 20:40:33 +04:00
Ilya Fedin
9726b3c298 Avoid race condition when registering Wayland interfaces 2022-11-11 11:47:01 +04:00
Ilya Fedin
f542a026ec Add _GTK_APPLICATION_ID support 2022-11-07 18:16:49 +04:00
Ilya Fedin
fc4682d77e Get rid of TDESKTOP_LAUNCHER_BASENAME
This key was mainly used to let flatpak and snap provide right desktop file name.
Now, we can compute it from the environment in runtime for both flatpak and snap.
There's no more need in this option. Desktop filename override by downstreams is highly discouraged.
2022-11-07 13:47:58 +04:00
Ilya Fedin
a507edb67a Get rid of workarounds for old flatpak versions
The minimal supported flatpak version since Qt 6.x is 1.14.0.
Flatpak shares temp directory and runtime directory between launches since 1.11.1.
FLATPAK_ID is defined since 1.1.2.
2022-11-07 13:47:58 +04:00
Ilya Fedin
1336a7149b Update glibmm to latest version 2022-11-03 14:45:01 +04:00
Ilya Fedin
ba9f5d138a Use some APIs from newer glibmm 2022-11-02 21:02:46 +04:00
John Preston
fdf4129e5e Fix build with GCC. 2022-11-02 08:51:03 +04:00
John Preston
1ac051a812 Implement forwarding to topics. 2022-11-01 19:25:44 +04:00
John Preston
602ba5bba9 Implement correct ForumTopic::canWrite logic. 2022-11-01 19:25:42 +04:00
23rd
fd2edb51e9 Fixed build in Xcode. 2022-11-01 19:25:41 +04:00
John Preston
4910a60499 Track mentions / reactions together with unread. 2022-11-01 19:25:40 +04:00
John Preston
d4255bbfe4 Fix build with Xcode. 2022-11-01 19:25:38 +04:00
John Preston
92a4b27e65 Support per-topic notification settings. 2022-11-01 19:25:37 +04:00
John Preston
5e82433693 Fix build with Xcode. 2022-11-01 19:25:35 +04:00
John Preston
1401b19994 Add PaintContext for Dialogs::Ui::RowPainter. 2022-11-01 19:25:34 +04:00
Ilya Fedin
f9bf68461d Provide the same sizes for tray icon as for main window icon 2022-10-16 18:04:07 +04:00
Ilya Fedin
2d69329dc9 Set linux webview debug mode via D-Bus IPC 2022-10-03 09:29:25 +04:00
Ilya Fedin
2a6e2fa353 Bundle kcoreaddons 2022-09-28 23:59:59 +04:00
Ilya Fedin
f2d2826fc7 Make InstallLauncher accessible on any platform 2022-09-19 14:23:27 +04:00
Ilya Fedin
cfa12fb0cc Move AppRuntimeDirectory to private namespace 2022-09-19 14:23:27 +04:00
Ilya Fedin
d9318c9935 Move icon name getter to cross-platform header 2022-09-19 14:23:27 +04:00
Ilya Fedin
5132fd5010 Use KSandbox to check flatpak/snap environment 2022-09-19 14:23:27 +04:00
Ilya Fedin
89879e355d Replace EscapeShell with KShell::joinArgs 2022-09-19 14:20:02 +04:00
John Preston
7727cdff92 Fix build with Xcode. 2022-09-18 17:12:16 +04:00
Ilya Fedin
88f1f8ff22 Move QGuiApplication::setDesktopFileName call to Platform::start
It depends on Core::UpdaterDisabled that is not initialized in Launcher::initHook yet
2022-09-05 08:24:48 +04:00
Ilya Fedin
feb6107ce6 Qt 6.4 supports window activation with tray on Wayland 2022-09-02 21:27:41 +04:00
Ilya Fedin
38da0e086d Get rid of lib_waylandshells 2022-09-02 21:27:41 +04:00
Ilya Fedin
f1092753fc Remove version from the .desktop file
Some desktop environments hide the launcher if they don't know the version
2022-09-01 13:53:53 +04:00
Ilya Fedin
5fc7caeec9 Provide old version to Platform::NewVersionLaunched 2022-09-01 13:53:53 +04:00
Ilya Fedin
8c1bef929e A better way of PiP aspect ratio handling on Wayland 2022-08-08 11:05:52 +04:00
Ilya Fedin
bf339de773 Always pass activation_token option
glib shows a warning about invalid GVariant and empty activation_token shouldn't hurt I believe
2022-08-04 17:12:07 +04:00
Ilya Fedin
9e63fc5acd Let PiP have custom buffer size on Wayland 2022-08-04 16:41:25 +04:00
Ilya Fedin
d500714242 Use xdg-activation to open URLs&files 2022-08-03 15:26:08 +04:00
Ilya Fedin
66c9587650 Add fail callback to linux notifications exceptions handler 2022-07-31 12:21:24 +04:00
Ilya Fedin
8e8a209aad Guard linux notification inhibition checks 2022-07-28 20:18:51 +04:00
Ilya Fedin
bb8ffcac3a Default to Wayland on GNOME for new installs 2022-07-28 20:17:49 +04:00
John Preston
4cf4b6a368 Optimize emoji / stickers update requests. 2022-07-26 20:12:14 +03:00
John Preston
8383caa2b5 Fix build with Xcode. 2022-07-26 20:12:12 +03:00
Ilya Fedin
9b8dcec26e Ensure notification manager is not null before first call to setManager in cross-platform code 2022-07-26 21:11:17 +04:00
Ilya Fedin
6718d238af Switch to the dummy notification manager when notification daemon is not running on Linux 2022-07-26 21:11:17 +04:00
Ilya Fedin
dd70a6f659 IsQualifiedDaemon -> ByDefault 2022-07-26 21:11:17 +04:00
Ilya Fedin
ff2bd86744 Have a central place for catch-based logging of linux native notifications 2022-07-26 21:11:17 +04:00
Ilya Fedin
d2e3c01c11 Get linux notification inhibition state asynchronously
This is the last sync request in the D-Bus notifications
2022-07-26 21:11:17 +04:00
Ilya Fedin
e8477e5911 Get rid of 'paramtersCopy' in dbus code 2022-07-26 21:09:30 +04:00
23rd
57f769f358 Returned lost method that checks tray existence. 2022-06-23 09:38:21 +03:00
John Preston
1e63a6a1a7 Fix possible crash in Windows Toast Notifications. 2022-06-22 20:07:17 +04:00
John Preston
b963a68dd6 Fix windows taskbar notifications counter with multi-windows. 2022-06-20 12:56:50 +04:00
John Preston
0434e520fd Don't quit on secondary window destroy by the system. 2022-06-15 19:59:16 +04:00
Ilya Fedin
798998203a Get XDG activation token from native notification on Linux 2022-06-15 12:55:59 +04:00
Ilya Fedin
6ee08faa24 Migrate from kwayland to QtWaylandScanner 2022-06-14 16:36:44 +04:00
Ilya Fedin
391a3a77f6 Use Qt's xdg-desktop-portal file dialog implementation 2022-06-14 16:36:44 +04:00
Ilya Fedin
2477b35b42 Move tray availability logging to the appropriate class 2022-06-14 16:36:44 +04:00
Ilya Fedin
4d997a26b0 Don't update global menu on Linux without focus widget
The window loses focus when menu is open and edit options are deactivated
2022-06-14 16:36:44 +04:00
Ilya Fedin
4410aeb3eb Make QMenuBar on Linux work without private API 2022-06-14 16:36:44 +04:00
Ilya Fedin
088cca7452 Adapt for XCB::IsSupportedByWM changes 2022-06-14 16:36:44 +04:00
John Preston
fc07954276 Improve premium section bottom. 2022-06-13 13:49:45 +04:00
23rd
7bf9db8644 Fixed logging out with opened non-primary windows. 2022-06-08 11:59:30 +03:00
John Preston
a780fbd09b Add "ctrl-click-chat-new-window" option. 2022-06-07 22:05:37 +04:00
John Preston
6f285874f3 Fix build on macOS. 2022-05-19 17:27:01 +04:00
John Preston
5874ae7c51 Update API scheme on layer 142: Premium stickers. 2022-05-19 17:27:01 +04:00
Ilya Fedin
a2a401c0b0 Use public Qt API for native dialogs modality 2022-05-19 17:23:47 +04:00
Ilya Fedin
acd18a57fb Get rid of the IBUS_USE_PORTAL workaround
It's been a while after the ibus breaking change, the new socket path should be in all major distros and this hack shouldn't be needed anymore.
2022-05-19 17:23:47 +04:00
Ilya Fedin
6a80b1b94c Get rid of __HAIKU__ checks
This is a leftover of something that wasn't finiched and looks like won't be finished. It also feels that's not a good idea to mix Linux and Haiku in the same file though...
2022-05-19 17:23:47 +04:00
23rd
c47140c62d Fixed window activation by clicking on tray icon for macOS. 2022-05-05 16:52:09 +03:00
John Preston
b28d5a63d1 Handle alert/confirm/prompt with custom dialog on Linux. 2022-05-03 23:30:42 +04:00
23rd
0e16a50bbc Completely removed common and platform code for tray from main window. 2022-05-03 04:25:36 +03:00
23rd
9de372d715 Replaced macOS Qt tray with native implementation. 2022-05-03 04:25:36 +03:00
23rd
fbae5bdbcf Removed macOS tray implementation from main window. 2022-05-03 04:25:36 +03:00
23rd
aee1ef78da Moved out static job for Linux tray icon to separated class. 2022-05-03 04:25:36 +03:00
23rd
27c5c4b8f2 Removed Linux tray implementation from main window. 2022-05-03 04:25:36 +03:00
23rd
94e06c6846 Removed Windows tray implementation from main window. 2022-05-03 04:25:36 +03:00
23rd
7948d971e8 Added initial implementation of Linux tray. 2022-05-03 04:25:36 +03:00
23rd
70acc7a0e3 Added initial implementation of Windows tray. 2022-05-03 04:25:36 +03:00
23rd
56fdc7d39a Added common and macOS tray implementations. 2022-05-03 04:25:36 +03:00
23rd
f67c3bbf65 Added placeholders for platform dependent implementations of tray. 2022-05-03 04:25:35 +03:00
23rd
de194c4aa2 Initialized empty files for tray implementations. 2022-05-03 04:25:35 +03:00
Sergey A. Osokin
3ba5b825e5 Fix -Wunused-const-variable warnings by removing unused variables
Fixes #24432
2022-04-26 21:25:05 +04:00
Hugo Osvaldo Barrera
c52a5927e5 Avoid a second query for the current color-scheme
Telegram listens for a signal that indicates when the color-scheme
changes. The signal itself includes the new value, but Telegram
currently queries for the value immediately after getting the signal.
This second round-trip is unnecessary, since the signal itself contains
the same information.

This changeset avoids this follow-up query, and drops the now-unused
`Setter`.
2022-04-25 22:38:08 +04:00
Ilya Fedin
cee593c423 Check whether notification image has alpha channel 2022-04-25 22:33:22 +04:00
John Preston
1bc8d6fb18 Fix non-working Qt-on-Windows bug workaround. 2022-04-25 14:03:43 +04:00
Ilya Fedin
62e82a42fb Adapt to lib_base's XDP API changes 2022-04-14 09:15:50 +04:00
Ilya Fedin
80f1f079f1 Move waitForInterfaceAnnounce call to the uses of announced interfaces 2022-04-14 09:11:05 +04:00
Ilya Fedin
572eb1f5f8 Remove unneeded anymore xdg-open workaround for snap 2022-04-13 15:06:06 +04:00
Ilya Fedin
17fcc729a2 Implement org.freedesktop.appearance.color-scheme 2022-04-12 17:35:51 +04:00
Ilya Fedin
e5d8a1aa3c Use QWidget::screen/QWidget::mask instead of QWindow ones 2022-03-23 09:42:51 +04:00
John Preston
e84bfe0420 Fix build for Windows Store. 2022-03-12 09:06:50 +04:00
John Preston
32d09f189b Use rpl::empty instead of rpl::empty_value(). 2022-03-11 09:56:29 +04:00
Ilya Fedin
6fd02ccbae Match socket length check with Qt 2022-03-08 12:41:38 +04:00
23rd
0f00d90c29 Removed unused argument when pin animation in touchbar is cancelled. 2022-03-05 17:43:49 +03:00
Ilya Fedin
b39e4a3138 Do not call CloseNotification for activatable services
If the notification daemon is an activatable GApplication service (e.g.
on Mate), then the notification daemon may terminate a short time after
the notification has vanished (usually 15s). In that case the
notification daemon may reuse notification IDs, which is incompatible
with our notification clearing.
Also the service may not be running at all, when we call the
CloseNotification endpoint.

To fix this, we simply disable the entire notification history clearing
functionality on such desktops by proactively clearing all notification
references from our internal notification manager.

Signed-off-by: Magnus Groß <magnus.gross@rwth-aachen.de>
2022-03-05 16:51:02 +04:00
Magnus Groß
4dd14b81e1 Do not remove notification reference on NotificationClosed
In general we need to keep a reference to the notification id, so that
we can delete the notification later from history - unless the
NotificationClosed reason was that the user actively dismissed it, in
which case it is not kept in history anyway (so we can dismiss our
reference too).

-- Background --
Some desktop environments such as KDE keep a history of notifications.
An API is provided to delete notifications from that history by calling
the org.freedesktop.Notifications.CloseNotification endpoint with the ID
of that notification. If the notification was already closed (timed
out), then this will delete the notification from history.

The intent is to clear these notifications from the notification history
as soon as a chat with notifications originating from that person is
opened, as the user is then not interested anymore in those
notifications and to prevent unnecessary clutter in the history widget.
It is also cleared when the chat is read on another device.

-- Problem --
Telegram already has all the code in place to support this
functionality, but unfortunately this did not work on Linux before,
because we listen to the NotificationClosed signal and remove our
reference to the notification id from our internal manager as soon as we
get that signal. This means that we do not clear that notification from
history once we open the chat with that person (unless we open the chat
before the notification has timed out, i.e. if we didn't get the
NotificationClosed signal).

-- Fix --
To fix this, we keep our notification reference (if the notification was
not dismissed by the user), which means that our reference will be kept
around until we open the chat with that person (or close Telegram
entirely).

Since all the needed functionality for deleting notifications was
already in place, this patch is quite short as we only need to keep the
reference around longer than we did before this patch.

Note also that code is already in place to clear notifications for
messages that were read on another device: History::inboxRead() calls
Core::App().notifications().clearIncomingFromHistory()

Fixes #17111
2022-03-05 16:51:02 +04:00
Ilya Fedin
daaa654065 Get rid of unneeded MainWindow::Private class on Linux 2022-03-05 16:47:38 +04:00
Ilya Fedin
8db567ba7a Don't hold a dbus connection unecessarily in main window 2022-03-05 16:47:38 +04:00
Ilya Fedin
805e6de1dc Add global menu event hook on Linux just like on macOS 2022-03-05 16:47:38 +04:00
Ilya Fedin
ffbafcb5fb Get rid of Q_OBJECT in macOS MainWindow 2022-03-05 16:47:38 +04:00
Ilya Fedin
1c8d4ee7ab Get rid of Q_OBJECT in HistoryInner 2022-03-05 16:47:38 +04:00
23rd
5718789d53 Replaced Ui::InformBox and Ui::ConfirmBox with GenericBox. 2022-02-28 09:08:01 +03:00
Ilya Fedin
99e8d22c51 Move xdg-foreign support to lib_base 2022-02-04 16:31:40 +03:00
Ilya Fedin
7f0bdc5d36 Fix desktop environment list deduplication 2022-02-02 09:23:14 +03:00
Ilya Fedin
e5981ed22b Move jemalloc initialization code to cmake_helpers 2022-02-01 14:41:54 +03:00
John Preston
ca21b7efae Allow disable Cmd+Q warning on macOS. 2022-02-01 00:43:20 +03:00
John Preston
6207770120 Paint unread mention badge as an icon. 2022-01-28 19:10:07 +03:00
John Preston
28f2c213f7 Remove app module. Support delayed quit by Cmd+Q on macOS. 2022-01-27 15:54:20 +03:00
Ilya Fedin
ceb323ac7c Use QMenuBar instead of own global menu implementation on Linux
This is another attempt of 79f96480c2
2022-01-22 21:18:37 +04:00
Ilya Fedin
b65d40a22b Get rid of custom SNI implementation
XDG is inventing new tray specification, so SNI will be outdated soon and it's better to just use QSystemTrayIcon.
I believe all the major drawbacks of QSystemTrayIcon are solved and we can live with minor ones.
Given the planned MainWindow refactoring, it seems it's the best time to do that.
2022-01-22 21:18:37 +04:00
John Preston
3ff17a8789 Refactor image transformation interfaces. 2022-01-21 15:33:44 +03:00
John Preston
1f194da2f0 Improve macOS title bar font and rounding. 2022-01-17 16:48:32 +03:00
Ilya Fedin
30810e95f4 Log when DE is unknown 2022-01-08 10:59:47 +03:00
Ilya Fedin
a3d84f69ea fixup! Use more sources for DE detection 2022-01-08 10:45:13 +03:00
Ilya Fedin
b3bb1a537c Use more sources for DE detection 2022-01-08 09:55:34 +03:00
Ilya Fedin
726aa3316d Rework DE detection
Variables can point to a mixed environment, make DE detection non-exclusive.
Remove unused methods.
2022-01-07 19:14:59 +03:00
John Preston
ba6c3eaf73 Add dummy Platform::Integration on Linux. 2022-01-06 15:44:02 +03:00
John Preston
3f0fed19d8 Fix build for macOS. 2022-01-06 15:41:17 +03:00
John Preston
18e6e2da9e Open specific chat only in one window. 2022-01-04 19:36:33 +03:00
John Preston
8b0725650d Move global event filter to Platform::Integration on Windows. 2022-01-04 15:29:40 +03:00
John Preston
3cb89339c8 Version 3.4.2: Fix build for Mac App Store. 2021-12-31 23:40:36 +03:00
Klemens Nanni
078a2af385 Fix -Wunused-const-variable warnings under DESKTOP_APP_DISABLE_DBUS_INTEGRATION
OpenBSD builds without dbus integration (for now);  this fixes the warnings.
Those variables have been introduced in multiple commits.
2021-12-29 20:16:04 +03:00
John Preston
e7e34d50ba Fix building on Windows. 2021-12-14 16:27:57 +04:00
Ilya Fedin
48ab88a9ca Don't use QPlatformNativeInterface for native window handle on Windows 2021-12-13 14:24:34 +04:00
Ilya Fedin
33b7ac209e Don't use QPlatformNativeInterface-based XCB::GetRootWindowFromQt 2021-12-13 14:24:34 +04:00
John Preston
01c2be3f01 Add some checks for actions in a locked state. 2021-12-07 10:01:56 +04:00
Ilya Fedin
8592326a3c Revert "Use kernel accelerated sendfile to copy files on Linux"
This reverts commit 34534a9653.
2021-12-02 09:15:23 +04:00
Ilya Fedin
2ad20d6c4a Instantiate a local dbus server for webview IPC 2021-11-29 16:23:51 +04:00
Ilya Fedin
8fda1169e5 Get rid of Platform::MainWindow::psLinux* 2021-11-26 18:28:37 +04:00
Ilya Fedin
53305f5f46 Fix paste check in Linux global menu 2021-11-26 18:28:37 +04:00
23rd
0eee937e6d Moved ChatRestrictionsInfo and ChatAdminRightsInfo to separated file. 2021-11-26 18:00:21 +04:00
John Preston
773755d70e Send as a channel in HistoryWidget. 2021-11-26 18:00:18 +04:00
Ilya Fedin
22b37c4bf8 Use webkitgtk without its headers 2021-11-06 16:33:39 +04:00
John Preston
1ea6224e60 Fix autostart toggling. 2021-11-05 10:15:41 +04:00
John Preston
f10ed4b9bc Support autostart in Windows Store version.
Fixes #3234.
2021-11-04 12:36:28 +04:00
John Preston
3743dd0161 Fix small window icon counter.
Regression was introduced in aef45b3a1d.
2021-11-03 16:14:20 +04:00
John Preston
aef45b3a1d Refactor icon unread counter painting. 2021-11-02 20:12:57 +04:00
John Preston
dab3bce8ba Fix crash on macOS before the app starts. 2021-11-02 00:07:22 +04:00
John Preston
f204b9fca0 RegisterBundledResources only on macOS. 2021-10-29 17:42:57 +04:00
23rd
93ae5e71f7 Guarded timers for online processing in touchbar's PinnedDialogButton. 2021-10-29 16:10:07 +04:00
Ilya Fedin
c50a5db277 Restore dbusmenu-qt dependent functionality with Qt 6 2021-10-24 20:01:55 +04:00
John Preston
389ea2af83 Fix compilation error on Linux. 2021-10-22 18:34:59 +04:00
John Preston
4cf9bf18e9 Fix clearing of macOS native notifications. 2021-10-21 23:37:14 +04:00
John Preston
d361f5c6b0 Hide native notifications of deleted messages. 2021-10-21 23:01:13 +04:00
John Preston
f7085b40b1 Support building macOS version with Qt 6.2. 2021-10-21 19:49:48 +04:00
Ilya Fedin
847c01d605 Add Qt 6 support
Tested only on Linux so far
2021-10-21 13:15:00 +04:00
23rd
80461bd9fe Moved ConfirmBox to Ui namespace. 2021-10-19 06:34:27 +03:00
23rd
6148edbc7d Moved ConfirmBox to td_ui. 2021-10-19 06:34:27 +03:00
John Preston
8cca75da5c Handle foreign instance in COM toast activator. 2021-10-08 13:46:52 +04:00
John Preston
8d0ff1b61d Try setting current window as foreground on activate. 2021-10-08 12:20:24 +04:00
John Preston
dd856b9e4a Use real QWindow for taskbar icon hider.
Fixes #17081.
2021-10-08 12:19:41 +04:00
John Preston
352768053d Beta version 3.1.6: Fix build on Linux. 2021-10-06 21:07:18 +04:00
John Preston
5cd0a3719e Beta version 3.1.6: Detach FastReply from MarkAsRead. 2021-10-06 19:24:30 +04:00
John Preston
8b7cd4a0c7 Beta version 3.1.6: Fix crash on old Windows 10 versions. 2021-10-06 17:36:30 +04:00
John Preston
e7cf560da0 Handle toast activations by COM activator. 2021-10-06 11:02:57 +04:00
John Preston
86e07518ad Fix clearing notifications from Action Center.
Regression was introduced in 997913be25.
2021-10-05 16:53:36 +04:00
John Preston
8c71d03959 Add reply from Windows native notifications. 2021-10-05 16:52:46 +04:00
John Preston
967e86f4ab Rewrite Windows native notifications using C++/WinRT. 2021-10-05 12:09:15 +04:00
John Preston
5136cc3c9c Rename Dialogs::Layout to Dialogs::Ui. 2021-10-04 23:45:21 +04:00
John Preston
b78b27f517 Move dialogs_layout to dialogs/ui/. 2021-10-04 23:45:21 +04:00
Ilya Fedin
c2212c719e Inform Qt about taskbar hider
This allows the feature to work without patching Qt
2021-10-04 23:23:50 +04:00
23rd
21f7cec781 Fixed build for macOS. 2021-09-30 21:21:07 +04:00
23rd
64af456d29 Fixed build for macOS. 2021-09-30 21:16:45 +04:00
Ilya Fedin
d2a41a42e0 Move applicationDidFinishLaunching code to init
This should make the Qt patch catching the event unneeded
2021-09-29 09:04:23 +04:00
John Preston
844fd58a97 Support Windows 11 rounded corners and themeable title bar. 2021-09-28 21:11:35 +04:00
John Preston
19ce1edc16 Use base::SafeRound instead of std::round.
Previous assertion violations because of NaN from std::round were
in video streaming, see commits 27d58ba07b, 8f5830d520.

Now the crashes happened in the ConvertScale() call from a background
thread when preparing an image from clipboard for sending to a chat.
2021-09-27 12:13:57 +04:00
John Preston
8759ca4577 Rewrite bingmaps check to C++/WinRT. 2021-09-26 17:17:57 +04:00
Hermesis
d5c6d9a231 Open map in browser if default "bingmaps:" handler is not found 2021-09-26 17:16:38 +04:00
Gleb Smirnoff
59f2f750b4 On FreeBSD the system malloc is jemalloc and non-portable
extensions are enabled including malloc_np.h.
2021-09-15 23:24:39 +03:00
John Preston
8069fdd873 Use base/random.h instead of openssl::RandomValue. 2021-09-15 13:42:22 +03:00
Ilya Fedin
e92ae40ecb Implement close to taskbar option 2021-09-13 17:46:53 +03:00
Ilya Fedin
3fbd68cff9 Don't link glib with DESKTOP_APP_DISABLE_DBUS_INTEGRATION 2021-09-12 00:12:13 +03:00
Gleb Smirnoff
720f238cf8 Close a race between Gio threads and Qt application init.
QApplication has a historical feature[1] of calling setlocale(3) at init,
which today cause more harm than good.  Such call isn't thread safe neither
per C standard, not per any known libc implementation.  The Gio threads
would call into locale reading functions all the time, so early access to
locale by Gio may race with setlocale() by Qt leading to undefined behavior.

Platform specific start before the Sandbox (aka QApplication) is at core
design of tdesktop and that order can't be changed. There is no way to pause
Gio until QApplication instantiates.

Fortunately, Qt library itself has a static global flag that prevents it
from calling setlocale() twice. We don't even need to instantiate a
temporary QCoreApplication, we can just call into the method.  So call
it form Platform::start before any existing or future calls to Gio.

Fixes #16922

[1] https://chat.stackoverflow.com/rooms/63812/discussion-between-phil-armstrong-and-matteo-italia
2021-09-10 13:18:20 +03:00
23rd
900a7d0b2b Appended references to const auto types in loop to prevent copying.
Suggested by Apple Clang.
2021-09-09 16:32:04 +03:00
Ilya Fedin
45360adbc2 Remove unneeded libraries from snapcraft.yaml 2021-09-07 23:40:08 +03:00
Ilya Fedin
05d4d58f8b Replace GTK integration with xsettings + XDP 2021-09-06 15:43:28 +03:00