all: chase hyprland

This commit is contained in:
Vaxry 2025-01-07 19:30:33 +01:00
parent b6b31113ce
commit d224c84d8e
6 changed files with 52 additions and 51 deletions

View file

@ -8,8 +8,8 @@
#include "globals.hpp" #include "globals.hpp"
CBordersPlusPlus::CBordersPlusPlus(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) { CBordersPlusPlus::CBordersPlusPlus(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) {
m_vLastWindowPos = pWindow->m_vRealPosition.value(); m_vLastWindowPos = pWindow->m_vRealPosition->value();
m_vLastWindowSize = pWindow->m_vRealSize.value(); m_vLastWindowSize = pWindow->m_vRealSize->value();
} }
CBordersPlusPlus::~CBordersPlusPlus() { CBordersPlusPlus::~CBordersPlusPlus() {
@ -97,7 +97,7 @@ void CBordersPlusPlus::drawPass(PHLMONITOR pMonitor, const float& a) {
return; return;
const auto PWORKSPACE = PWINDOW->m_pWorkspace; const auto PWORKSPACE = PWINDOW->m_pWorkspace;
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_bPinned ? PWORKSPACE->m_vRenderOffset.value() : Vector2D(); const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_bPinned ? PWORKSPACE->m_vRenderOffset->value() : Vector2D();
auto rounding = PWINDOW->rounding() == 0 ? 0 : (PWINDOW->rounding() + **PBORDERSIZE) * pMonitor->scale; auto rounding = PWINDOW->rounding() == 0 ? 0 : (PWINDOW->rounding() + **PBORDERSIZE) * pMonitor->scale;
const auto ORIGINALROUND = rounding == 0 ? 0 : (PWINDOW->rounding() + **PBORDERSIZE) * pMonitor->scale; const auto ORIGINALROUND = rounding == 0 ? 0 : (PWINDOW->rounding() + **PBORDERSIZE) * pMonitor->scale;
@ -155,8 +155,8 @@ eDecorationType CBordersPlusPlus::getDecorationType() {
} }
void CBordersPlusPlus::updateWindow(PHLWINDOW pWindow) { void CBordersPlusPlus::updateWindow(PHLWINDOW pWindow) {
m_vLastWindowPos = pWindow->m_vRealPosition.value(); m_vLastWindowPos = pWindow->m_vRealPosition->value();
m_vLastWindowSize = pWindow->m_vRealSize.value(); m_vLastWindowSize = pWindow->m_vRealSize->value();
damageEntire(); damageEntire();
} }

View file

@ -430,7 +430,7 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
} }
const auto PWORKSPACE = PWINDOW->m_pWorkspace; const auto PWORKSPACE = PWINDOW->m_pWorkspace;
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_bPinned ? PWORKSPACE->m_vRenderOffset.value() : Vector2D(); const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_bPinned ? PWORKSPACE->m_vRenderOffset->value() : Vector2D();
const auto ROUNDING = PWINDOW->rounding() + (*PPRECEDENCE ? 0 : PWINDOW->getRealBorderSize()); const auto ROUNDING = PWINDOW->rounding() + (*PPRECEDENCE ? 0 : PWINDOW->getRealBorderSize());
@ -454,9 +454,9 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
if (ROUNDING) { if (ROUNDING) {
// the +1 is a shit garbage temp fix until renderRect supports an alpha matte // the +1 is a shit garbage temp fix until renderRect supports an alpha matte
CBox windowBox = {PWINDOW->m_vRealPosition.value().x + PWINDOW->m_vFloatingOffset.x - pMonitor->vecPosition.x + 1, CBox windowBox = {PWINDOW->m_vRealPosition->value().x + PWINDOW->m_vFloatingOffset.x - pMonitor->vecPosition.x + 1,
PWINDOW->m_vRealPosition.value().y + PWINDOW->m_vFloatingOffset.y - pMonitor->vecPosition.y + 1, PWINDOW->m_vRealSize.value().x - 2, PWINDOW->m_vRealPosition->value().y + PWINDOW->m_vFloatingOffset.y - pMonitor->vecPosition.y + 1, PWINDOW->m_vRealSize->value().x - 2,
PWINDOW->m_vRealSize.value().y - 2}; PWINDOW->m_vRealSize->value().y - 2};
if (windowBox.w < 1 || windowBox.h < 1) if (windowBox.w < 1 || windowBox.h < 1)
return; return;
@ -556,7 +556,7 @@ CBox CHyprBar::assignedBoxGlobal() {
box.translate(g_pDecorationPositioner->getEdgeDefinedPoint(DECORATION_EDGE_TOP, PWINDOW)); box.translate(g_pDecorationPositioner->getEdgeDefinedPoint(DECORATION_EDGE_TOP, PWINDOW));
const auto PWORKSPACE = PWINDOW->m_pWorkspace; const auto PWORKSPACE = PWINDOW->m_pWorkspace;
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_bPinned ? PWORKSPACE->m_vRenderOffset.value() : Vector2D(); const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_bPinned ? PWORKSPACE->m_vRenderOffset->value() : Vector2D();
return box.translate(WORKSPACEOFFSET); return box.translate(WORKSPACEOFFSET);
} }

View file

@ -7,11 +7,11 @@
#undef private #undef private
#include "OverviewPassElement.hpp" #include "OverviewPassElement.hpp"
static void damageMonitor(void*) { static void damageMonitor(WP<Hyprutils::Animation::CBaseAnimatedVariable> thisptr) {
g_pOverview->damage(); g_pOverview->damage();
} }
static void removeOverview(void*) { static void removeOverview(WP<Hyprutils::Animation::CBaseAnimatedVariable> thisptr) {
g_pOverview.reset(); g_pOverview.reset();
} }
@ -162,18 +162,19 @@ COverview::COverview(PHLWORKSPACE startedOn_, bool swipe_) : startedOn(startedOn
// zoom on the current workspace. // zoom on the current workspace.
const auto& TILE = images[std::clamp(currentid, 0, SIDE_LENGTH * SIDE_LENGTH)]; const auto& TILE = images[std::clamp(currentid, 0, SIDE_LENGTH * SIDE_LENGTH)];
size.create(pMonitor->vecSize * pMonitor->vecSize / tileSize, g_pConfigManager->getAnimationPropertyConfig("windowsMove"), AVARDAMAGE_NONE); g_pAnimationManager->createAnimation(pMonitor->vecSize * pMonitor->vecSize / tileSize, size, g_pConfigManager->getAnimationPropertyConfig("windowsMove"), AVARDAMAGE_NONE);
pos.create((-((pMonitor->vecSize / (double)SIDE_LENGTH) * Vector2D{currentid % SIDE_LENGTH, currentid / SIDE_LENGTH}) * pMonitor->scale) * (pMonitor->vecSize / tileSize), g_pAnimationManager->createAnimation((-((pMonitor->vecSize / (double)SIDE_LENGTH) * Vector2D{currentid % SIDE_LENGTH, currentid / SIDE_LENGTH}) * pMonitor->scale) *
g_pConfigManager->getAnimationPropertyConfig("windowsMove"), AVARDAMAGE_NONE); (pMonitor->vecSize / tileSize),
pos, g_pConfigManager->getAnimationPropertyConfig("windowsMove"), AVARDAMAGE_NONE);
size.setUpdateCallback(damageMonitor); size->setUpdateCallback(damageMonitor);
pos.setUpdateCallback(damageMonitor); pos->setUpdateCallback(damageMonitor);
if (!swipe) { if (!swipe) {
size = pMonitor->vecSize; *size = pMonitor->vecSize;
pos = {0, 0}; *pos = {0, 0};
size.setCallbackOnEnd([this](void*) { redrawAll(true); }); size->setCallbackOnEnd([this](auto) { redrawAll(true); });
} }
openedID = currentid; openedID = currentid;
@ -228,7 +229,7 @@ void COverview::redrawID(int id, bool forcelowres) {
Vector2D tileRenderSize = (pMonitor->vecSize - Vector2D{GAP_WIDTH, GAP_WIDTH} * (SIDE_LENGTH - 1)) / SIDE_LENGTH; Vector2D tileRenderSize = (pMonitor->vecSize - Vector2D{GAP_WIDTH, GAP_WIDTH} * (SIDE_LENGTH - 1)) / SIDE_LENGTH;
CBox monbox{0, 0, tileSize.x * 2, tileSize.y * 2}; CBox monbox{0, 0, tileSize.x * 2, tileSize.y * 2};
if (!forcelowres && (size.value() != pMonitor->vecSize || closing)) if (!forcelowres && (size->value() != pMonitor->vecSize || closing))
monbox = {{0, 0}, pMonitor->vecPixelSize}; monbox = {{0, 0}, pMonitor->vecPixelSize};
if (!ENABLE_LOWRES) if (!ENABLE_LOWRES)
@ -301,7 +302,7 @@ void COverview::damage() {
void COverview::onDamageReported() { void COverview::onDamageReported() {
damageDirty = true; damageDirty = true;
Vector2D SIZE = size.value(); Vector2D SIZE = size->value();
Vector2D tileSize = (SIZE / SIDE_LENGTH); Vector2D tileSize = (SIZE / SIDE_LENGTH);
Vector2D tileRenderSize = (SIZE - Vector2D{GAP_WIDTH, GAP_WIDTH} * (SIDE_LENGTH - 1)) / SIDE_LENGTH; Vector2D tileRenderSize = (SIZE - Vector2D{GAP_WIDTH, GAP_WIDTH} * (SIDE_LENGTH - 1)) / SIDE_LENGTH;
@ -328,10 +329,10 @@ void COverview::close() {
Vector2D tileSize = (pMonitor->vecSize / SIDE_LENGTH); Vector2D tileSize = (pMonitor->vecSize / SIDE_LENGTH);
size = pMonitor->vecSize * pMonitor->vecSize / tileSize; *size = pMonitor->vecSize * pMonitor->vecSize / tileSize;
pos = (-((pMonitor->vecSize / (double)SIDE_LENGTH) * Vector2D{ID % SIDE_LENGTH, ID / SIDE_LENGTH}) * pMonitor->scale) * (pMonitor->vecSize / tileSize); *pos = (-((pMonitor->vecSize / (double)SIDE_LENGTH) * Vector2D{ID % SIDE_LENGTH, ID / SIDE_LENGTH}) * pMonitor->scale) * (pMonitor->vecSize / tileSize);
size.setCallbackOnEnd(removeOverview); size->setCallbackOnEnd(removeOverview);
closing = true; closing = true;
@ -386,14 +387,14 @@ void COverview::render() {
} }
void COverview::fullRender() { void COverview::fullRender() {
const auto GAPSIZE = (closing ? (1.0 - size.getPercent()) : size.getPercent()) * GAP_WIDTH; const auto GAPSIZE = (closing ? (1.0 - size->getPercent()) : size->getPercent()) * GAP_WIDTH;
if (pMonitor->activeWorkspace != startedOn && !closing) { if (pMonitor->activeWorkspace != startedOn && !closing) {
// likely user changed. // likely user changed.
onWorkspaceChange(); onWorkspaceChange();
} }
Vector2D SIZE = size.value(); Vector2D SIZE = size->value();
Vector2D tileSize = (SIZE / SIDE_LENGTH); Vector2D tileSize = (SIZE / SIDE_LENGTH);
Vector2D tileRenderSize = (SIZE - Vector2D{GAPSIZE, GAPSIZE} * (SIDE_LENGTH - 1)) / SIDE_LENGTH; Vector2D tileRenderSize = (SIZE - Vector2D{GAPSIZE, GAPSIZE} * (SIDE_LENGTH - 1)) / SIDE_LENGTH;
@ -403,7 +404,7 @@ void COverview::fullRender() {
for (size_t y = 0; y < SIDE_LENGTH; ++y) { for (size_t y = 0; y < SIDE_LENGTH; ++y) {
for (size_t x = 0; x < SIDE_LENGTH; ++x) { for (size_t x = 0; x < SIDE_LENGTH; ++x) {
CBox texbox = {x * tileRenderSize.x + x * GAPSIZE, y * tileRenderSize.y + y * GAPSIZE, tileRenderSize.x, tileRenderSize.y}; CBox texbox = {x * tileRenderSize.x + x * GAPSIZE, y * tileRenderSize.y + y * GAPSIZE, tileRenderSize.x, tileRenderSize.y};
texbox.scale(pMonitor->scale).translate(pos.value()); texbox.scale(pMonitor->scale).translate(pos->value());
texbox.round(); texbox.round();
CRegion damage{0, 0, INT16_MAX, INT16_MAX}; CRegion damage{0, 0, INT16_MAX, INT16_MAX};
g_pHyprOpenGL->renderTextureInternalWithDamage(images[x + y * SIDE_LENGTH].fb.getTexture(), &texbox, 1.0, damage); g_pHyprOpenGL->renderTextureInternalWithDamage(images[x + y * SIDE_LENGTH].fb.getTexture(), &texbox, 1.0, damage);
@ -436,22 +437,22 @@ void COverview::onSwipeUpdate(double delta) {
const auto SIZEMIN = pMonitor->vecSize; const auto SIZEMIN = pMonitor->vecSize;
const auto POSMIN = Vector2D{0, 0}; const auto POSMIN = Vector2D{0, 0};
size.setValueAndWarp(lerp(SIZEMIN, SIZEMAX, PERC)); size->setValueAndWarp(lerp(SIZEMIN, SIZEMAX, PERC));
pos.setValueAndWarp(lerp(POSMIN, POSMAX, PERC)); pos->setValueAndWarp(lerp(POSMIN, POSMAX, PERC));
} }
void COverview::onSwipeEnd() { void COverview::onSwipeEnd() {
const auto SIZEMIN = pMonitor->vecSize; const auto SIZEMIN = pMonitor->vecSize;
const auto SIZEMAX = pMonitor->vecSize * pMonitor->vecSize / (pMonitor->vecSize / SIDE_LENGTH); const auto SIZEMAX = pMonitor->vecSize * pMonitor->vecSize / (pMonitor->vecSize / SIDE_LENGTH);
const auto PERC = (size.value() - SIZEMIN).x / (SIZEMAX - SIZEMIN).x; const auto PERC = (size->value() - SIZEMIN).x / (SIZEMAX - SIZEMIN).x;
if (PERC > 0.5) { if (PERC > 0.5) {
close(); close();
return; return;
} }
size = pMonitor->vecSize; *size = pMonitor->vecSize;
pos = {0, 0}; *pos = {0, 0};
size.setCallbackOnEnd([this](void*) { redrawAll(true); }); size->setCallbackOnEnd([this](WP<Hyprutils::Animation::CBaseAnimatedVariable> thisptr) { redrawAll(true); });
swipeWasCommenced = true; swipeWasCommenced = true;
} }

View file

@ -64,8 +64,8 @@ class COverview {
PHLWORKSPACE startedOn; PHLWORKSPACE startedOn;
CAnimatedVariable<Vector2D> size; PHLANIMVAR<Vector2D> size;
CAnimatedVariable<Vector2D> pos; PHLANIMVAR<Vector2D> pos;
bool closing = false; bool closing = false;

View file

@ -16,8 +16,8 @@ void CTrail::onTick() {
const auto PWINDOW = m_pWindow.lock(); const auto PWINDOW = m_pWindow.lock();
if (m_iTimer > **PHISTORYSTEP) { if (m_iTimer > **PHISTORYSTEP) {
m_dLastGeoms.push_front({box{(float)PWINDOW->m_vRealPosition.value().x, (float)PWINDOW->m_vRealPosition.value().y, (float)PWINDOW->m_vRealSize.value().x, m_dLastGeoms.push_front({box{(float)PWINDOW->m_vRealPosition->value().x, (float)PWINDOW->m_vRealPosition->value().y, (float)PWINDOW->m_vRealSize->value().x,
(float)PWINDOW->m_vRealSize.value().y}, (float)PWINDOW->m_vRealSize->value().y},
std::chrono::system_clock::now()}); std::chrono::system_clock::now()});
while (m_dLastGeoms.size() > **PHISTORYPOINTS) while (m_dLastGeoms.size() > **PHISTORYPOINTS)
m_dLastGeoms.pop_back(); m_dLastGeoms.pop_back();
@ -32,8 +32,8 @@ void CTrail::onTick() {
} }
CTrail::CTrail(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) { CTrail::CTrail(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) {
m_vLastWindowPos = pWindow->m_vRealPosition.value(); m_vLastWindowPos = pWindow->m_vRealPosition->value();
m_vLastWindowSize = pWindow->m_vRealSize.value(); m_vLastWindowSize = pWindow->m_vRealSize->value();
pTickCb = HyprlandAPI::registerCallbackDynamic(PHANDLE, "trailTick", [this](void* self, SCallbackInfo& info, std::any data) { this->onTick(); }); pTickCb = HyprlandAPI::registerCallbackDynamic(PHANDLE, "trailTick", [this](void* self, SCallbackInfo& info, std::any data) { this->onTick(); });
} }
@ -106,7 +106,7 @@ void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) {
return; return;
box thisbox = box thisbox =
box{(float)PWINDOW->m_vRealPosition.value().x, (float)PWINDOW->m_vRealPosition.value().y, (float)PWINDOW->m_vRealSize.value().x, (float)PWINDOW->m_vRealSize.value().y}; box{(float)PWINDOW->m_vRealPosition->value().x, (float)PWINDOW->m_vRealPosition->value().y, (float)PWINDOW->m_vRealSize->value().x, (float)PWINDOW->m_vRealSize->value().y};
CBox wlrbox = {thisbox.x - pMonitor->vecPosition.x, thisbox.y - pMonitor->vecPosition.y, thisbox.w, thisbox.h}; CBox wlrbox = {thisbox.x - pMonitor->vecPosition.x, thisbox.y - pMonitor->vecPosition.y, thisbox.w, thisbox.h};
wlrbox.scale(pMonitor->scale).round(); wlrbox.scale(pMonitor->scale).round();
@ -246,10 +246,10 @@ void CTrail::renderPass(PHLMONITOR pMonitor, const float& a) {
} }
} }
box thisboxopengl = box{(PWINDOW->m_vRealPosition.value().x - pMonitor->vecPosition.x) / pMonitor->vecSize.x, box thisboxopengl = box{(PWINDOW->m_vRealPosition->value().x - pMonitor->vecPosition.x) / pMonitor->vecSize.x,
(PWINDOW->m_vRealPosition.value().y - pMonitor->vecPosition.y) / pMonitor->vecSize.y, (PWINDOW->m_vRealPosition->value().y - pMonitor->vecPosition.y) / pMonitor->vecSize.y,
(PWINDOW->m_vRealPosition.value().x + PWINDOW->m_vRealSize.value().x) / pMonitor->vecSize.x, (PWINDOW->m_vRealPosition->value().x + PWINDOW->m_vRealSize->value().x) / pMonitor->vecSize.x,
(PWINDOW->m_vRealPosition.value().y + PWINDOW->m_vRealSize.value().y) / pMonitor->vecSize.y}; (PWINDOW->m_vRealPosition->value().y + PWINDOW->m_vRealSize->value().y) / pMonitor->vecSize.y};
glUniform4f(g_pGlobalState->trailShader.gradient, thisboxopengl.x, thisboxopengl.y, thisboxopengl.w, thisboxopengl.h); glUniform4f(g_pGlobalState->trailShader.gradient, thisboxopengl.x, thisboxopengl.y, thisboxopengl.w, thisboxopengl.h);
glUniform4f(g_pGlobalState->trailShader.color, COLOR.r, COLOR.g, COLOR.b, COLOR.a); glUniform4f(g_pGlobalState->trailShader.color, COLOR.r, COLOR.g, COLOR.b, COLOR.a);
@ -327,10 +327,10 @@ eDecorationType CTrail::getDecorationType() {
void CTrail::updateWindow(PHLWINDOW pWindow) { void CTrail::updateWindow(PHLWINDOW pWindow) {
const auto PWORKSPACE = pWindow->m_pWorkspace; const auto PWORKSPACE = pWindow->m_pWorkspace;
const auto WORKSPACEOFFSET = PWORKSPACE && !pWindow->m_bPinned ? PWORKSPACE->m_vRenderOffset.value() : Vector2D(); const auto WORKSPACEOFFSET = PWORKSPACE && !pWindow->m_bPinned ? PWORKSPACE->m_vRenderOffset->value() : Vector2D();
m_vLastWindowPos = pWindow->m_vRealPosition.value() + WORKSPACEOFFSET; m_vLastWindowPos = pWindow->m_vRealPosition->value() + WORKSPACEOFFSET;
m_vLastWindowSize = pWindow->m_vRealSize.value(); m_vLastWindowSize = pWindow->m_vRealSize->value();
damageEntire(); damageEntire();
} }

View file

@ -44,12 +44,12 @@ void onNewWindow(PHLWINDOW pWindow) {
if (!pWindow->m_bIsFloating) if (!pWindow->m_bIsFloating)
g_pLayoutManager->getCurrentLayout()->changeWindowFloatingMode(pWindow); g_pLayoutManager->getCurrentLayout()->changeWindowFloatingMode(pWindow);
pWindow->m_vRealSize.setValueAndWarp(PMONITOR->vecSize); pWindow->m_vRealSize->setValueAndWarp(PMONITOR->vecSize);
pWindow->m_vRealPosition.setValueAndWarp(PMONITOR->vecPosition); pWindow->m_vRealPosition->setValueAndWarp(PMONITOR->vecPosition);
pWindow->m_vSize = PMONITOR->vecSize; pWindow->m_vSize = PMONITOR->vecSize;
pWindow->m_vPosition = PMONITOR->vecPosition; pWindow->m_vPosition = PMONITOR->vecPosition;
pWindow->m_bPinned = true; pWindow->m_bPinned = true;
g_pXWaylandManager->setWindowSize(pWindow, pWindow->m_vRealSize.goal(), true); g_pXWaylandManager->setWindowSize(pWindow, pWindow->m_vRealSize->goal(), true);
bgWindows.push_back(pWindow); bgWindows.push_back(pWindow);