managers: refactor class member vars (#10242)
This commit is contained in:
parent
6f174a9e08
commit
ce821294e2
54 changed files with 930 additions and 932 deletions
|
|
@ -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");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue