diff --git a/src/docksettings.cpp b/src/docksettings.cpp index 943ac2b..77301de 100644 --- a/src/docksettings.cpp +++ b/src/docksettings.cpp @@ -44,7 +44,6 @@ DockSettings::DockSettings(QObject *parent) , m_direction(Left) , m_visibility(AlwaysShow) , m_settings(new QSettings(QSettings::UserScope, "cutefishos", "dock")) - , m_fileWatcher(new QFileSystemWatcher(this)) { if (!m_settings->contains("IconSize")) m_settings->setValue("IconSize", 54); @@ -61,9 +60,6 @@ DockSettings::DockSettings(QObject *parent) m_direction = static_cast(m_settings->value("Direction").toInt()); m_visibility = static_cast(m_settings->value("Visibility").toInt()); m_roundedWindowEnabled = m_settings->value("RoundedWindow").toBool(); - - m_fileWatcher->addPath(m_settings->fileName()); - connect(m_fileWatcher, &QFileSystemWatcher::fileChanged, this, &DockSettings::onConfigFileChanged); } int DockSettings::iconSize() const @@ -73,8 +69,11 @@ int DockSettings::iconSize() const void DockSettings::setIconSize(int iconSize) { - m_iconSize = iconSize; - emit iconSizeChanged(); + if (m_iconSize != iconSize) { + m_iconSize = iconSize; + m_settings->setValue("IconSize", iconSize); + emit iconSizeChanged(); + } } DockSettings::Direction DockSettings::direction() const @@ -84,8 +83,11 @@ DockSettings::Direction DockSettings::direction() const void DockSettings::setDirection(const Direction &direction) { - m_direction = direction; - emit directionChanged(); + if (m_direction != direction) { + m_direction = direction; + m_settings->setValue("Direction", direction); + emit directionChanged(); + } } DockSettings::Visibility DockSettings::visibility() const @@ -97,6 +99,7 @@ void DockSettings::setVisibility(const DockSettings::Visibility &visibility) { if (m_visibility != visibility) { m_visibility = visibility; + m_settings->setValue("Visibility", visibility); emit visibilityChanged(); } } @@ -123,30 +126,3 @@ void DockSettings::setRoundedWindowEnabled(bool enabled) emit roundedWindowEnabledChanged(); } } - -void DockSettings::onConfigFileChanged() -{ - if (!QFile(m_settings->fileName()).exists()) - return; - - m_settings->sync(); - - int iconSize = m_settings->value("IconSize").toInt(); - Direction direction = static_cast(m_settings->value("Direction").toInt()); - Visibility visibility = static_cast(m_settings->value("Visibility").toInt()); - bool roundedWindow = m_settings->value("RoundedWindow").toBool(); - - if (m_iconSize != iconSize) - setIconSize(iconSize); - - if (m_direction != direction) - setDirection(direction); - - if (m_visibility != visibility) - setVisibility(visibility); - - if (m_roundedWindowEnabled != roundedWindow) - setRoundedWindowEnabled(roundedWindow); - - m_fileWatcher->addPath(m_settings->fileName()); -} diff --git a/src/docksettings.h b/src/docksettings.h index f2b3503..0577fd6 100644 --- a/src/docksettings.h +++ b/src/docksettings.h @@ -22,7 +22,6 @@ #include #include -#include class DockSettings : public QObject { @@ -65,9 +64,6 @@ public: bool roundedWindowEnabled() const; void setRoundedWindowEnabled(bool enabled); -private slots: - void onConfigFileChanged(); - signals: void iconSizeChanged(); void directionChanged(); @@ -81,7 +77,6 @@ private: Direction m_direction; Visibility m_visibility; QSettings *m_settings; - QFileSystemWatcher *m_fileWatcher; }; #endif // DOCKSETTINGS_H diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c3d7c66..6c3aa05 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -51,7 +51,7 @@ MainWindow::MainWindow(QQuickView *parent) setColor(Qt::transparent); setFlags(Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus); - KWindowSystem::setOnDesktop(winId(), NET::OnAllDesktops); + // KWindowSystem::setOnDesktop(winId(), NET::OnAllDesktops); KWindowSystem::setType(winId(), NET::Dock); engine()->rootContext()->setContextProperty("appModel", m_appModel); @@ -61,6 +61,7 @@ MainWindow::MainWindow(QQuickView *parent) engine()->rootContext()->setContextProperty("trash", m_trashManager); setSource(QUrl(QStringLiteral("qrc:/qml/main.qml"))); + setScreen(qApp->primaryScreen()); setResizeMode(QQuickView::SizeRootObjectToView); initScreens(); @@ -109,6 +110,21 @@ bool MainWindow::pinned(const QString &desktop) return m_appModel->isDesktopPinned(desktop); } +void MainWindow::setDirection(int direction) +{ + DockSettings::self()->setDirection(static_cast(direction)); +} + +void MainWindow::setIconSize(int iconSize) +{ + DockSettings::self()->setIconSize(iconSize); +} + +void MainWindow::setVisibility(int visibility) +{ + DockSettings::self()->setVisibility(static_cast(visibility)); +} + void MainWindow::updateSize() { resizeWindow(); diff --git a/src/mainwindow.h b/src/mainwindow.h index 1b1bab5..4b30a43 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -42,6 +42,10 @@ public: void remove(const QString &desktop); bool pinned(const QString &desktop); + void setDirection(int direction); + void setIconSize(int iconSize); + void setVisibility(int visibility); + Q_INVOKABLE void updateSize(); signals: diff --git a/src/org.Cutefish.Dock.xml b/src/org.Cutefish.Dock.xml index 8bae41b..88f97f8 100644 --- a/src/org.Cutefish.Dock.xml +++ b/src/org.Cutefish.Dock.xml @@ -7,5 +7,9 @@ + + + + diff --git a/src/xwindowinterface.cpp b/src/xwindowinterface.cpp index a6074a7..ea5327a 100644 --- a/src/xwindowinterface.cpp +++ b/src/xwindowinterface.cpp @@ -162,15 +162,14 @@ void XWindowInterface::setViewStruts(QWindow *view, DockSettings::Direction dire break; } case DockSettings::Bottom: { - const int bottomOffset { wholeScreen.bottom() - currentScreen.bottom() }; - strut.bottom_width = rect.height() + bottomOffset + edgeMargins; + strut.bottom_width = rect.height() + edgeMargins; strut.bottom_start = rect.x(); strut.bottom_end = rect.x() + rect.width(); break; } case DockSettings::Right: { - const int rightOffset = {wholeScreen.right() - currentScreen.right()}; - strut.right_width = rect.width() + rightOffset + edgeMargins; + // const int rightOffset = {wholeScreen.right() - currentScreen.right()}; + strut.right_width = rect.width() + edgeMargins; strut.right_start = rect.y(); strut.right_end = rect.y() + rect.height() - 1; break;