diff --git a/Telegram/SourceFiles/core/application.cpp b/Telegram/SourceFiles/core/application.cpp index a2b99e6cd..1d0a23af7 100644 --- a/Telegram/SourceFiles/core/application.cpp +++ b/Telegram/SourceFiles/core/application.cpp @@ -729,6 +729,12 @@ QWidget *Application::getFileDialogParent() { : nullptr; } +void Application::notifyFileDialogShown(bool shown) { + if (_mediaView) { + _mediaView->notifyFileDialogShown(shown); + } +} + void Application::checkMediaViewActivation() { if (_mediaView && !_mediaView->isHidden()) { _mediaView->activateWindow(); diff --git a/Telegram/SourceFiles/core/application.h b/Telegram/SourceFiles/core/application.h index 84b9edabe..8ee6961c3 100644 --- a/Telegram/SourceFiles/core/application.h +++ b/Telegram/SourceFiles/core/application.h @@ -99,6 +99,7 @@ public: bool closeActiveWindow(); bool minimizeActiveWindow(); QWidget *getFileDialogParent(); + void notifyFileDialogShown(bool shown); // Media view interface. void checkMediaViewActivation(); diff --git a/Telegram/SourceFiles/core/file_utilities.cpp b/Telegram/SourceFiles/core/file_utilities.cpp index 0434d5599..3b0591df6 100644 --- a/Telegram/SourceFiles/core/file_utilities.cpp +++ b/Telegram/SourceFiles/core/file_utilities.cpp @@ -360,11 +360,13 @@ bool GetDefault( Platform::FileDialog::InitLastPath(); } - remoteContent = QByteArray(); + remoteContent = QByteArray(); if (startFile.isEmpty() || startFile.at(0) != '/') { startFile = cDialogLastPath() + '/' + startFile; } QString file; + + Core::App().notifyFileDialogShown(true); if (type == Type::ReadFiles) { files = QFileDialog::getOpenFileNames(Core::App().getFileDialogParent(), caption, startFile, filter); QString path = files.isEmpty() ? QString() : QFileInfo(files.back()).absoluteDir().absolutePath(); @@ -373,17 +375,19 @@ bool GetDefault( Local::writeUserSettings(); } return !files.isEmpty(); - } else if (type == Type::ReadFolder) { + } else if (type == Type::ReadFolder) { file = QFileDialog::getExistingDirectory(Core::App().getFileDialogParent(), caption, startFile); - } else if (type == Type::WriteFile) { + } else if (type == Type::WriteFile) { file = QFileDialog::getSaveFileName(Core::App().getFileDialogParent(), caption, startFile, filter); - } else { + } else { file = QFileDialog::getOpenFileName(Core::App().getFileDialogParent(), caption, startFile, filter); - } - if (file.isEmpty()) { - files = QStringList(); - return false; - } + } + Core::App().notifyFileDialogShown(false); + + if (file.isEmpty()) { + files = QStringList(); + return false; + } if (type != Type::ReadFolder) { // Save last used directory for all queries except directory choosing. auto path = QFileInfo(file).absoluteDir().absolutePath(); diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp index 9aa9e6cc9..ad3109ef1 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.cpp @@ -1095,6 +1095,17 @@ void OverlayWidget::onToMessage() { } } +void OverlayWidget::notifyFileDialogShown(bool shown) { + if (shown && isHidden()) { + return; + } + if (shown) { + Ui::Platform::BringToBack(this); + } else { + Ui::Platform::ShowOverAll(this); + } +} + void OverlayWidget::onSaveAs() { QString file; if (_doc) { @@ -1116,9 +1127,7 @@ void OverlayWidget::onSaveAs() { filter = mimeType.filterString() + qsl(";;") + FileDialog::AllFilesFilter(); } - Ui::Platform::BringToBack(this); file = FileNameForSave(tr::lng_save_file(tr::now), filter, qsl("doc"), name, true, alreadyDir); - Ui::Platform::ShowOverAll(this); if (!file.isEmpty() && file != location.name()) { if (_doc->data().isEmpty()) { QFile(file).remove(); @@ -1142,7 +1151,6 @@ void OverlayWidget::onSaveAs() { } else { if (!_photo || !_photo->loaded()) return; - Ui::Platform::BringToBack(this); auto filter = qsl("JPEG Image (*.jpg);;") + FileDialog::AllFilesFilter(); FileDialog::GetWritePath( this, @@ -1158,9 +1166,6 @@ void OverlayWidget::onSaveAs() { if (!result.isEmpty() && _photo == photo && photo->loaded()) { photo->large()->original().save(result, "JPG"); } - Ui::Platform::ShowOverAll(this); - }), crl::guard(this, [=] { - Ui::Platform::ShowOverAll(this); })); } activateWindow(); diff --git a/Telegram/SourceFiles/media/view/media_view_overlay_widget.h b/Telegram/SourceFiles/media/view/media_view_overlay_widget.h index e5be29ad4..7c3152a13 100644 --- a/Telegram/SourceFiles/media/view/media_view_overlay_widget.h +++ b/Telegram/SourceFiles/media/view/media_view_overlay_widget.h @@ -92,6 +92,8 @@ public: PeerData *ui_getPeerForMouseAction(); + void notifyFileDialogShown(bool shown); + void clearData(); ~OverlayWidget();