From 0d865ccf8d786857da1a1e92b24e196cbdc7afb8 Mon Sep 17 00:00:00 2001 From: Andrej Shadura Date: Wed, 6 Jan 2021 16:06:32 +0100 Subject: New upstream version 4.0.5 --- src/libaudqt/audqt.cc | 2 ++ src/libaudqt/fileopener.cc | 4 ++-- src/libaudqt/font-entry.cc | 2 +- src/libaudqt/info-widget.cc | 5 +++-- src/libaudqt/libaudqt-internal.h | 3 +++ src/libaudqt/log-inspector.cc | 3 ++- src/libaudqt/prefs-plugin.cc | 22 ++++++++++++++-------- src/libaudqt/queue-manager-qt.cc | 6 +++++- 8 files changed, 32 insertions(+), 15 deletions(-) (limited to 'src/libaudqt') diff --git a/src/libaudqt/audqt.cc b/src/libaudqt/audqt.cc index c81eb20..a5d3e95 100644 --- a/src/libaudqt/audqt.cc +++ b/src/libaudqt/audqt.cc @@ -105,6 +105,7 @@ EXPORT void cleanup() infopopup_hide_now(); infowin_hide(); log_inspector_hide(); + plugin_prefs_hide(); prefswin_hide(); queue_manager_hide(); @@ -228,6 +229,7 @@ EXPORT void simple_message(const char * title, const char * text, auto msgbox = new QMessageBox(icon, title, text, QMessageBox::Close); msgbox->button(QMessageBox::Close)->setText(translate_str(N_("_Close"))); msgbox->setAttribute(Qt::WA_DeleteOnClose); + msgbox->setTextInteractionFlags(Qt::TextSelectableByMouse); msgbox->show(); } diff --git a/src/libaudqt/fileopener.cc b/src/libaudqt/fileopener.cc index d1af3df..de2173e 100644 --- a/src/libaudqt/fileopener.cc +++ b/src/libaudqt/fileopener.cc @@ -78,7 +78,7 @@ EXPORT void fileopener_show(FileMode mode) if (mode == FileMode::ExportPlaylist) dialog->setAcceptMode(QFileDialog::AcceptSave); - QObject::connect(dialog, &QFileDialog::directoryEntered, + QObject::connect(dialog.data(), &QFileDialog::directoryEntered, [](const QString & path) { aud_set_str("audgui", "filesel_path", path.toUtf8().constData()); @@ -87,7 +87,7 @@ EXPORT void fileopener_show(FileMode mode) auto playlist = Playlist::active_playlist(); QObject::connect( - dialog, &QFileDialog::accepted, [dialog, mode, playlist]() { + dialog.data(), &QFileDialog::accepted, [dialog, mode, playlist]() { Index files; for (const QUrl & url : dialog->selectedUrls()) files.append(String(url.toEncoded().constData())); diff --git a/src/libaudqt/font-entry.cc b/src/libaudqt/font-entry.cc index 95b4ff5..ff5b698 100644 --- a/src/libaudqt/font-entry.cc +++ b/src/libaudqt/font-entry.cc @@ -148,7 +148,7 @@ void FontEntry::show_dialog() { m_dialog = new QFontDialog(this); - QObject::connect(m_dialog, &QFontDialog::fontSelected, + QObject::connect(m_dialog.data(), &QFontDialog::fontSelected, [this](const QFont & font) { setText((const char *)qfont_to_string(font)); end(false); diff --git a/src/libaudqt/info-widget.cc b/src/libaudqt/info-widget.cc index 0baa2fd..b5c7408 100644 --- a/src/libaudqt/info-widget.cc +++ b/src/libaudqt/info-widget.cc @@ -162,10 +162,11 @@ public: InfoModel(QObject * parent = nullptr) : QAbstractTableModel(parent) {} - int rowCount(const QModelIndex &) const override + int rowCount(const QModelIndex & parent) const override { - return aud::n_elems(tuple_field_map); + return parent.isValid() ? 0 : aud::n_elems(tuple_field_map); } + int columnCount(const QModelIndex &) const override { return 2; } QVariant data(const QModelIndex & index, int role) const override; diff --git a/src/libaudqt/libaudqt-internal.h b/src/libaudqt/libaudqt-internal.h index 3dd1398..3d67a45 100644 --- a/src/libaudqt/libaudqt-internal.h +++ b/src/libaudqt/libaudqt-internal.h @@ -36,6 +36,9 @@ void infopopup_hide_now(); void log_init(); void log_cleanup(); +/* prefs-plugin.cc */ +void plugin_prefs_hide(); + /* util-qt.cc */ class PopupWidget : public QWidget { diff --git a/src/libaudqt/log-inspector.cc b/src/libaudqt/log-inspector.cc index a5d5440..028f757 100644 --- a/src/libaudqt/log-inspector.cc +++ b/src/libaudqt/log-inspector.cc @@ -67,8 +67,9 @@ public: protected: int rowCount(const QModelIndex & parent = QModelIndex()) const { - return m_entries.len(); + return parent.isValid() ? 0 : m_entries.len(); } + int columnCount(const QModelIndex & parent = QModelIndex()) const { return LogEntryColumn::Count; diff --git a/src/libaudqt/prefs-plugin.cc b/src/libaudqt/prefs-plugin.cc index 473d9bc..a7f6e94 100644 --- a/src/libaudqt/prefs-plugin.cc +++ b/src/libaudqt/prefs-plugin.cc @@ -17,8 +17,11 @@ * the use of this software. */ +#include + #include #include +#include #include #include @@ -29,6 +32,7 @@ #include #include +#include "libaudqt-internal.h" #include "libaudqt.h" namespace audqt @@ -61,17 +65,19 @@ EXPORT void plugin_about(PluginHandle * ph) struct ConfigWindow { PluginHandle * ph; - QDialog * root; + QPointer root; + + ~ConfigWindow() { delete root; } }; -static Index config_windows; +static Index> config_windows; static ConfigWindow * find_config_window(PluginHandle * ph) { - for (ConfigWindow * cw : config_windows) + for (auto & cw : config_windows) { if (cw && cw->ph == ph) - return cw; + return cw.get(); } return nullptr; @@ -108,11 +114,9 @@ EXPORT void plugin_prefs(PluginHandle * ph) if (p->init) p->init(); - QObject::connect(cw->root, &QObject::destroyed, [p, cw]() { + QObject::connect(cw->root.data(), &QObject::destroyed, [p]() { if (p->cleanup) p->cleanup(); - - cw->root = nullptr; }); const char * name = header->info.name; @@ -147,7 +151,7 @@ EXPORT void plugin_prefs(PluginHandle * ph) ->setText(translate_str(N_("_Close"))); } - QObject::connect(bbox, &QDialogButtonBox::rejected, cw->root, + QObject::connect(bbox, &QDialogButtonBox::rejected, cw->root.data(), &QObject::deleteLater); vbox->addWidget(bbox); @@ -155,4 +159,6 @@ EXPORT void plugin_prefs(PluginHandle * ph) window_bring_to_front(cw->root); } +void plugin_prefs_hide(void) { config_windows.clear(); } + } // namespace audqt diff --git a/src/libaudqt/queue-manager-qt.cc b/src/libaudqt/queue-manager-qt.cc index 2cf53bd..dd1e993 100644 --- a/src/libaudqt/queue-manager-qt.cc +++ b/src/libaudqt/queue-manager-qt.cc @@ -50,7 +50,11 @@ public: const QItemSelection & deselected); protected: - int rowCount(const QModelIndex & parent) const { return m_rows; } + int rowCount(const QModelIndex & parent) const + { + return parent.isValid() ? 0 : m_rows; + } + int columnCount(const QModelIndex & parent) const { return 2; } QVariant data(const QModelIndex & index, int role) const; -- cgit v1.2.3