Ref T346, framless window “UpdateLayeredWindowIndirect failed” error preparations

This commit is contained in:
Klaus Basan
2018-09-10 13:36:28 +02:00
parent d2d27a8eac
commit 97cf9f4939
4 changed files with 60 additions and 15 deletions

View File

@@ -416,9 +416,31 @@ namespace BlackGui
bool CGuiUtility::isTopLevelWidget(QWidget *widget)
{
if (!widget) { return false; }
return QApplication::topLevelWidgets().contains(widget);
}
bool CGuiUtility::isTopLevelWindow(QWidget *widget)
{
if (!widget) { return false; }
if (!widget->isWindow()) { return false; }
return QApplication::topLevelWidgets().contains(widget);
}
bool CGuiUtility::isQMainWindow(QWidget *widget)
{
if (!widget) { return false; }
QMainWindow *mw = qobject_cast<QMainWindow *>(widget);
return mw;
}
bool CGuiUtility::isDialog(QWidget *widget)
{
if (!widget) { return false; }
QDialog *mw = qobject_cast<QDialog *>(widget);
return mw;
}
QGraphicsOpacityEffect *CGuiUtility::fadeInWidget(int durationMs, QWidget *widget, double startValue, double endValue)
{
// http://stackoverflow.com/questions/19087822/how-to-make-qt-widgets-fade-in-or-fade-out#
@@ -543,8 +565,8 @@ namespace BlackGui
QWidget *w = CGuiUtility::mainApplicationWidget();
if (!w) { return; }
const QSize s = CGuiUtility::desktopSize();
const int minW = wRatio * s.width();
const int minH = hRatio * s.height();
const int minW = qRound(wRatio * s.width());
const int minH = qRound(hRatio * s.height());
w->setMinimumWidth(qMin(minW, w->minimumWidth()));
w->setMinimumHeight(qMin(minH, w->minimumHeight()));
}