mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-09-18 16:32:33 +02:00
Fix flickering of wallpaper creation. My guess is that I was wrong about windows 1903 changing the position of the wallpaper. I think it was manly because the with and height was set to late. Now we use the basewindow width an height property without the topmargin. When this code works on 21:9 we can remove the calc completely.
This commit is contained in:
parent
11610c2883
commit
ab2704a998
@ -116,30 +116,36 @@ Rectangle {
|
||||
anchors {
|
||||
top: parent.top
|
||||
topMargin: {
|
||||
return 0;
|
||||
if(desktopProperties.windowsVersion >= 1903){
|
||||
|
||||
var ratio = root.width / root.height
|
||||
ratio = Math.round(ratio * 100) / 100
|
||||
|
||||
var ratio = window.width / window.height
|
||||
ratio = Math.round(ratio * 10) / 10
|
||||
print("size: ",window.width,window.height,ratio)
|
||||
// 4:3
|
||||
if (ratio === 1,3) {
|
||||
|
||||
print("4:3")
|
||||
}
|
||||
// 16:10
|
||||
if (ratio === 1,6) {
|
||||
|
||||
print("16:10")
|
||||
}
|
||||
// 16:9
|
||||
if (ratio === 1,77) {
|
||||
return -(root.height / 9)
|
||||
if (ratio === 1,7) {
|
||||
print("16:9")
|
||||
var margin = window.height / 9
|
||||
//margin = 140
|
||||
print(margin)
|
||||
return margin
|
||||
}
|
||||
// 21:9
|
||||
if (ratio === 2,37) {
|
||||
return -((root.height / 9) / 3)
|
||||
if (ratio === 2,3) {
|
||||
print("21:9")
|
||||
return -((window.height / 9) / 3)
|
||||
}
|
||||
// 32:9
|
||||
if (ratio === 3,55) {
|
||||
|
||||
if (ratio === 3,5) {
|
||||
print("32:9")
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -151,7 +157,8 @@ Rectangle {
|
||||
right: parent.right
|
||||
}
|
||||
|
||||
sourceSize.width: root.width
|
||||
sourceSize.width: window.width
|
||||
sourceSize.height: window.height
|
||||
source: Qt.resolvedUrl("file:///" + desktopProperties.wallpaperPath)
|
||||
|
||||
Component.onCompleted: {
|
||||
|
@ -18,6 +18,9 @@ public:
|
||||
BaseWindow(QObject* parent = nullptr);
|
||||
BaseWindow(QString projectFilePath, QObject* parent = nullptr);
|
||||
|
||||
Q_PROPERTY(int width READ width WRITE setWidth NOTIFY widthChanged)
|
||||
Q_PROPERTY(int height READ height WRITE setHeight NOTIFY heightChanged)
|
||||
|
||||
Q_PROPERTY(QString appID READ appID WRITE setAppID NOTIFY appIDChanged)
|
||||
Q_PROPERTY(QString fullContentPath READ fullContentPath WRITE setFullContentPath NOTIFY fullContentPathChanged)
|
||||
|
||||
@ -44,8 +47,6 @@ public:
|
||||
};
|
||||
Q_ENUM(WallpaperType)
|
||||
|
||||
|
||||
|
||||
bool loops() const
|
||||
{
|
||||
return m_loops;
|
||||
@ -106,6 +107,16 @@ public:
|
||||
return m_fillMode;
|
||||
}
|
||||
|
||||
int width() const
|
||||
{
|
||||
return m_width;
|
||||
}
|
||||
|
||||
int height() const
|
||||
{
|
||||
return m_height;
|
||||
}
|
||||
|
||||
signals:
|
||||
void loopsChanged(bool loops);
|
||||
void volumeChanged(float volume);
|
||||
@ -121,8 +132,9 @@ signals:
|
||||
void currentTimeChanged(float currentTime);
|
||||
|
||||
void canFadeChanged(bool canFade);
|
||||
|
||||
void fillModeChanged(QString fillMode);
|
||||
void widthChanged(int width);
|
||||
void heightChanged(int height);
|
||||
|
||||
public slots:
|
||||
virtual void destroyThis() {}
|
||||
@ -144,7 +156,7 @@ public slots:
|
||||
}
|
||||
void setVolume(float volume)
|
||||
{
|
||||
if(volume < 0.0f || volume > 1.0f)
|
||||
if (volume < 0.0f || volume > 1.0f)
|
||||
return;
|
||||
|
||||
if (qFuzzyCompare(m_volume, volume))
|
||||
@ -163,7 +175,7 @@ public slots:
|
||||
}
|
||||
void setPlaybackRate(float playbackRate)
|
||||
{
|
||||
if(playbackRate < 0.0f || playbackRate > 1.0f)
|
||||
if (playbackRate < 0.0f || playbackRate > 1.0f)
|
||||
return;
|
||||
|
||||
if (qFuzzyCompare(m_playbackRate, playbackRate))
|
||||
@ -244,22 +256,39 @@ public slots:
|
||||
|
||||
fillMode = fillMode.toLower();
|
||||
|
||||
QStringList availableFillModes {"stretch", "fill", "contain", "cover", "scale-down"};
|
||||
QStringList availableFillModes { "stretch", "fill", "contain", "cover", "scale-down" };
|
||||
|
||||
if(!availableFillModes.contains(fillMode)) {
|
||||
if (!availableFillModes.contains(fillMode)) {
|
||||
qWarning() << "Unable to set fillmode, the provided value did not match the available values"
|
||||
<< "Provided: " << fillMode
|
||||
<< "Available: " << availableFillModes;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Actual web fillmodes are lowercase
|
||||
// https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit
|
||||
m_fillMode = fillMode.toLower();
|
||||
emit fillModeChanged(m_fillMode);
|
||||
}
|
||||
|
||||
void setWidth(int width)
|
||||
{
|
||||
if (m_width == width)
|
||||
return;
|
||||
|
||||
m_width = width;
|
||||
emit widthChanged(m_width);
|
||||
}
|
||||
|
||||
void setHeight(int height)
|
||||
{
|
||||
if (m_height == height)
|
||||
return;
|
||||
|
||||
m_height = height;
|
||||
emit heightChanged(m_height);
|
||||
}
|
||||
|
||||
private:
|
||||
bool m_loops { true };
|
||||
bool m_isPlaying { true };
|
||||
@ -276,4 +305,6 @@ private:
|
||||
WallpaperType m_type = BaseWindow::WallpaperType::Qml;
|
||||
QString m_OSVersion;
|
||||
QString m_fillMode;
|
||||
int m_width { 0 };
|
||||
int m_height { 0 };
|
||||
};
|
||||
|
@ -108,6 +108,9 @@ WinWindow::WinWindow(
|
||||
setupWallpaperForMultipleScreens(activeScreensList);
|
||||
}
|
||||
|
||||
setWidth(m_window.width());
|
||||
setHeight(m_window.height());
|
||||
|
||||
m_window.setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
|
||||
m_window.rootContext()->setContextProperty("window", this);
|
||||
m_window.rootContext()->setContextProperty("desktopProperties", &m_windowsDesktopProperties);
|
||||
|
Loading…
Reference in New Issue
Block a user