GIFs get paused if some other layer is displayed above.
Media preview > Box or layer > Saved GIFs panel > Inline bot results.
If any of those is displayed, GIFs inside message history pause too.
Sometimes you don't need shared ownership (shared_ptr), but you
still need to be able to have weak pointers to an object.
Now you can derive the object from base::enable_weak_from_this
and use base::weak_unique_ptr<T> after that.
Ubuntu 17.04 launch results in segfault if the build was done
by GCC 6.2 (works fine with GCC 4.9). Backtrace shows that it
crashes in gtk_init_check() call somewhere in libmirclient and
tests show that it works fine with GDK_BACKEND=x11.
So we use gdk_set_allowed_backends() method to explicitly state
that we support only "x11" GDK backend, that way it doesn't try
to use libmirclient and it does not crash.
Fix#3176#3162
WebDocument size field is not a reliable information,
it can be > 0 and != upload.WebFile size field, so just ignore it
and load all WebDocument files as files with unknown size.
Also replacing the Buy keyboard button with Receipt if the invoice
was payed already (like in mobile apps). This required to move the
inline markup apply before the media apply in message editing.
We load a WebDocument with an unknown size the same way as we load
normal photos with FileLocation, that doesn't contain size as well.
If the size information from WebDocument and upload.WebFile is
inconsistent we still fail to load the file.
New button type keyboardButtonBuy just shows a box with information.
WebDocument photo type is not supported yet, 'photo' is ignored.
Also HistoryMediaPtr is now implemented as a std::unique_ptr wrapper.
What has been done:
* Removed deprecated Encoding key
* Specified correct WM class for StartupWMClass key
* Fixed icon name
I also fixed restarting when language is changed and there is no Updater
Signed-off-by: Nicholas Guriev <guriev-ns@ya.ru> (github: mymedia2)
base::lambda_guarded may destroy the lambda after the owner. In case
of SelfDestructionBox it lead to a dtor of a dangling object_ptr.
MTP::Sender destroys the lambda handlers together with itself.
Now group of Ui::Radiobutton instances share Ui::RadiobuttonGroup.
All value management is done through the group instance, not through
separate radio buttons. Also a template for groups over enums added.
Commit a1b53c660e introduced a regression which caused images that
were shown for sending confirmation as a file path + image not being
passed to FileLoadTask in _image field, they were passed in the
_information field instead. They were not sent in case the file path
was not existing at the moment of processing. If the file path does
not exist anymore read the image from _information and send it.
Use a python script to generate the list of sources to build.
Now we don't include moc_*.cpp files in build by default, instead
we list only non-empty ones.
If you change a header so that the corresponding moc_*.cpp changes
its emptyness you may need to gyp/refresh to apply this change.
This should speed up the build significantly on GCC.
~HistoryItem() sometimes causes a queued notification to show.
Custom notifications depend on MainWindow and it is destroyed
already in clearHistories(), so clear the notifications queue first.
It seems that heavy using std::shared_ptr and std::make_shared
like it was before completely kills the compilation time.
Also HistoryItem::_create now uses perfect forwarding.
Server has some extensions checking for inputMediaUploadedPhoto,
so force the extension to be .jpg anyway. It doesn't matter,
because the filename from inputFile is not used anywhere.
Also own PhotoData::UploadingData through std::unique_ptr.
Read media information (image / song / video) in SendFileBox in the
same way it is read in FileLoadTask::process() and reuse it in
FileLoadTask if it was loaded already for the box.
Sometimes QClipboard::text() unexpectedly freezes on macOS, no known
causes for that. But before we were requesting the clipboard text after
each change in any text field to update macOS global menu items.
Now we use Cocoa API directly to find out if there were any changes to
the clipboard content and query text through Qt only if we have changes.
That way it should almost never freeze (at least) or even really never.
Currently the build without implicitly included precompiled header
is not supported anyway (because Qt MOC source files do not include
stdafx.h, they include plain headers).
So when we decide to support building without implicitly included
precompiled headers we'll have to fix all the headers anyway.
Now you can type "endpoints" in Settings and choose a file with
a complete set of dc_options that will be used instead of built-in
or received through mtproto config till the end of current session.
Sometimes Text::_maxWidth was not accumulated correctly because
the intermediate text blocks had negative right bearing larger
than the whole width of the next text block, so the final computed
line width was less than some intermediate value. Now we accumulate
the _maxWidth value after each block making this value correct.
Now we use only new authorization keys for signing in. If we are
preparing to sign in and we see, that some of the authorization
keys were not generated in this launch, but were read from file, we
destroy all existing auth keys and generate a completely new set.
Some major platform-dependent file operations refactoring.
All methods like "open file", "open file with", "show in folder"
were moved to core/file_utilities module with platform-dependent
backends. All methods interacting with DesktopServices made async.
Now each platform-dependent module declares its interface in
platform/platform_module.h file and after that includes platform-
specific headers like platform/win/module_win.h with implementation.
Also removed the legacy WinRT platform-dependent implementations.
ShellExecute() call reenters Qt event loop, so each time we
schedule a delayed action (like destroying FileLoader) and after
that we call ShellExecute (in psOpenFile) we destroy it inside
this call and can't use it after.
So now we perform ShellExecute calls only delayed (using task queue).
When we choose a file from URL we don't get the filename.
In background image apply method we test for a theme / palette
file extensions. Now we don't crash there, but we still can't set
a .tdesktop-theme or .tdesktop-palette file from URL. Who cares :)
Special FileLoader destructor crash added to find the code path
leading to crashes that could be observed through the reports.
Looks like progress() signal handlers enter event loop somehow.
If the MTP::Instance is not started yet (we forgot our passcode),
the logout attempt was attempting to use mtproto from Intro::Widget
constructor before it was created. Now we create it before logout.