GUI: add preference for staying on top of other windows

Implements #2967.
This commit is contained in:
Moritz Bunkus 2021-01-04 00:21:23 +01:00
parent b6cb2e40cd
commit 5fcf946cd6
No known key found for this signature in database
GPG Key ID: 74AF00ADF2E32C85
8 changed files with 33 additions and 0 deletions

View File

@ -9,6 +9,8 @@
file names selected for saving on platforms that don't add one itself
(e.g. GNOME). For example, when saving multiplexer settings the extension
`.mtxcfg` will be added. Implements #2983.
* MKVToolNix GUI: added an option to the preferences for the window to stay on
top of other windows. Implements #2967.
## Bug fixes

View File

@ -133,6 +133,13 @@
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="cbGuiStayOnTop">
<property name="text">
<string>Stay on top of other &amp;windows</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbGuiDisableHighDPIScaling">
<property name="text">
@ -2158,6 +2165,7 @@
<tabstop>cbGuiInterfaceLanguage</tabstop>
<tabstop>fcbGuiFontFamily</tabstop>
<tabstop>sbGuiFontPointSize</tabstop>
<tabstop>cbGuiStayOnTop</tabstop>
<tabstop>cbGuiDisableHighDPIScaling</tabstop>
<tabstop>cbGuiDisableDarkStyleSheet</tabstop>
<tabstop>cbGuiDisableToolTips</tabstop>

View File

@ -86,6 +86,7 @@ MainWindow::MainWindow(QWidget *parent)
p->ui->setupUi(this);
setToolSelectorVisibility();
setStayOnTopStatus();
setupAuxiliaryWidgets();
setupToolSelector();
setupHelpURLs();
@ -225,6 +226,7 @@ MainWindow::setupConnections() {
// Auxiliary actions:
connect(this, &MainWindow::preferencesChanged, this, &MainWindow::setToolSelectorVisibility);
connect(this, &MainWindow::preferencesChanged, this, &MainWindow::setStayOnTopStatus);
connect(this, &MainWindow::preferencesChanged, app, &App::reinitializeLanguageLists);
connect(this, &MainWindow::preferencesChanged, app, &App::setupAppearance);
@ -630,6 +632,19 @@ MainWindow::setToolSelectorVisibility() {
p->ui->tool->tabBar()->setVisible(Util::Settings::get().m_showToolSelector);
}
void
MainWindow::setStayOnTopStatus() {
auto oldFlags = windowFlags();
auto newFlags = Util::Settings::get().m_uiStayOnTop ? oldFlags | Qt::WindowStaysOnTopHint
: oldFlags & ~Qt::WindowStaysOnTopHint;
if (oldFlags == newFlags)
return;
setWindowFlags(newFlags);
show();
}
std::optional<bool>
MainWindow::filterWheelEventForStrongFocus(QObject *watched,
QEvent *event) {

View File

@ -83,6 +83,7 @@ public Q_SLOTS:
virtual void showCodeOfConduct();
virtual void showSystemInformation();
virtual void setToolSelectorVisibility();
virtual void setStayOnTopStatus();
virtual void raiseAndActivate();
#if defined(HAVE_UPDATE_CHECK)

View File

@ -853,6 +853,8 @@ PreferencesDialog::setupFontAndScaling() {
#if !defined(SYS_WINDOWS)
ui->cbGuiDisableDarkStyleSheet->setVisible(false);
#endif
ui->cbGuiStayOnTop->setChecked(m_cfg.m_uiStayOnTop);
}
void
@ -863,6 +865,7 @@ PreferencesDialog::save() {
m_cfg.m_bcp47LanguageEditingMode = static_cast<Util::Settings::BCP47LanguageEditingMode>(ui->cbGuiBCP47LanguageEditingMode->currentData().toInt());
m_cfg.m_uiFontFamily = ui->fcbGuiFontFamily->currentFont().family();
m_cfg.m_uiFontPointSize = ui->sbGuiFontPointSize->value();
m_cfg.m_uiStayOnTop = ui->cbGuiStayOnTop->isChecked();
m_cfg.m_uiDisableHighDPIScaling = ui->cbGuiDisableHighDPIScaling->isChecked();
m_cfg.m_uiDisableDarkStyleSheet = ui->cbGuiDisableDarkStyleSheet->isChecked();
m_cfg.m_uiDisableToolTips = ui->cbGuiDisableToolTips->isChecked();

View File

@ -409,6 +409,7 @@ Settings::load() {
m_uiDisableToolTips = reg.value(s_valUiDisableToolTips).toBool();
m_uiFontFamily = reg.value(s_valUiFontFamily, defaultFont.family()).toString();
m_uiFontPointSize = reg.value(s_valUiFontPointSize, defaultFont.pointSize()).toInt();
m_uiStayOnTop = reg.value(s_valUiStayOnTop, false).toBool();
reg.beginGroup(s_grpUpdates);
m_checkForUpdates = reg.value(s_valCheckForUpdates, true).toBool();
@ -761,6 +762,7 @@ Settings::save()
reg.setValue(s_valUiDisableToolTips, m_uiDisableToolTips);
reg.setValue(s_valUiFontFamily, m_uiFontFamily);
reg.setValue(s_valUiFontPointSize, m_uiFontPointSize);
reg.setValue(s_valUiStayOnTop, m_uiStayOnTop);
reg.setValue(s_valMediaInfoExe, m_mediaInfoExe);

View File

@ -194,6 +194,7 @@ public:
bool m_showToolSelector, m_warnBeforeClosingModifiedTabs, m_warnBeforeAbortingJobs, m_warnBeforeOverwriting, m_showMoveUpDownButtons;
QString m_uiLocale, m_uiFontFamily;
int m_uiFontPointSize;
bool m_uiStayOnTop;
bool m_enableMuxingTracksByLanguage, m_enableMuxingAllVideoTracks, m_enableMuxingAllAudioTracks, m_enableMuxingAllSubtitleTracks;
QStringList m_enableMuxingTracksByTheseLanguages;

View File

@ -118,6 +118,7 @@ char const * const s_valUiDisableHighDPIScaling = "uiDisableHighDPIS
char const * const s_valUiDisableToolTips = "uiDisableToolTips";
char const * const s_valUiFontFamily = "uiFontFamily";
char const * const s_valUiFontPointSize = "uiFontPointSize";
char const * const s_valUiStayOnTop = "uiStayOnTop";
char const * const s_valUiLocale = "uiLocale";
char const * const s_valUniqueOutputFileNames = "uniqueOutputFileNames";
char const * const s_valUseDefaultJobDescription = "useDefaultJobDescription";