Skip to content

Commit

Permalink
Restore using sheet-style dialogs on OS X 10.8+.
Browse files Browse the repository at this point in the history
  • Loading branch information
ddennedy committed May 28, 2014
1 parent b1ae4d4 commit 4ce8daa
Show file tree
Hide file tree
Showing 9 changed files with 44 additions and 21 deletions.
6 changes: 4 additions & 2 deletions src/docks/encodedock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
#include "mltcontroller.h"
#include "mainwindow.h"
#include "settings.h"
#include "qmltypes/qmlutilities.h"

#include <QtDebug>
#include <QtWidgets>
#include <QtXml>
Expand Down Expand Up @@ -718,7 +720,7 @@ void EncodeDock::on_streamButton_clicked()
dialog.setWindowTitle(tr("Stream"));
dialog.setLabelText(tr("Enter the network protocol scheme, address, port, and parameters as an URL:"));
dialog.setTextValue("udp://224.224.224.224:1234?pkt_size=1316&reuse=1");
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
int r = dialog.exec();
QString url = dialog.textValue();
if (r == QDialog::Accepted && !url.isEmpty()) {
Expand Down Expand Up @@ -803,7 +805,7 @@ void EncodeDock::on_removePresetButton_clicked()
this);
dialog.setDefaultButton(QMessageBox::Yes);
dialog.setEscapeButton(QMessageBox::No);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
int result = dialog.exec();
if (result == QMessageBox::Yes) {
QDir dir(QStandardPaths::standardLocations(QStandardPaths::DataLocation).first());
Expand Down
7 changes: 4 additions & 3 deletions src/docks/filtersdock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -289,10 +289,11 @@ void FiltersDock::loadQuickPanel(const QmlMetadata* metadata, int row)
QDir importPath = QmlUtilities::qmlDir();
importPath.cd("modules");
qqview->engine()->addImportPath(importPath.path());
qqview->rootContext()->setContextProperty("Shotcut", new QmlUtilities(qqview));
qqview->rootContext()->setContextProperty("settings", &ShotcutSettings::singleton());
QmlFilter* qmlFilter = new QmlFilter(m_model, *metadata, row, qqview);
qqview->engine()->rootContext()->setContextProperty("filter", qmlFilter);
QmlProfile* qmlProfile = new QmlProfile(qqview);
qqview->engine()->rootContext()->setContextProperty("profile", qmlProfile);
qqview->rootContext()->setContextProperty("filter", qmlFilter);
qqview->rootContext()->setContextProperty("profile", new QmlProfile(qqview));
qqview->setResizeMode(QQuickView::SizeRootObjectToView);
qqview->setColor(palette().window().color());
qqview->setSource(QUrl::fromLocalFile(metadata->qmlFilePath()));
Expand Down
2 changes: 2 additions & 0 deletions src/docks/timelinedock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "commands/timelinecommands.h"
#include "docks/filtersdock.h"
#include "settings.h"
#include "qmltypes/qmlutilities.h"

#include <QtQml>
#include <QtQuick>
Expand All @@ -48,6 +49,7 @@ TimelineDock::TimelineDock(QWidget *parent) :
importPath.cd("modules");
m_quickView.engine()->addImportPath(importPath.path());
m_quickView.engine()->addImageProvider(QString("thumbnail"), new ThumbnailProvider);
m_quickView.rootContext()->setContextProperty("Shotcut", new QmlUtilities(this));
m_quickView.rootContext()->setContextProperty("timeline", this);
m_quickView.rootContext()->setContextProperty("multitrack", &m_model);
m_quickView.rootContext()->setContextProperty("settings", &ShotcutSettings::singleton());
Expand Down
5 changes: 3 additions & 2 deletions src/filters/webvfxfilter.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2013 Meltytech, LLC
* Copyright (c) 2013-2014 Meltytech, LLC
* Author: Dan Dennedy <dan@dennedy.org>
*
* This program is free software: you can redistribute it and/or modify
Expand Down Expand Up @@ -27,6 +27,7 @@
#include "mainwindow.h"
#include "htmleditor/htmleditor.h"
#include "settings.h"
#include "qmltypes/qmlutilities.h"

WebvfxFilter::WebvfxFilter(Mlt::Filter filter, QWidget *parent) :
QWidget(parent),
Expand Down Expand Up @@ -98,7 +99,7 @@ void WebvfxFilter::on_webvfxCheckBox_clicked(bool checked)
this);
dialog.setDefaultButton(QMessageBox::Yes);
dialog.setEscapeButton(QMessageBox::No);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
if (dialog.exec() == QMessageBox::No)
ui->webvfxCheckBox->setChecked(false);
}
Expand Down
13 changes: 7 additions & 6 deletions src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
#include "docks/timelinedock.h"
#include "widgets/lumamixtransition.h"
#include "mltxmlgpuchecker.h"
#include "qmltypes/qmlutilities.h"

#include <QtWidgets>
#include <QDebug>
Expand Down Expand Up @@ -558,7 +559,7 @@ bool MainWindow::isCompatibleWithGpuMode(const QString &url)
QMessageBox::No |
QMessageBox::Yes,
this);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
dialog.setDefaultButton(QMessageBox::Yes);
dialog.setEscapeButton(QMessageBox::No);
int r = dialog.exec();
Expand All @@ -575,7 +576,7 @@ bool MainWindow::isCompatibleWithGpuMode(const QString &url)
QMessageBox::No |
QMessageBox::Yes,
this);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
dialog.setDefaultButton(QMessageBox::Yes);
dialog.setEscapeButton(QMessageBox::No);
int r = dialog.exec();
Expand Down Expand Up @@ -1286,7 +1287,7 @@ bool MainWindow::continueModified()
QMessageBox::Cancel |
QMessageBox::Yes,
this);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
dialog.setDefaultButton(QMessageBox::Yes);
dialog.setEscapeButton(QMessageBox::Cancel);
int r = dialog.exec();
Expand Down Expand Up @@ -1847,7 +1848,7 @@ void MainWindow::onLanguageTriggered(QAction* action)
this);
dialog.setDefaultButton(QMessageBox::Yes);
dialog.setEscapeButton(QMessageBox::No);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
if (dialog.exec() == QMessageBox::Yes)
QApplication::closeAllWindows();
}
Expand Down Expand Up @@ -1894,7 +1895,7 @@ void MainWindow::on_actionGPU_triggered(bool checked)
this);
dialog.setDefaultButton(QMessageBox::Yes);
dialog.setEscapeButton(QMessageBox::No);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
if (dialog.exec() == QMessageBox::Yes)
QApplication::closeAllWindows();
}
Expand Down Expand Up @@ -1965,7 +1966,7 @@ void MainWindow::onProfileTriggered(QAction *action)
void MainWindow::on_actionAddCustomProfile_triggered()
{
CustomProfileDialog dialog(this);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
if (dialog.exec() == QDialog::Accepted) {
QDir dir(QStandardPaths::standardLocations(QStandardPaths::DataLocation).first());
if (dir.cd("profiles")) {
Expand Down
10 changes: 6 additions & 4 deletions src/mvcp/meltedplaylistdock.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012 Meltytech, LLC
* Copyright (c) 2012-2014 Meltytech, LLC
* Author: Dan Dennedy <dan@dennedy.org>
*
* This program is free software: you can redistribute it and/or modify
Expand All @@ -19,6 +19,8 @@
#include "meltedplaylistdock.h"
#include "ui_meltedplaylistdock.h"
#include "mainwindow.h"
#include "qmltypes/qmlutilities.h"

#include <QMimeData>
#include <QFileInfo>
#include <QKeyEvent>
Expand Down Expand Up @@ -199,7 +201,7 @@ void MeltedPlaylistDock::on_actionRemoveAll_triggered()
this);
dialog.setDefaultButton(QMessageBox::Yes);
dialog.setEscapeButton(QMessageBox::No);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
int r = dialog.exec();
if (r == QMessageBox::Yes)
m_model.clear();
Expand All @@ -216,7 +218,7 @@ void MeltedPlaylistDock::on_actionWipe_triggered()
this);
dialog.setDefaultButton(QMessageBox::Yes);
dialog.setEscapeButton(QMessageBox::No);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
int r = dialog.exec();
if (r == QMessageBox::Yes)
m_model.wipe();
Expand All @@ -234,7 +236,7 @@ void MeltedPlaylistDock::on_actionClean_triggered()
this);
dialog.setDefaultButton(QMessageBox::Yes);
dialog.setEscapeButton(QMessageBox::No);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
int r = dialog.exec();
if (r == QMessageBox::Yes)
m_model.clean();
Expand Down
9 changes: 9 additions & 0 deletions src/qmltypes/qmlutilities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

#include "qmlutilities.h"
#include <QCoreApplication>
#include <QSysInfo>

QmlUtilities::QmlUtilities(QObject *parent) :
QObject(parent)
Expand All @@ -36,3 +37,11 @@ QDir QmlUtilities::qmlDir()
return dir;
}

Qt::WindowModality QmlUtilities::dialogModality()
{
#ifdef Q_OS_OSX
return (QSysInfo::macVersion() >= QSysInfo::MV_10_8)? Qt::WindowModal : Qt::ApplicationModal;
#else
return Qt::ApplicationModal;
#endif
}
5 changes: 4 additions & 1 deletion src/qmltypes/qmlutilities.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2013 Meltytech, LLC
* Copyright (c) 2013-2014 Meltytech, LLC
* Author: Dan Dennedy <dan@dennedy.org>
*
* This program is free software: you can redistribute it and/or modify
Expand All @@ -25,10 +25,13 @@
class QmlUtilities : public QObject
{
Q_OBJECT
Q_PROPERTY(Qt::WindowModality dialogModality READ dialogModality);

public:
explicit QmlUtilities(QObject *parent = 0);

static QDir qmlDir();
static Qt::WindowModality dialogModality();
};

#endif // QMLUTILITIES_H
8 changes: 5 additions & 3 deletions src/widgets/servicepresetwidget.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2012 Meltytech, LLC
* Copyright (c) 2012-2014 Meltytech, LLC
* Author: Dan Dennedy <dan@dennedy.org>
*
* This program is free software: you can redistribute it and/or modify
Expand All @@ -18,6 +18,8 @@

#include "servicepresetwidget.h"
#include "ui_servicepresetwidget.h"
#include "qmltypes/qmlutilities.h"

#include <QStandardPaths>
#include <QDir>
#include <QInputDialog>
Expand Down Expand Up @@ -81,7 +83,7 @@ void ServicePresetWidget::savePreset(Mlt::Properties* properties)
dialog.setInputMode(QInputDialog::TextInput);
dialog.setWindowTitle(tr("Save Preset"));
dialog.setLabelText(tr("Name:"));
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
int r = dialog.exec();
QString preset = dialog.textValue();
if (r == QDialog::Accepted && !preset.isEmpty()) {
Expand Down Expand Up @@ -137,7 +139,7 @@ void ServicePresetWidget::on_deletePresetButton_clicked()
this);
dialog.setDefaultButton(QMessageBox::Yes);
dialog.setEscapeButton(QMessageBox::No);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setWindowModality(QmlUtilities::dialogModality());
int result = dialog.exec();
if (result == QMessageBox::Yes) {
QDir dir(QStandardPaths::standardLocations(QStandardPaths::DataLocation).first());
Expand Down

0 comments on commit 4ce8daa

Please sign in to comment.