resize maximized windows when the toolbar or slit changes size
Mark Tiefenbruck mark@fluxbox.org
2 files changed,
14 insertions(+),
9 deletions(-)
M
src/FbWinFrame.cc
→
src/FbWinFrame.cc
@@ -198,8 +198,6 @@ if (!(m_state.deco_mask & DECORM_TITLEBAR))
return; // toggle shade - if (!m_state.shaded) - saveGeometry(); m_state.shaded = !m_state.shaded; applyState(); }@@ -256,6 +254,8 @@ } else {
m_window.resize(width, height); } + saveGeometry(); + if (move || (resize && m_screen.getTabPlacement() != TOPLEFT && m_screen.getTabPlacement() != LEFTTOP)) alignTabs();@@ -283,6 +283,7 @@
void FbWinFrame::quietMoveResize(int x, int y, unsigned int width, unsigned int height) { m_window.moveResize(x, y, width, height); + saveGeometry(); if (m_tabmode == EXTERNAL) { switch(m_screen.getTabPlacement()) {@@ -521,7 +522,6 @@ void FbWinFrame::setFullscreen(bool newvalue) {
if (newvalue == m_state.fullscreen) return; - saveGeometry(); m_state.fullscreen = newvalue; applyState(); }@@ -530,7 +530,6 @@ void FbWinFrame::setMaximized(int value) {
if (value == m_state.maximized) return; - saveGeometry(); m_state.maximized = value; applyState(); }
M
src/Window.cc
→
src/Window.cc
@@ -1538,6 +1538,12 @@
maximized = type; frame().setMaximized(type); + // notify when struts change, so we can resize accordingly + if (maximized) + screen().workspaceAreaSig().attach(this); + else + screen().workspaceAreaSig().detach(this); + // notify listeners that we changed state stateSig().notify(); }@@ -2771,14 +2777,14 @@ frame().setFocusTitle(win.title());
titleSig().notify(); } - } else if (subj && typeid(*subj) == typeid(BScreen::ScreenSubject)) { - if (subj == &screen().focusedWindowSig()) { - if (FocusControl::focusedFbWindow()) - setFullscreenLayer(); - } + } else if (subj == &screen().focusedWindowSig()) { + if (FocusControl::focusedFbWindow()) + setFullscreenLayer(); } else if (subj == &m_theme.reconfigSig()) { frame().applyDecorations(); sendConfigureNotify(); + } else if (subj == &screen().workspaceAreaSig()) { + frame().applyState(); } else if (m_initialized && subj == &m_frame.frameExtentSig()) { Fluxbox::instance()->updateFrameExtents(*this); sendConfigureNotify();