mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-23 04:25:59 +01:00
parent
49fdffacea
commit
93a2ac9de4
2 changed files with 14 additions and 1 deletions
|
@ -76,7 +76,13 @@ static void handleAddonDestroy(wl_resource* resource) {
|
||||||
|
|
||||||
void CFractionalScaleProtocolManager::getFractionalScale(wl_client* client, wl_resource* resource, uint32_t id, wl_resource* surface) {
|
void CFractionalScaleProtocolManager::getFractionalScale(wl_client* client, wl_resource* resource, uint32_t id, wl_resource* surface) {
|
||||||
const auto PSURFACE = wlr_surface_from_resource(surface);
|
const auto PSURFACE = wlr_surface_from_resource(surface);
|
||||||
const auto PADDON = getAddonForSurface(PSURFACE);
|
|
||||||
|
if (addonExists(PSURFACE)) {
|
||||||
|
wl_resource_post_error(resource, WP_FRACTIONAL_SCALE_MANAGER_V1_ERROR_FRACTIONAL_SCALE_EXISTS, "Fractional scale exists.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto PADDON = getAddonForSurface(PSURFACE);
|
||||||
|
|
||||||
PADDON->pResource = wl_resource_create(client, &wp_fractional_scale_v1_interface, wl_resource_get_version(resource), id);
|
PADDON->pResource = wl_resource_create(client, &wp_fractional_scale_v1_interface, wl_resource_get_version(resource), id);
|
||||||
wl_resource_set_implementation(PADDON->pResource, &fractionalScaleAddonImpl, PADDON, handleAddonDestroy);
|
wl_resource_set_implementation(PADDON->pResource, &fractionalScaleAddonImpl, PADDON, handleAddonDestroy);
|
||||||
|
@ -84,6 +90,12 @@ void CFractionalScaleProtocolManager::getFractionalScale(wl_client* client, wl_r
|
||||||
wp_fractional_scale_v1_send_preferred_scale(PADDON->pResource, (uint32_t)std::round(PADDON->preferredScale * 120.0));
|
wp_fractional_scale_v1_send_preferred_scale(PADDON->pResource, (uint32_t)std::round(PADDON->preferredScale * 120.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CFractionalScaleProtocolManager::addonExists(wlr_surface* surface) {
|
||||||
|
const auto IT = std::find_if(m_vFractionalScaleAddons.begin(), m_vFractionalScaleAddons.end(), [&](const auto& other) { return other->pSurface == surface; });
|
||||||
|
|
||||||
|
return IT != m_vFractionalScaleAddons.end();
|
||||||
|
}
|
||||||
|
|
||||||
SFractionalScaleAddon* CFractionalScaleProtocolManager::getAddonForSurface(wlr_surface* surface) {
|
SFractionalScaleAddon* CFractionalScaleProtocolManager::getAddonForSurface(wlr_surface* surface) {
|
||||||
const auto IT = std::find_if(m_vFractionalScaleAddons.begin(), m_vFractionalScaleAddons.end(), [&](const auto& other) { return other->pSurface == surface; });
|
const auto IT = std::find_if(m_vFractionalScaleAddons.begin(), m_vFractionalScaleAddons.end(), [&](const auto& other) { return other->pSurface == surface; });
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ class CFractionalScaleProtocolManager {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SFractionalScaleAddon* getAddonForSurface(wlr_surface*);
|
SFractionalScaleAddon* getAddonForSurface(wlr_surface*);
|
||||||
|
bool addonExists(wlr_surface*);
|
||||||
|
|
||||||
std::vector<std::unique_ptr<SFractionalScaleAddon>> m_vFractionalScaleAddons;
|
std::vector<std::unique_ptr<SFractionalScaleAddon>> m_vFractionalScaleAddons;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue