mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-24 02:25:59 +01:00
renderer: add option to blur IME popups (#8521)
This commit is contained in:
parent
00d6261cc0
commit
451d7a41fc
3 changed files with 24 additions and 1 deletions
|
@ -331,6 +331,18 @@ inline static const std::vector<SConfigOptionDescription> CONFIG_OPTIONS = {
|
||||||
.type = CONFIG_OPTION_FLOAT,
|
.type = CONFIG_OPTION_FLOAT,
|
||||||
.data = SConfigOptionDescription::SFloatData{0.2, 0, 1},
|
.data = SConfigOptionDescription::SFloatData{0.2, 0, 1},
|
||||||
},
|
},
|
||||||
|
SConfigOptionDescription{
|
||||||
|
.value = "blur:input_methods",
|
||||||
|
.description = "whether to blur input methods (e.g. fcitx5)",
|
||||||
|
.type = CONFIG_OPTION_BOOL,
|
||||||
|
.data = SConfigOptionDescription::SBoolData{false},
|
||||||
|
},
|
||||||
|
SConfigOptionDescription{
|
||||||
|
.value = "blur:input_methods_ignorealpha",
|
||||||
|
.description = "works like ignorealpha in layer rules. If pixel opacity is below set value, will not blur. [0.0 - 1.0]",
|
||||||
|
.type = CONFIG_OPTION_FLOAT,
|
||||||
|
.data = SConfigOptionDescription::SFloatData{0.2, 0, 1},
|
||||||
|
},
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* animations:
|
* animations:
|
||||||
|
|
|
@ -429,6 +429,8 @@ CConfigManager::CConfigManager() {
|
||||||
m_pConfig->addConfigValue("decoration:blur:special", Hyprlang::INT{0});
|
m_pConfig->addConfigValue("decoration:blur:special", Hyprlang::INT{0});
|
||||||
m_pConfig->addConfigValue("decoration:blur:popups", Hyprlang::INT{0});
|
m_pConfig->addConfigValue("decoration:blur:popups", Hyprlang::INT{0});
|
||||||
m_pConfig->addConfigValue("decoration:blur:popups_ignorealpha", {0.2F});
|
m_pConfig->addConfigValue("decoration:blur:popups_ignorealpha", {0.2F});
|
||||||
|
m_pConfig->addConfigValue("decoration:blur:input_methods", Hyprlang::INT{0});
|
||||||
|
m_pConfig->addConfigValue("decoration:blur:input_methods_ignorealpha", {0.2F});
|
||||||
m_pConfig->addConfigValue("decoration:active_opacity", {1.F});
|
m_pConfig->addConfigValue("decoration:active_opacity", {1.F});
|
||||||
m_pConfig->addConfigValue("decoration:inactive_opacity", {1.F});
|
m_pConfig->addConfigValue("decoration:inactive_opacity", {1.F});
|
||||||
m_pConfig->addConfigValue("decoration:fullscreen_opacity", {1.F});
|
m_pConfig->addConfigValue("decoration:fullscreen_opacity", {1.F});
|
||||||
|
|
|
@ -850,12 +850,21 @@ void CHyprRenderer::renderIMEPopup(CInputPopup* pPopup, PHLMONITOR pMonitor, tim
|
||||||
|
|
||||||
const auto SURF = pPopup->getSurface();
|
const auto SURF = pPopup->getSurface();
|
||||||
|
|
||||||
renderdata.blur = false;
|
|
||||||
renderdata.surface = SURF;
|
renderdata.surface = SURF;
|
||||||
renderdata.decorate = false;
|
renderdata.decorate = false;
|
||||||
renderdata.w = SURF->current.size.x;
|
renderdata.w = SURF->current.size.x;
|
||||||
renderdata.h = SURF->current.size.y;
|
renderdata.h = SURF->current.size.y;
|
||||||
|
|
||||||
|
static auto PBLUR = CConfigValue<Hyprlang::INT>("decoration:blur:enabled");
|
||||||
|
static auto PBLURIMES = CConfigValue<Hyprlang::INT>("decoration:blur:input_methods");
|
||||||
|
static auto PBLURIGNOREA = CConfigValue<Hyprlang::FLOAT>("decoration:blur:input_methods_ignorealpha");
|
||||||
|
|
||||||
|
renderdata.blur = *PBLURIMES && *PBLUR;
|
||||||
|
if (renderdata.blur) {
|
||||||
|
g_pHyprOpenGL->m_RenderData.discardMode |= DISCARD_ALPHA;
|
||||||
|
g_pHyprOpenGL->m_RenderData.discardOpacity = *PBLURIGNOREA;
|
||||||
|
}
|
||||||
|
|
||||||
SURF->breadthfirst([](SP<CWLSurfaceResource> s, const Vector2D& offset, void* data) { renderSurface(s, offset.x, offset.y, data); }, &renderdata);
|
SURF->breadthfirst([](SP<CWLSurfaceResource> s, const Vector2D& offset, void* data) { renderSurface(s, offset.x, offset.y, data); }, &renderdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue