Chase hyprland
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
CHyprEasyLabel::CHyprEasyLabel(PHLWINDOW pWindow, SMotionActionDesc *actionDesc) : IHyprWindowDecoration(pWindow) {
|
||||
m_pWindow = pWindow;
|
||||
|
||||
const auto PMONITOR = pWindow->m_pMonitor.lock();
|
||||
const auto PMONITOR = pWindow->m_monitor.lock();
|
||||
PMONITOR->scheduledRecalc = true;
|
||||
m_szWindowAddress = std::format("0x{:x}", (uintptr_t)pWindow.get());
|
||||
m_szActionCmd = std::vformat(actionDesc->commandString, std::make_format_args(m_szWindowAddress));
|
||||
@@ -99,8 +99,8 @@ void CHyprEasyLabel::renderMotionString(Vector2D& bufferSize, const float scale)
|
||||
cairo_surface_flush(CAIROSURFACE);
|
||||
const auto DATA = cairo_image_surface_get_data(CAIROSURFACE);
|
||||
m_tTextTex->allocate();
|
||||
m_tTextTex->m_vSize = {bufferSize.x, bufferSize.y};
|
||||
glBindTexture(GL_TEXTURE_2D, m_tTextTex->m_iTexID);
|
||||
m_tTextTex->m_size = {bufferSize.x, bufferSize.y};
|
||||
glBindTexture(GL_TEXTURE_2D, m_tTextTex->m_texID);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
|
||||
@@ -127,15 +127,15 @@ void CHyprEasyLabel::draw(PHLMONITOR pMonitor, float const &a) {
|
||||
|
||||
const auto PWINDOW = m_pWindow.lock();
|
||||
|
||||
if (!PWINDOW->m_sWindowData.decorate.valueOrDefault())
|
||||
if (!PWINDOW->m_windowData.decorate.valueOrDefault())
|
||||
return;
|
||||
|
||||
const auto PWORKSPACE = PWINDOW->m_pWorkspace;
|
||||
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_bPinned ? PWORKSPACE->m_vRenderOffset->value() : Vector2D();
|
||||
const auto PWORKSPACE = PWINDOW->m_workspace;
|
||||
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_pinned ? PWORKSPACE->m_vRenderOffset->value() : Vector2D();
|
||||
|
||||
const auto DECOBOX = assignedBoxGlobal();
|
||||
|
||||
const auto BARBUF = DECOBOX.size() * pMonitor->scale;
|
||||
const auto BARBUF = DECOBOX.size() * pMonitor->m_scale;
|
||||
|
||||
//CBox motionBox = {DECOBOX.x - pMonitor->vecPosition.x, DECOBOX.y - pMonitor->vecPosition.y, DECOBOX.w,
|
||||
|
||||
@@ -143,11 +143,11 @@ void CHyprEasyLabel::draw(PHLMONITOR pMonitor, float const &a) {
|
||||
|
||||
|
||||
if (!m_tTextTex.get()) {
|
||||
renderMotionString(TEXTBUF, pMonitor->scale);
|
||||
renderMotionString(TEXTBUF, pMonitor->m_scale);
|
||||
}
|
||||
|
||||
CBox motionBox = {DECOBOX.x, DECOBOX.y, m_tTextTex->m_vSize.x, m_tTextTex->m_vSize.y};
|
||||
motionBox.translate(pMonitor->vecPosition*-1).scale(pMonitor->scale).round();
|
||||
CBox motionBox = {DECOBOX.x, DECOBOX.y, m_tTextTex->m_size.x, m_tTextTex->m_size.y};
|
||||
motionBox.translate(pMonitor->m_vecPosition*-1).scale(pMonitor->m_scale).round();
|
||||
|
||||
if (motionBox.w < 1 || motionBox.h < 1)
|
||||
{
|
||||
@@ -166,12 +166,12 @@ void CHyprEasyLabel::draw(PHLMONITOR pMonitor, float const &a) {
|
||||
|
||||
rectData.round = m_iRounding != 0;
|
||||
rectData.roundingPower = m_iRounding ;
|
||||
g_pHyprRenderer->m_sRenderPass.add(makeShared<CRectPassElement>(rectData));
|
||||
g_pHyprRenderer->m_renderPass.add(makeShared<CRectPassElement>(rectData));
|
||||
|
||||
|
||||
if (m_iBorderSize) {
|
||||
CBox borderBox = {DECOBOX.x, DECOBOX.y, static_cast<double>(layoutWidth), static_cast<double>(layoutHeight)};
|
||||
borderBox.translate(pMonitor->vecPosition*-1).scale(pMonitor->scale).round();
|
||||
borderBox.translate(pMonitor->m_vecPosition*-1).scale(pMonitor->m_scale).round();
|
||||
if (borderBox.w >= 1 && borderBox.h >= 1) {
|
||||
CBorderPassElement::SBorderData borderData;
|
||||
borderData.box = borderBox;
|
||||
@@ -180,7 +180,7 @@ void CHyprEasyLabel::draw(PHLMONITOR pMonitor, float const &a) {
|
||||
borderData.roundingPower = m_iRounding;
|
||||
borderData.borderSize = m_iBorderSize;
|
||||
borderData.a = a;
|
||||
g_pHyprRenderer->m_sRenderPass.add(makeShared<CBorderPassElement>(borderData));
|
||||
g_pHyprRenderer->m_renderPass.add(makeShared<CBorderPassElement>(borderData));
|
||||
//g_pHyprOpenGL->renderBorder(borderBox, m_cBorderGradient, scaledRounding, m_iBorderSize * pMonitor->scale, a);
|
||||
}
|
||||
}
|
||||
@@ -189,7 +189,7 @@ void CHyprEasyLabel::draw(PHLMONITOR pMonitor, float const &a) {
|
||||
motionBox.round();
|
||||
texData.tex = m_tTextTex;
|
||||
texData.box = motionBox;
|
||||
g_pHyprRenderer->m_sRenderPass.add(makeShared<CTexPassElement>(texData));
|
||||
g_pHyprRenderer->m_renderPass.add(makeShared<CTexPassElement>(texData));
|
||||
|
||||
|
||||
}
|
||||
@@ -204,7 +204,7 @@ void CHyprEasyLabel::updateWindow(PHLWINDOW pWindow) {
|
||||
|
||||
void CHyprEasyLabel::damageEntire() {
|
||||
auto box = assignedBoxGlobal();
|
||||
box.translate(m_pWindow->m_vFloatingOffset);
|
||||
box.translate(m_pWindow->m_floatingOffset);
|
||||
g_pHyprRenderer->damageBox(box);
|
||||
}
|
||||
|
||||
@@ -221,15 +221,15 @@ CBox CHyprEasyLabel::assignedBoxGlobal() {
|
||||
const auto PWINDOW = m_pWindow.lock();
|
||||
double boxHeight, boxWidth;
|
||||
double boxSize;
|
||||
boxHeight = PWINDOW->m_vRealSize->value().y * 0.10;
|
||||
boxWidth = PWINDOW->m_vRealSize->value().x * 0.10;
|
||||
boxHeight = PWINDOW->m_realSize->value().y * 0.10;
|
||||
boxWidth = PWINDOW->m_realSize->value().x * 0.10;
|
||||
boxSize = std::min(boxHeight, boxWidth);
|
||||
double boxX = PWINDOW->m_vRealPosition->value().x + (PWINDOW->m_vRealSize->value().x-boxSize)/2;
|
||||
double boxY = PWINDOW->m_vRealPosition->value().y + (PWINDOW->m_vRealSize->value().y-boxSize)/2;
|
||||
double boxX = PWINDOW->m_realPosition->value().x + (PWINDOW->m_realSize->value().x-boxSize)/2;
|
||||
double boxY = PWINDOW->m_realPosition->value().y + (PWINDOW->m_realSize->value().y-boxSize)/2;
|
||||
CBox box = {boxX, boxY, boxSize, boxSize};
|
||||
|
||||
const auto PWORKSPACE = PWINDOW->m_pWorkspace;
|
||||
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_bPinned ? PWORKSPACE->m_vRenderOffset->value() : Vector2D();
|
||||
const auto PWORKSPACE = PWINDOW->m_workspace;
|
||||
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_pinned ? PWORKSPACE->m_vRenderOffset->value() : Vector2D();
|
||||
|
||||
return box.translate(WORKSPACEOFFSET);
|
||||
}
|
||||
|
||||
14
main.cpp
14
main.cpp
@@ -23,7 +23,7 @@ APICALL EXPORT std::string PLUGIN_API_VERSION() {
|
||||
SDispatchResult easymotionExitDispatch(std::string args)
|
||||
{
|
||||
for (auto &ml : g_pGlobalState->motionLabels | std::ranges::views::reverse) {
|
||||
if (ml->m_origFSMode != ml->getOwner()->m_sFullscreenState.internal)
|
||||
if (ml->m_origFSMode != ml->getOwner()->m_fullscreenState.internal)
|
||||
g_pCompositor->setWindowFullscreenInternal(ml->getOwner(), ml->m_origFSMode);
|
||||
ml->getOwner()->removeWindowDeco(ml.get());
|
||||
}
|
||||
@@ -38,7 +38,7 @@ SDispatchResult easymotionActionDispatch(std::string args)
|
||||
for (auto &ml : g_pGlobalState->motionLabels) {
|
||||
if (ml->m_szLabel == args) {
|
||||
g_pEventManager->postEvent(SHyprIPCEvent{"easymotionselect", std::format("{},{}", ml->m_szWindowAddress, ml->m_szLabel)});
|
||||
g_pKeybindManager->m_mDispatchers["exec"](ml->m_szActionCmd);
|
||||
g_pKeybindManager->m_dispatchers["exec"](ml->m_szActionCmd);
|
||||
easymotionExitDispatch("");
|
||||
break;
|
||||
}
|
||||
@@ -63,8 +63,8 @@ void addLabelToWindow(PHLWINDOW window, SMotionActionDesc *actionDesc, std::stri
|
||||
motionlabel->m_szLabel = label;
|
||||
g_pGlobalState->motionLabels.emplace_back(motionlabel);
|
||||
motionlabel->m_self = motionlabel;
|
||||
motionlabel->draw(window->m_pMonitor.lock(), 1.0);
|
||||
motionlabel->m_origFSMode = window->m_sFullscreenState.internal;
|
||||
motionlabel->draw(window->m_monitor.lock(), 1.0);
|
||||
motionlabel->m_origFSMode = window->m_fullscreenState.internal;
|
||||
if ((motionlabel->m_origFSMode != eFullscreenMode::FSMODE_NONE) && (actionDesc->fullscreen_action != "none"))
|
||||
{
|
||||
if (actionDesc->fullscreen_action == "maximize")
|
||||
@@ -213,8 +213,8 @@ SDispatchResult easymotionDispatch(std::string args)
|
||||
std::transform(actionDesc.fullscreen_action.begin(), actionDesc.fullscreen_action.end(), actionDesc.fullscreen_action.begin(), tolower);
|
||||
int key_idx = 0;
|
||||
|
||||
for (auto &w : g_pCompositor->m_vWindows) {
|
||||
for (auto &m : g_pCompositor->m_vMonitors) {
|
||||
for (auto &w : g_pCompositor->m_windows) {
|
||||
for (auto &m : g_pCompositor->m_monitors) {
|
||||
if (w->m_pWorkspace == m->activeWorkspace || m->activeSpecialWorkspace == w->m_pWorkspace) {
|
||||
if (w->isHidden() || !w->m_bIsMapped || w->m_bFadingOut)
|
||||
continue;
|
||||
@@ -245,7 +245,7 @@ bool oneasymotionKeypress(void *self, std::any data) {
|
||||
|
||||
const auto KEYCODE = ev.keycode + 8;
|
||||
|
||||
const xkb_keysym_t KEYSYM = xkb_state_key_get_one_sym(keyboard->xkbState, KEYCODE);
|
||||
const xkb_keysym_t KEYSYM = xkb_state_key_get_one_sym(keyboard->m_xkbState, KEYCODE);
|
||||
|
||||
if (ev.state != WL_KEYBOARD_KEY_STATE_PRESSED) return false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user