summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-28 12:07:41 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-28 12:07:41 +0200
commit9dd17a4be6a719ab0cc501f63cf07cfd066f3ef8 (patch)
treeb96b5a83f6874a81c7a450fbbc43745ed827910a /src
parent3904351678f9e76ee67896e39641c82efbb9ed01 (diff)
Added toggleopaque dispatcher
Diffstat (limited to 'src')
-rw-r--r--src/Window.hpp1
-rw-r--r--src/managers/KeybindManager.cpp12
-rw-r--r--src/managers/KeybindManager.hpp1
-rw-r--r--src/render/Renderer.cpp4
4 files changed, 18 insertions, 0 deletions
diff --git a/src/Window.hpp b/src/Window.hpp
index c159340c..ffa447fc 100644
--- a/src/Window.hpp
+++ b/src/Window.hpp
@@ -16,6 +16,7 @@ struct SWindowAdditionalConfigData {
std::string animationStyle = "";
int rounding = -1; // -1 means no
bool forceNoBlur = false;
+ bool forceOpaque = false;
};
class CWindow {
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 15ff0533..cdc8f93f 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -35,6 +35,7 @@ CKeybindManager::CKeybindManager() {
m_mDispatchers["submap"] = setSubmap;
m_mDispatchers["pass"] = pass;
m_mDispatchers["layoutmsg"] = layoutmsg;
+ m_mDispatchers["toggleopaque"] = toggleOpaque;
m_tScrollTimer.reset();
}
@@ -1309,4 +1310,15 @@ void CKeybindManager::pass(std::string regexp) {
void CKeybindManager::layoutmsg(std::string msg) {
SLayoutMessageHeader hd = {g_pCompositor->m_pLastWindow};
g_pLayoutManager->getCurrentLayout()->layoutMessage(hd, msg);
+}
+
+void CKeybindManager::toggleOpaque(std::string unused) {
+ const auto PWINDOW = g_pCompositor->m_pLastWindow;
+
+ if (!g_pCompositor->windowValidMapped(PWINDOW))
+ return;
+
+ PWINDOW->m_sAdditionalConfigData.forceOpaque = !PWINDOW->m_sAdditionalConfigData.forceOpaque;
+
+ g_pHyprRenderer->damageWindow(PWINDOW);
} \ No newline at end of file
diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp
index 5ac98534..2e97d747 100644
--- a/src/managers/KeybindManager.hpp
+++ b/src/managers/KeybindManager.hpp
@@ -97,6 +97,7 @@ private:
static void setSubmap(std::string);
static void pass(std::string);
static void layoutmsg(std::string);
+ static void toggleOpaque(std::string);
friend class CCompositor;
};
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 658091c4..87d66b6c 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -197,6 +197,10 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec*
else
renderdata.alpha *= pWindow == g_pCompositor->m_pLastWindow ? pWindow->m_sSpecialRenderData.alpha : pWindow->m_sSpecialRenderData.alphaInactive;
+ // apply opaque
+ if (pWindow->m_sAdditionalConfigData.forceOpaque)
+ renderdata.alpha = 1.f;
+
g_pHyprOpenGL->m_pCurrentWindow = pWindow;
// render window decorations first, if not fullscreen full