mirror of
https://github.com/hyprwm/hyprland-plugins.git
synced 2025-01-15 08:19:47 +01:00
all: chase hyprland
This commit is contained in:
parent
b6b31113ce
commit
d224c84d8e
6 changed files with 52 additions and 51 deletions
|
@ -8,8 +8,8 @@
|
|||
#include "globals.hpp"
|
||||
|
||||
CBordersPlusPlus::CBordersPlusPlus(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) {
|
||||
m_vLastWindowPos = pWindow->m_vRealPosition.value();
|
||||
m_vLastWindowSize = pWindow->m_vRealSize.value();
|
||||
m_vLastWindowPos = pWindow->m_vRealPosition->value();
|
||||
m_vLastWindowSize = pWindow->m_vRealSize->value();
|
||||
}
|
||||
|
||||
CBordersPlusPlus::~CBordersPlusPlus() {
|
||||
|
@ -97,7 +97,7 @@ void CBordersPlusPlus::drawPass(PHLMONITOR pMonitor, const float& a) {
|
|||
return;
|
||||
|
||||
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;
|
||||
const auto ORIGINALROUND = rounding == 0 ? 0 : (PWINDOW->rounding() + **PBORDERSIZE) * pMonitor->scale;
|
||||
|
@ -155,8 +155,8 @@ eDecorationType CBordersPlusPlus::getDecorationType() {
|
|||
}
|
||||
|
||||
void CBordersPlusPlus::updateWindow(PHLWINDOW pWindow) {
|
||||
m_vLastWindowPos = pWindow->m_vRealPosition.value();
|
||||
m_vLastWindowSize = pWindow->m_vRealSize.value();
|
||||
m_vLastWindowPos = pWindow->m_vRealPosition->value();
|
||||
m_vLastWindowSize = pWindow->m_vRealSize->value();
|
||||
|
||||
damageEntire();
|
||||
}
|
||||
|
|
|
@ -430,7 +430,7 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
|
|||
}
|
||||
|
||||
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());
|
||||
|
||||
|
@ -454,9 +454,9 @@ void CHyprBar::renderPass(PHLMONITOR pMonitor, const float& a) {
|
|||
|
||||
if (ROUNDING) {
|
||||
// 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,
|
||||
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};
|
||||
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_vRealSize->value().y - 2};
|
||||
|
||||
if (windowBox.w < 1 || windowBox.h < 1)
|
||||
return;
|
||||
|
@ -556,7 +556,7 @@ CBox CHyprBar::assignedBoxGlobal() {
|
|||
box.translate(g_pDecorationPositioner->getEdgeDefinedPoint(DECORATION_EDGE_TOP, PWINDOW));
|
||||
|
||||
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);
|
||||
}
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
#undef private
|
||||
#include "OverviewPassElement.hpp"
|
||||
|
||||
static void damageMonitor(void*) {
|
||||
static void damageMonitor(WP<Hyprutils::Animation::CBaseAnimatedVariable> thisptr) {
|
||||
g_pOverview->damage();
|
||||
}
|
||||
|
||||
static void removeOverview(void*) {
|
||||
static void removeOverview(WP<Hyprutils::Animation::CBaseAnimatedVariable> thisptr) {
|
||||
g_pOverview.reset();
|
||||
}
|
||||
|
||||
|
@ -162,18 +162,19 @@ COverview::COverview(PHLWORKSPACE startedOn_, bool swipe_) : startedOn(startedOn
|
|||
// zoom on the current workspace.
|
||||
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);
|
||||
pos.create((-((pMonitor->vecSize / (double)SIDE_LENGTH) * Vector2D{currentid % SIDE_LENGTH, currentid / SIDE_LENGTH}) * pMonitor->scale) * (pMonitor->vecSize / tileSize),
|
||||
g_pConfigManager->getAnimationPropertyConfig("windowsMove"), AVARDAMAGE_NONE);
|
||||
g_pAnimationManager->createAnimation(pMonitor->vecSize * pMonitor->vecSize / tileSize, size, g_pConfigManager->getAnimationPropertyConfig("windowsMove"), AVARDAMAGE_NONE);
|
||||
g_pAnimationManager->createAnimation((-((pMonitor->vecSize / (double)SIDE_LENGTH) * Vector2D{currentid % SIDE_LENGTH, currentid / SIDE_LENGTH}) * pMonitor->scale) *
|
||||
(pMonitor->vecSize / tileSize),
|
||||
pos, g_pConfigManager->getAnimationPropertyConfig("windowsMove"), AVARDAMAGE_NONE);
|
||||
|
||||
size.setUpdateCallback(damageMonitor);
|
||||
pos.setUpdateCallback(damageMonitor);
|
||||
size->setUpdateCallback(damageMonitor);
|
||||
pos->setUpdateCallback(damageMonitor);
|
||||
|
||||
if (!swipe) {
|
||||
size = pMonitor->vecSize;
|
||||
pos = {0, 0};
|
||||
*size = pMonitor->vecSize;
|
||||
*pos = {0, 0};
|
||||
|
||||
size.setCallbackOnEnd([this](void*) { redrawAll(true); });
|
||||
size->setCallbackOnEnd([this](auto) { redrawAll(true); });
|
||||
}
|
||||
|
||||
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;
|
||||
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};
|
||||
|
||||
if (!ENABLE_LOWRES)
|
||||
|
@ -301,7 +302,7 @@ void COverview::damage() {
|
|||
void COverview::onDamageReported() {
|
||||
damageDirty = true;
|
||||
|
||||
Vector2D SIZE = size.value();
|
||||
Vector2D SIZE = size->value();
|
||||
|
||||
Vector2D tileSize = (SIZE / 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);
|
||||
|
||||
size = pMonitor->vecSize * pMonitor->vecSize / tileSize;
|
||||
pos = (-((pMonitor->vecSize / (double)SIDE_LENGTH) * Vector2D{ID % SIDE_LENGTH, ID / SIDE_LENGTH}) * pMonitor->scale) * (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);
|
||||
|
||||
size.setCallbackOnEnd(removeOverview);
|
||||
size->setCallbackOnEnd(removeOverview);
|
||||
|
||||
closing = true;
|
||||
|
||||
|
@ -386,14 +387,14 @@ void COverview::render() {
|
|||
}
|
||||
|
||||
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) {
|
||||
// likely user changed.
|
||||
onWorkspaceChange();
|
||||
}
|
||||
|
||||
Vector2D SIZE = size.value();
|
||||
Vector2D SIZE = size->value();
|
||||
|
||||
Vector2D tileSize = (SIZE / 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 x = 0; x < SIDE_LENGTH; ++x) {
|
||||
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();
|
||||
CRegion damage{0, 0, INT16_MAX, INT16_MAX};
|
||||
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 POSMIN = Vector2D{0, 0};
|
||||
|
||||
size.setValueAndWarp(lerp(SIZEMIN, SIZEMAX, PERC));
|
||||
pos.setValueAndWarp(lerp(POSMIN, POSMAX, PERC));
|
||||
size->setValueAndWarp(lerp(SIZEMIN, SIZEMAX, PERC));
|
||||
pos->setValueAndWarp(lerp(POSMIN, POSMAX, PERC));
|
||||
}
|
||||
|
||||
void COverview::onSwipeEnd() {
|
||||
const auto SIZEMIN = pMonitor->vecSize;
|
||||
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) {
|
||||
close();
|
||||
return;
|
||||
}
|
||||
size = pMonitor->vecSize;
|
||||
pos = {0, 0};
|
||||
*size = pMonitor->vecSize;
|
||||
*pos = {0, 0};
|
||||
|
||||
size.setCallbackOnEnd([this](void*) { redrawAll(true); });
|
||||
size->setCallbackOnEnd([this](WP<Hyprutils::Animation::CBaseAnimatedVariable> thisptr) { redrawAll(true); });
|
||||
|
||||
swipeWasCommenced = true;
|
||||
}
|
||||
|
|
|
@ -64,8 +64,8 @@ class COverview {
|
|||
|
||||
PHLWORKSPACE startedOn;
|
||||
|
||||
CAnimatedVariable<Vector2D> size;
|
||||
CAnimatedVariable<Vector2D> pos;
|
||||
PHLANIMVAR<Vector2D> size;
|
||||
PHLANIMVAR<Vector2D> pos;
|
||||
|
||||
bool closing = false;
|
||||
|
||||
|
|
|
@ -16,8 +16,8 @@ void CTrail::onTick() {
|
|||
const auto PWINDOW = m_pWindow.lock();
|
||||
|
||||
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,
|
||||
(float)PWINDOW->m_vRealSize.value().y},
|
||||
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},
|
||||
std::chrono::system_clock::now()});
|
||||
while (m_dLastGeoms.size() > **PHISTORYPOINTS)
|
||||
m_dLastGeoms.pop_back();
|
||||
|
@ -32,8 +32,8 @@ void CTrail::onTick() {
|
|||
}
|
||||
|
||||
CTrail::CTrail(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow), m_pWindow(pWindow) {
|
||||
m_vLastWindowPos = pWindow->m_vRealPosition.value();
|
||||
m_vLastWindowSize = pWindow->m_vRealSize.value();
|
||||
m_vLastWindowPos = pWindow->m_vRealPosition->value();
|
||||
m_vLastWindowSize = pWindow->m_vRealSize->value();
|
||||
|
||||
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;
|
||||
|
||||
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};
|
||||
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,
|
||||
(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().y + PWINDOW->m_vRealSize.value().y) / pMonitor->vecSize.y};
|
||||
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().x + PWINDOW->m_vRealSize->value().x) / pMonitor->vecSize.x,
|
||||
(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.color, COLOR.r, COLOR.g, COLOR.b, COLOR.a);
|
||||
|
||||
|
@ -327,10 +327,10 @@ eDecorationType CTrail::getDecorationType() {
|
|||
void CTrail::updateWindow(PHLWINDOW pWindow) {
|
||||
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_vLastWindowSize = pWindow->m_vRealSize.value();
|
||||
m_vLastWindowPos = pWindow->m_vRealPosition->value() + WORKSPACEOFFSET;
|
||||
m_vLastWindowSize = pWindow->m_vRealSize->value();
|
||||
|
||||
damageEntire();
|
||||
}
|
||||
|
|
|
@ -44,12 +44,12 @@ void onNewWindow(PHLWINDOW pWindow) {
|
|||
if (!pWindow->m_bIsFloating)
|
||||
g_pLayoutManager->getCurrentLayout()->changeWindowFloatingMode(pWindow);
|
||||
|
||||
pWindow->m_vRealSize.setValueAndWarp(PMONITOR->vecSize);
|
||||
pWindow->m_vRealPosition.setValueAndWarp(PMONITOR->vecPosition);
|
||||
pWindow->m_vRealSize->setValueAndWarp(PMONITOR->vecSize);
|
||||
pWindow->m_vRealPosition->setValueAndWarp(PMONITOR->vecPosition);
|
||||
pWindow->m_vSize = PMONITOR->vecSize;
|
||||
pWindow->m_vPosition = PMONITOR->vecPosition;
|
||||
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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue