Skip to content

Commit

Permalink
UI: Don't show native popup for YouTube auth message box
Browse files Browse the repository at this point in the history
The native popup has the problem that it doesn't work for links, leaving
us with an unclickable text where a link should be. Qt 6.6 has an option
to disable the native dialog, so let's add this to make the link
clickable again.

Co-authored-by: derrod <dennis@obsproject.com>
  • Loading branch information
2 people authored and Lain-B committed Sep 11, 2023
1 parent e5472c7 commit 839461d
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions UI/auth-youtube.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,11 @@ std::shared_ptr<Auth> YoutubeAuth::Login(QWidget *owner,
dlg.setText(text);
dlg.setTextFormat(Qt::RichText);
dlg.setStandardButtons(QMessageBox::StandardButton::Cancel);
#if defined(__APPLE__) && QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)
/* We can't show clickable links with the native NSAlert, so let's
* force the old non-native dialog instead. */
dlg.setOption(QMessageBox::Option::DontUseNativeDialog);
#endif

connect(&dlg, &QMessageBox::buttonClicked, &dlg,
[&](QAbstractButton *) {
Expand Down Expand Up @@ -311,7 +316,17 @@ std::shared_ptr<Auth> YoutubeAuth::Login(QWidget *owner,
QScopedPointer<QThread> thread(CreateQThread(open_external_browser));
thread->start();

#if defined(__APPLE__) && QT_VERSION >= QT_VERSION_CHECK(6, 5, 0) && \
QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
const bool nativeDialogs =
qApp->testAttribute(Qt::AA_DontUseNativeDialogs);
App()->setAttribute(Qt::AA_DontUseNativeDialogs, true);
dlg.exec();
App()->setAttribute(Qt::AA_DontUseNativeDialogs, nativeDialogs);
#else
dlg.exec();
#endif

if (dlg.result() == QMessageBox::Cancel ||
dlg.result() == QDialog::Rejected)
return nullptr;
Expand Down

0 comments on commit 839461d

Please sign in to comment.