mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-10-05 09:36:28 +00:00
New animation system
This commit is contained in:
@@ -33,6 +33,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
|
||||
PWINDOW->m_bReadyToDelete = false;
|
||||
PWINDOW->m_bFadingOut = false;
|
||||
PWINDOW->m_szTitle = g_pXWaylandManager->getTitle(PWINDOW);
|
||||
PWINDOW->m_fAlpha = 255.f;
|
||||
|
||||
// checks if the window wants borders and sets the appriopriate flag
|
||||
g_pXWaylandManager->checkBorders(PWINDOW);
|
||||
@@ -112,6 +113,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
|
||||
|
||||
Debug::log(LOG, "Rule size, applying to window %x", PWINDOW);
|
||||
|
||||
PWINDOW->m_vRealSize = Vector2D(SIZEX, SIZEY);
|
||||
PWINDOW->m_vEffectiveSize = Vector2D(SIZEX, SIZEY);
|
||||
g_pXWaylandManager->setWindowSize(PWINDOW, PWINDOW->m_vEffectiveSize);
|
||||
} catch (...) {
|
||||
@@ -128,6 +130,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
|
||||
|
||||
Debug::log(LOG, "Rule move, applying to window %x", PWINDOW);
|
||||
|
||||
PWINDOW->m_vRealPosition = Vector2D(POSX, POSY) + PMONITOR->vecPosition;
|
||||
PWINDOW->m_vEffectivePosition = Vector2D(POSX, POSY) + PMONITOR->vecPosition;
|
||||
} catch (...) {
|
||||
Debug::log(LOG, "Rule move failed, rule: %s -> %s", r.szRule.c_str(), r.szValue.c_str());
|
||||
@@ -194,6 +197,8 @@ void Events::listener_unmapWindow(void* owner, void* data) {
|
||||
// Allow the renderer to catch the last frame.
|
||||
g_pHyprOpenGL->makeWindowSnapshot(PWINDOW);
|
||||
|
||||
PWINDOW->m_fAlpha = 0.f;
|
||||
|
||||
PWINDOW->m_bMappedX11 = false;
|
||||
|
||||
// remove the fullscreen window status from workspace if we closed it
|
||||
@@ -298,7 +303,7 @@ void Events::listener_configureX11(void* owner, void* data) {
|
||||
const auto E = (wlr_xwayland_surface_configure_event*)data;
|
||||
|
||||
if (!PWINDOW->m_bIsFloating) {
|
||||
g_pXWaylandManager->setWindowSize(PWINDOW, PWINDOW->m_vRealSize);
|
||||
g_pXWaylandManager->setWindowSize(PWINDOW, PWINDOW->m_vRealSize.vec());
|
||||
g_pInputManager->refocus();
|
||||
return;
|
||||
}
|
||||
@@ -307,8 +312,8 @@ void Events::listener_configureX11(void* owner, void* data) {
|
||||
wlr_xwayland_surface_restack(PWINDOW->m_uSurface.xwayland, NULL, XCB_STACK_MODE_ABOVE);
|
||||
PWINDOW->m_vEffectivePosition = Vector2D(E->x, E->y);
|
||||
PWINDOW->m_vEffectiveSize = Vector2D(E->width, E->height);
|
||||
PWINDOW->m_vRealPosition = PWINDOW->m_vEffectivePosition;
|
||||
PWINDOW->m_vRealSize = PWINDOW->m_vRealSize;
|
||||
PWINDOW->m_vRealPosition.setValue(PWINDOW->m_vEffectivePosition);
|
||||
PWINDOW->m_vRealSize.setValue(PWINDOW->m_vEffectiveSize);
|
||||
PWINDOW->m_vPosition = PWINDOW->m_vPosition;
|
||||
PWINDOW->m_vSize = PWINDOW->m_vSize;
|
||||
|
||||
@@ -322,7 +327,7 @@ void Events::listener_surfaceXWayland(wl_listener* listener, void* data) {
|
||||
|
||||
Debug::log(LOG, "New XWayland Surface created.");
|
||||
|
||||
g_pCompositor->m_lWindows.push_back(CWindow());
|
||||
g_pCompositor->m_lWindows.emplace_back();
|
||||
const auto PNEWWINDOW = &g_pCompositor->m_lWindows.back();
|
||||
|
||||
PNEWWINDOW->m_uSurface.xwayland = XWSURFACE;
|
||||
@@ -343,7 +348,7 @@ void Events::listener_newXDGSurface(wl_listener* listener, void* data) {
|
||||
if (XDGSURFACE->role != WLR_XDG_SURFACE_ROLE_TOPLEVEL)
|
||||
return; // TODO: handle?
|
||||
|
||||
g_pCompositor->m_lWindows.push_back(CWindow());
|
||||
g_pCompositor->m_lWindows.emplace_back();
|
||||
const auto PNEWWINDOW = &g_pCompositor->m_lWindows.back();
|
||||
PNEWWINDOW->m_uSurface.xdg = XDGSURFACE;
|
||||
|
||||
|
Reference in New Issue
Block a user