mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 01:05:34 +08:00
Ref T447, utility function to set on top flag
Also a signal when "always on top" was triggered
This commit is contained in:
@@ -272,12 +272,21 @@ namespace BlackGui
|
||||
this->setFrameless(!frameless);
|
||||
}
|
||||
|
||||
void CDockWidget::toggleAlwaysOnTop()
|
||||
void CDockWidget::windowAlwaysOnTop()
|
||||
{
|
||||
m_alwaysOnTop = !m_alwaysOnTop;
|
||||
if (this->isFloating())
|
||||
{
|
||||
this->setAlwaysOnTopFlag(m_alwaysOnTop);
|
||||
this->setAlwaysOnTopFlag(true);
|
||||
m_alwaysOnTop = true;
|
||||
}
|
||||
}
|
||||
|
||||
void CDockWidget::windowNotAlwaysOnTop()
|
||||
{
|
||||
if (this->isFloating())
|
||||
{
|
||||
this->setAlwaysOnTopFlag(false);
|
||||
m_alwaysOnTop = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -353,11 +362,11 @@ namespace BlackGui
|
||||
if (this->isFloating())
|
||||
{
|
||||
const bool frameless = this->isFrameless();
|
||||
const bool onTop = this->windowFlags() | Qt::WindowStaysOnTopHint;
|
||||
|
||||
contextMenu->addAction(CIcons::dockTop16(), "Dock", this, &CDockWidget::toggleFloating);
|
||||
contextMenu->addAction(CIcons::tableSheet16(), frameless ? "Normal window" : "Frameless", this, &CDockWidget::toggleFrameless);
|
||||
contextMenu->addAction(CIcons::dockTop16(), onTop ? "Not on top" : "Always on top", this, &CDockWidget::toggleAlwaysOnTop);
|
||||
contextMenu->addAction(CIcons::dockTop16(), "Always on top", this, &CDockWidget::windowAlwaysOnTop);
|
||||
contextMenu->addAction(CIcons::dockTop16(), "Not on top", this, &CDockWidget::windowNotAlwaysOnTop);
|
||||
contextMenu->addAction(CIcons::refresh16(), "Redraw", this, QOverload<>::of(&CDockWidget::update));
|
||||
}
|
||||
else
|
||||
|
||||
@@ -108,8 +108,11 @@ namespace BlackGui
|
||||
//! Toggle frameless mode (EXPERIMENTAL)
|
||||
void toggleFrameless();
|
||||
|
||||
//! Toggle always on top
|
||||
void toggleAlwaysOnTop();
|
||||
//! Window always on top
|
||||
void windowAlwaysOnTop();
|
||||
|
||||
//! Window not on top
|
||||
void windowNotAlwaysOnTop();
|
||||
|
||||
//! Set always on top
|
||||
void setAlwaysOnTop(bool onTop) { m_alwaysOnTop = onTop; }
|
||||
|
||||
@@ -996,6 +996,7 @@ namespace BlackGui
|
||||
if (!w) { return false; }
|
||||
const bool onTop = CGuiUtility::toggleStayOnTop(w);
|
||||
CLogMessage(w).info(onTop ? QStringLiteral("Window on top") : QStringLiteral("Window not always on top"));
|
||||
emit this->alwaysOnTop(onTop);
|
||||
return onTop;
|
||||
}
|
||||
|
||||
|
||||
@@ -271,6 +271,9 @@ namespace BlackGui
|
||||
//! Font has been changed
|
||||
void fontChanged();
|
||||
|
||||
//! always on top
|
||||
void alwaysOnTop(bool onTop);
|
||||
|
||||
protected:
|
||||
//! \name print messages generated during parsing / cmd handling
|
||||
//! @{
|
||||
|
||||
@@ -394,6 +394,24 @@ namespace BlackGui
|
||||
return Qt::WindowStaysOnTopHint & flags;
|
||||
}
|
||||
|
||||
bool CGuiUtility::stayOnTop(bool onTop, QWidget *widget)
|
||||
{
|
||||
if (!widget) { return false; }
|
||||
Qt::WindowFlags flags = widget->windowFlags();
|
||||
if (onTop)
|
||||
{
|
||||
flags &= ~Qt::WindowStaysOnBottomHint;
|
||||
flags |= Qt::WindowStaysOnTopHint;
|
||||
}
|
||||
else
|
||||
{
|
||||
flags &= ~Qt::WindowStaysOnTopHint;
|
||||
// flags |= Qt::WindowStaysOnBottomHint;
|
||||
}
|
||||
widget->setWindowFlags(flags);
|
||||
return onTop;
|
||||
}
|
||||
|
||||
QString CGuiUtility::marginsToString(const QMargins &margins)
|
||||
{
|
||||
const QString s("%1:%2:%3:%4");
|
||||
|
||||
@@ -157,9 +157,12 @@ namespace BlackGui
|
||||
}
|
||||
}
|
||||
|
||||
//! Toogle window flags / stay on top
|
||||
//! Toggle window flags / stay on top
|
||||
static bool toggleStayOnTop(QWidget *widget);
|
||||
|
||||
//! Window flags / stay on top
|
||||
static bool stayOnTop(bool onTop, QWidget *widget);
|
||||
|
||||
//! Window on top?
|
||||
static bool staysOnTop(QWidget *widget);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user