From bf4942e316eef1aa488f4b4d9db9e3e401f72b07 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 15 Nov 2023 09:04:50 +0200 Subject: [PATCH] New feature: Always keep on top. --- ChangeLog.txt | 1 + src/app/tape/tkmmainwindow.cpp | 4 ++++ src/app/tape/tkmmainwindow.ui | 14 ++++++++++++++ src/app/tape/tmainwindow.cpp | 4 ++++ src/app/tape/tmainwindow.ui | 14 ++++++++++++++ src/libs/vwidgets/vabstractmainwindow.cpp | 9 +++++++++ src/libs/vwidgets/vabstractmainwindow.h | 1 + 7 files changed, 47 insertions(+) diff --git a/ChangeLog.txt b/ChangeLog.txt index 81b5d4932..be84fdf17 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -53,6 +53,7 @@ - Shortcuts manager. - Support for custom known measurements. - Allow negative values. +- Tape app. New feature: Always keep on top. # Valentina 0.7.52 September 12, 2022 - Fix crash when default locale is ru. diff --git a/src/app/tape/tkmmainwindow.cpp b/src/app/tape/tkmmainwindow.cpp index 03be07860..79669f0b4 100644 --- a/src/app/tape/tkmmainwindow.cpp +++ b/src/app/tape/tkmmainwindow.cpp @@ -2129,6 +2129,10 @@ void TKMMainWindow::CreateWindowMenu(QMenu *menu) QAction *action = menu->addAction(tr("&New Window")); connect(action, &QAction::triggered, this, []() { MApplication::VApp()->NewMainKMWindow()->activateWindow(); }); action->setMenuRole(QAction::NoRole); + + menu->addAction(ui->actionAlwaysOnTop); + connect(ui->actionAlwaysOnTop, &QAction::triggered, this, &TKMMainWindow::AlwaysOnTop); + menu->addSeparator(); const QList windows = MApplication::VApp()->MainKMWindows(); diff --git a/src/app/tape/tkmmainwindow.ui b/src/app/tape/tkmmainwindow.ui index 84c533b22..c0da44cb6 100644 --- a/src/app/tape/tkmmainwindow.ui +++ b/src/app/tape/tkmmainwindow.ui @@ -1203,6 +1203,20 @@ QAction::NoRole + + + true + + + Always on top + + + Keep window always on top + + + QAction::NoRole + + diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index 864c7b8ad..8c39096e5 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -4227,6 +4227,10 @@ void TMainWindow::CreateWindowMenu(QMenu *menu) QAction *action = menu->addAction(tr("&New Window")); connect(action, &QAction::triggered, this, []() { MApplication::VApp()->NewMainTapeWindow()->activateWindow(); }); action->setMenuRole(QAction::NoRole); + + menu->addAction(ui->actionAlwaysOnTop); + connect(ui->actionAlwaysOnTop, &QAction::triggered, this, &TMainWindow::AlwaysOnTop); + menu->addSeparator(); const QList windows = MApplication::VApp()->MainTapeWindows(); diff --git a/src/app/tape/tmainwindow.ui b/src/app/tape/tmainwindow.ui index eac6bf96e..3f58a0def 100644 --- a/src/app/tape/tmainwindow.ui +++ b/src/app/tape/tmainwindow.ui @@ -1726,6 +1726,20 @@ Edit current Known Measurements + + + true + + + Always on top + + + Keep window always on top + + + QAction::NoRole + + diff --git a/src/libs/vwidgets/vabstractmainwindow.cpp b/src/libs/vwidgets/vabstractmainwindow.cpp index 3eab06f37..12fe9f5c0 100644 --- a/src/libs/vwidgets/vabstractmainwindow.cpp +++ b/src/libs/vwidgets/vabstractmainwindow.cpp @@ -411,6 +411,15 @@ void VAbstractMainWindow::ExportDataToCSV() } } +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractMainWindow::AlwaysOnTop(bool state) +{ + setWindowFlag(Qt::WindowStaysOnTopHint, state); + destroy(); + create(); + setVisible(true); +} + //--------------------------------------------------------------------------------------------------------------------- void VAbstractMainWindow::UpdateVisibilityGroups() { diff --git a/src/libs/vwidgets/vabstractmainwindow.h b/src/libs/vwidgets/vabstractmainwindow.h index 18c217467..11708f931 100644 --- a/src/libs/vwidgets/vabstractmainwindow.h +++ b/src/libs/vwidgets/vabstractmainwindow.h @@ -61,6 +61,7 @@ public slots: protected slots: void ExportDataToCSV(); + void AlwaysOnTop(bool state); protected: unsigned m_curFileFormatVersion;