mirror of
https://github.com/hyprwm/hyprland-plugins.git
synced 2025-05-13 05:40:41 +01:00
parent
7429a0ea78
commit
4e36349249
2 changed files with 14 additions and 9 deletions
|
@ -44,7 +44,6 @@ CHyprBar::CHyprBar(PHLWINDOW pWindow) : IHyprWindowDecoration(pWindow) {
|
|||
}
|
||||
|
||||
CHyprBar::~CHyprBar() {
|
||||
damageEntire();
|
||||
HyprlandAPI::unregisterCallback(PHANDLE, m_pMouseButtonCallback);
|
||||
HyprlandAPI::unregisterCallback(PHANDLE, m_pTouchDownCallback);
|
||||
HyprlandAPI::unregisterCallback(PHANDLE, m_pTouchUpCallback);
|
||||
|
@ -114,7 +113,7 @@ void CHyprBar::onTouchDown(SCallbackInfo& info, ITouch::SDownEvent e) {
|
|||
}
|
||||
|
||||
void CHyprBar::onMouseMove(Vector2D coords) {
|
||||
if (!m_bDragPending || m_bTouchEv)
|
||||
if (!m_bDragPending || m_bTouchEv || !validMapped(m_pWindow))
|
||||
return;
|
||||
|
||||
m_bDragPending = false;
|
||||
|
@ -122,7 +121,7 @@ void CHyprBar::onMouseMove(Vector2D coords) {
|
|||
}
|
||||
|
||||
void CHyprBar::onTouchMove(SCallbackInfo& info, ITouch::SMotionEvent e) {
|
||||
if (!m_bDragPending || !m_bTouchEv)
|
||||
if (!m_bDragPending || !m_bTouchEv || !validMapped(m_pWindow))
|
||||
return;
|
||||
|
||||
g_pInputManager->mouseMoveUnified(e.timeMs);
|
||||
|
@ -630,13 +629,14 @@ uint64_t CHyprBar::getDecorationFlags() {
|
|||
}
|
||||
|
||||
CBox CHyprBar::assignedBoxGlobal() {
|
||||
const auto PWINDOW = m_pWindow.lock();
|
||||
if (!validMapped(m_pWindow))
|
||||
return {};
|
||||
|
||||
CBox box = m_bAssignedBox;
|
||||
box.translate(g_pDecorationPositioner->getEdgeDefinedPoint(DECORATION_EDGE_TOP, PWINDOW));
|
||||
CBox box = m_bAssignedBox;
|
||||
box.translate(g_pDecorationPositioner->getEdgeDefinedPoint(DECORATION_EDGE_TOP, m_pWindow.lock()));
|
||||
|
||||
const auto PWORKSPACE = PWINDOW->m_pWorkspace;
|
||||
const auto WORKSPACEOFFSET = PWORKSPACE && !PWINDOW->m_bPinned ? PWORKSPACE->m_vRenderOffset->value() : Vector2D();
|
||||
const auto PWORKSPACE = m_pWindow->m_pWorkspace;
|
||||
const auto WORKSPACEOFFSET = PWORKSPACE && !m_pWindow->m_bPinned ? PWORKSPACE->m_vRenderOffset->value() : Vector2D();
|
||||
|
||||
return box.translate(WORKSPACEOFFSET);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
#include <hyprland/src/config/ConfigManager.hpp>
|
||||
#include <hyprland/src/render/Renderer.hpp>
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include "barDeco.hpp"
|
||||
#include "globals.hpp"
|
||||
|
||||
|
@ -21,6 +23,9 @@ static void onNewWindow(void* self, std::any data) {
|
|||
const auto PWINDOW = std::any_cast<PHLWINDOW>(data);
|
||||
|
||||
if (!PWINDOW->m_bX11DoesntWantBorders) {
|
||||
if (std::ranges::any_of(PWINDOW->m_dWindowDecorations, [](const auto& d) { return d->getDisplayName() == "Hyprbar"; }))
|
||||
return;
|
||||
|
||||
auto bar = makeUnique<CHyprBar>(PWINDOW);
|
||||
g_pGlobalState->bars.emplace_back(bar);
|
||||
bar->m_self = bar;
|
||||
|
@ -118,7 +123,7 @@ APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT(HANDLE handle) {
|
|||
g_pGlobalState = makeUnique<SGlobalState>();
|
||||
|
||||
static auto P = HyprlandAPI::registerCallbackDynamic(PHANDLE, "openWindow", [&](void* self, SCallbackInfo& info, std::any data) { onNewWindow(self, data); });
|
||||
static auto P2 = HyprlandAPI::registerCallbackDynamic(PHANDLE, "closeWindow", [&](void* self, SCallbackInfo& info, std::any data) { onCloseWindow(self, data); });
|
||||
// static auto P2 = HyprlandAPI::registerCallbackDynamic(PHANDLE, "closeWindow", [&](void* self, SCallbackInfo& info, std::any data) { onCloseWindow(self, data); });
|
||||
static auto P3 = HyprlandAPI::registerCallbackDynamic(PHANDLE, "windowUpdateRules",
|
||||
[&](void* self, SCallbackInfo& info, std::any data) { onUpdateWindowRules(std::any_cast<PHLWINDOW>(data)); });
|
||||
|
||||
|
|
Loading…
Reference in a new issue