managers: refactor class member vars (#10242)

This commit is contained in:
davc0n 2025-05-02 17:07:20 +02:00 committed by GitHub
parent 6f174a9e08
commit ce821294e2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
54 changed files with 930 additions and 932 deletions

View file

@ -97,45 +97,45 @@ static std::vector<uint32_t> HYPR_XCURSOR_PIXELS = {
// clang-format on
CXCursorManager::CXCursorManager() {
hyprCursor = makeShared<SXCursors>();
m_hyprCursor = makeShared<SXCursors>();
SXCursorImage image;
image.size = {32, 32};
image.hotspot = {3, 2};
image.pixels = HYPR_XCURSOR_PIXELS;
image.delay = 0;
hyprCursor->images.push_back(image);
hyprCursor->shape = "left_ptr";
defaultCursor = hyprCursor;
m_hyprCursor->images.push_back(image);
m_hyprCursor->shape = "left_ptr";
m_defaultCursor = m_hyprCursor;
}
void CXCursorManager::loadTheme(std::string const& name, int size, float scale) {
if (lastLoadSize == (size * std::ceil(scale)) && themeName == name && lastLoadScale == scale)
if (m_lastLoadSize == (size * std::ceil(scale)) && m_themeName == name && m_lastLoadScale == scale)
return;
lastLoadSize = size * std::ceil(scale);
lastLoadScale = scale;
themeName = name.empty() ? "default" : name;
defaultCursor.reset();
cursors.clear();
m_lastLoadSize = size * std::ceil(scale);
m_lastLoadScale = scale;
m_themeName = name.empty() ? "default" : name;
m_defaultCursor.reset();
m_cursors.clear();
auto paths = themePaths(themeName);
auto paths = themePaths(m_themeName);
if (paths.empty()) {
Debug::log(ERR, "XCursor librarypath is empty loading standard XCursors");
cursors = loadStandardCursors(themeName, lastLoadSize);
m_cursors = loadStandardCursors(m_themeName, m_lastLoadSize);
} else {
for (auto const& p : paths) {
try {
auto dirCursors = loadAllFromDir(p, lastLoadSize);
std::copy_if(dirCursors.begin(), dirCursors.end(), std::back_inserter(cursors),
[this](auto const& p) { return std::none_of(cursors.begin(), cursors.end(), [&p](auto const& dp) { return dp->shape == p->shape; }); });
auto dirCursors = loadAllFromDir(p, m_lastLoadSize);
std::copy_if(dirCursors.begin(), dirCursors.end(), std::back_inserter(m_cursors),
[this](auto const& p) { return std::none_of(m_cursors.begin(), m_cursors.end(), [&p](auto const& dp) { return dp->shape == p->shape; }); });
} catch (std::exception& e) { Debug::log(ERR, "XCursor path {} can't be loaded: threw error {}", p, e.what()); }
}
}
if (cursors.empty()) {
Debug::log(ERR, "XCursor failed finding any shapes in theme \"{}\".", themeName);
defaultCursor = hyprCursor;
if (m_cursors.empty()) {
Debug::log(ERR, "XCursor failed finding any shapes in theme \"{}\".", m_themeName);
m_defaultCursor = m_hyprCursor;
return;
}
@ -144,14 +144,14 @@ void CXCursorManager::loadTheme(std::string const& name, int size, float scale)
if (legacyName.empty())
continue;
auto it = std::find_if(cursors.begin(), cursors.end(), [&legacyName](auto const& c) { return c->shape == legacyName; });
auto it = std::find_if(m_cursors.begin(), m_cursors.end(), [&legacyName](auto const& c) { return c->shape == legacyName; });
if (it == cursors.end()) {
if (it == m_cursors.end()) {
Debug::log(LOG, "XCursor failed to find a legacy shape with name {}, skipping", legacyName);
continue;
}
if (std::any_of(cursors.begin(), cursors.end(), [&shape](auto const& dp) { return dp->shape == shape; })) {
if (std::any_of(m_cursors.begin(), m_cursors.end(), [&shape](auto const& dp) { return dp->shape == shape; })) {
Debug::log(LOG, "XCursor already has a shape {} loaded, skipping", shape);
continue;
}
@ -160,7 +160,7 @@ void CXCursorManager::loadTheme(std::string const& name, int size, float scale)
cursor->images = it->get()->images;
cursor->shape = shape;
cursors.emplace_back(cursor);
m_cursors.emplace_back(cursor);
}
syncGsettings();
@ -168,11 +168,11 @@ void CXCursorManager::loadTheme(std::string const& name, int size, float scale)
SP<SXCursors> CXCursorManager::getShape(std::string const& shape, int size, float scale) {
// monitor scaling changed etc, so reload theme with new size.
if ((size * std::ceil(scale)) != lastLoadSize || scale != lastLoadScale)
loadTheme(themeName, size, scale);
if ((size * std::ceil(scale)) != m_lastLoadSize || scale != m_lastLoadScale)
loadTheme(m_themeName, size, scale);
// try to get an icon we know if we have one
for (auto const& c : cursors) {
for (auto const& c : m_cursors) {
if (c->shape != shape)
continue;
@ -180,7 +180,7 @@ SP<SXCursors> CXCursorManager::getShape(std::string const& shape, int size, floa
}
Debug::log(WARN, "XCursor couldn't find shape {} , using default cursor instead", shape);
return defaultCursor;
return m_defaultCursor;
}
SP<SXCursors> CXCursorManager::createCursor(std::string const& shape, void* ximages) {
@ -504,15 +504,15 @@ std::vector<SP<SXCursors>> CXCursorManager::loadStandardCursors(std::string cons
auto cursor = createCursor(shape, xImages);
newCursors.emplace_back(cursor);
if (!defaultCursor && (shape == "left_ptr" || shape == "arrow"))
defaultCursor = cursor;
if (!m_defaultCursor && (shape == "left_ptr" || shape == "arrow"))
m_defaultCursor = cursor;
XcursorImagesDestroy(xImages);
}
// broken theme.. just set it.
if (!newCursors.empty() && !defaultCursor)
defaultCursor = newCursors.front();
if (!newCursors.empty() && !m_defaultCursor)
m_defaultCursor = newCursors.front();
return newCursors;
}
@ -551,16 +551,16 @@ std::vector<SP<SXCursors>> CXCursorManager::loadAllFromDir(std::string const& pa
auto cursor = createCursor(shape, xImages);
newCursors.emplace_back(cursor);
if (!defaultCursor && (shape == "left_ptr" || shape == "arrow"))
defaultCursor = cursor;
if (!m_defaultCursor && (shape == "left_ptr" || shape == "arrow"))
m_defaultCursor = cursor;
XcursorImagesDestroy(xImages);
}
}
// broken theme.. just set it.
if (!newCursors.empty() && !defaultCursor)
defaultCursor = newCursors.front();
if (!newCursors.empty() && !m_defaultCursor)
m_defaultCursor = newCursors.front();
return newCursors;
}
@ -617,7 +617,7 @@ void CXCursorManager::syncGsettings() {
g_object_unref(gsettings);
};
int unscaledSize = lastLoadSize / std::ceil(lastLoadScale);
setValue("cursor-theme", themeName, "org.gnome.desktop.interface");
int unscaledSize = m_lastLoadSize / std::ceil(m_lastLoadScale);
setValue("cursor-theme", m_themeName, "org.gnome.desktop.interface");
setValue("cursor-size", unscaledSize, "org.gnome.desktop.interface");
}