cursormgr: fix cursor gsettings on session change (#7295)

This commit is contained in:
Ikalco 2024-08-13 12:27:00 -05:00 committed by GitHub
parent 77cf651825
commit 39df1f4dbf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 11 additions and 4 deletions

View file

@ -393,6 +393,7 @@ void CCompositor::initAllSignals() {
} }
g_pConfigManager->m_bWantsMonitorReload = true; g_pConfigManager->m_bWantsMonitorReload = true;
g_pCursorManager->syncGsettings();
} else { } else {
Debug::log(LOG, "Session got deactivated!"); Debug::log(LOG, "Session got deactivated!");

View file

@ -337,4 +337,8 @@ bool CCursorManager::changeTheme(const std::string& name, const int size) {
updateTheme(); updateTheme();
return true; return true;
} }
void CCursorManager::syncGsettings() {
m_pXcursor->syncGsettings();
}

View file

@ -53,6 +53,7 @@ class CCursorManager {
void updateTheme(); void updateTheme();
SCursorImageData dataFor(const std::string& name); // for xwayland SCursorImageData dataFor(const std::string& name); // for xwayland
void setXWaylandCursor(); void setXWaylandCursor();
void syncGsettings();
void tickAnimatedCursor(); void tickAnimatedCursor();
@ -75,4 +76,4 @@ class CCursorManager {
Hyprcursor::SCursorShapeData m_sCurrentCursorShapeData; Hyprcursor::SCursorShapeData m_sCurrentCursorShapeData;
}; };
inline std::unique_ptr<CCursorManager> g_pCursorManager; inline std::unique_ptr<CCursorManager> g_pCursorManager;

View file

@ -5,6 +5,7 @@
#include <gio/gsettingsschema.h> #include <gio/gsettingsschema.h>
#include "config/ConfigValue.hpp" #include "config/ConfigValue.hpp"
#include "helpers/CursorShapes.hpp" #include "helpers/CursorShapes.hpp"
#include "../managers/CursorManager.hpp"
#include "debug/Log.hpp" #include "debug/Log.hpp"
#include "XCursorManager.hpp" #include "XCursorManager.hpp"

View file

@ -31,6 +31,7 @@ class CXCursorManager {
void loadTheme(const std::string& name, int size); void loadTheme(const std::string& name, int size);
SP<SXCursors> getShape(std::string const& shape, int size); SP<SXCursors> getShape(std::string const& shape, int size);
void syncGsettings();
private: private:
SP<SXCursors> createCursor(std::string const& shape, XcursorImages* xImages); SP<SXCursors> createCursor(std::string const& shape, XcursorImages* xImages);
@ -38,11 +39,10 @@ class CXCursorManager {
std::string getLegacyShapeName(std::string const& shape); std::string getLegacyShapeName(std::string const& shape);
std::vector<SP<SXCursors>> loadStandardCursors(std::string const& name, int size); std::vector<SP<SXCursors>> loadStandardCursors(std::string const& name, int size);
std::vector<SP<SXCursors>> loadAllFromDir(std::string const& path, int size); std::vector<SP<SXCursors>> loadAllFromDir(std::string const& path, int size);
void syncGsettings();
int lastLoadSize = 0; int lastLoadSize = 0;
std::string themeName = ""; std::string themeName = "";
SP<SXCursors> defaultCursor; SP<SXCursors> defaultCursor;
SP<SXCursors> hyprCursor; SP<SXCursors> hyprCursor;
std::vector<SP<SXCursors>> cursors; std::vector<SP<SXCursors>> cursors;
}; };