diff options
Diffstat (limited to 'src/Window.cc')
-rw-r--r-- | src/Window.cc | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/src/Window.cc b/src/Window.cc index b50ee38..44fd4c9 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -432,8 +432,9 @@ void FluxboxWindow::init() { | |||
432 | /* Read state above here, apply state below here. */ | 432 | /* Read state above here, apply state below here. */ |
433 | /**************************************************/ | 433 | /**************************************************/ |
434 | 434 | ||
435 | // update transient infomation | 435 | if (m_client->transientFor() && m_client->transientFor()->fbwindow() && |
436 | m_client->updateTransientInfo(); | 436 | m_client->transientFor()->fbwindow()->isStuck()) |
437 | stick(); | ||
437 | 438 | ||
438 | // adjust the window decorations based on transience and window sizes | 439 | // adjust the window decorations based on transience and window sizes |
439 | if (m_client->isTransient() && !screen().decorateTransient()) { | 440 | if (m_client->isTransient() && !screen().decorateTransient()) { |
@@ -1855,6 +1856,19 @@ void FluxboxWindow::stick() { | |||
1855 | m_workspacesig.notify(); | 1856 | m_workspacesig.notify(); |
1856 | } | 1857 | } |
1857 | 1858 | ||
1859 | ClientList::iterator client_it = clientList().begin(); | ||
1860 | ClientList::iterator client_it_end = clientList().end(); | ||
1861 | for (; client_it != client_it_end; ++client_it) { | ||
1862 | |||
1863 | WinClient::TransientList::const_iterator it = (*client_it)->transientList().begin(); | ||
1864 | WinClient::TransientList::const_iterator it_end = (*client_it)->transientList().end(); | ||
1865 | for (; it != it_end; ++it) { | ||
1866 | if ((*it)->fbwindow() && (*it)->fbwindow()->isStuck() != stuck) | ||
1867 | (*it)->fbwindow()->stick(); | ||
1868 | } | ||
1869 | |||
1870 | } | ||
1871 | |||
1858 | } | 1872 | } |
1859 | 1873 | ||
1860 | 1874 | ||
@@ -1955,16 +1969,24 @@ void FluxboxWindow::moveToLayer(int layernum, bool force) { | |||
1955 | layernum = win->layerItem().getLayerNum(); | 1969 | layernum = win->layerItem().getLayerNum(); |
1956 | win->setLayerNum(layernum); | 1970 | win->setLayerNum(layernum); |
1957 | 1971 | ||
1958 | WinClient::TransientList::const_iterator it = client->transientList().begin(); | 1972 | // move all the transients, too |
1959 | WinClient::TransientList::const_iterator it_end = client->transientList().end(); | 1973 | ClientList::iterator client_it = win->clientList().begin(); |
1960 | for (; it != it_end; ++it) { | 1974 | ClientList::iterator client_it_end = win->clientList().end(); |
1961 | win = (*it)->fbwindow(); | 1975 | for (; client_it != client_it_end; ++client_it) { |
1962 | if (win && !win->isIconic()) { | 1976 | |
1963 | screen().updateNetizenWindowRaise((*it)->window()); | 1977 | WinClient::TransientList::const_iterator it = (*client_it)->transientList().begin(); |
1964 | win->layerItem().moveToLayer(layernum); | 1978 | WinClient::TransientList::const_iterator it_end = (*client_it)->transientList().end(); |
1965 | win->setLayerNum(layernum); | 1979 | for (; it != it_end; ++it) { |
1980 | FluxboxWindow *fbwin = (*it)->fbwindow(); | ||
1981 | if (fbwin && !fbwin->isIconic()) { | ||
1982 | screen().updateNetizenWindowRaise((*it)->window()); | ||
1983 | fbwin->layerItem().moveToLayer(layernum); | ||
1984 | fbwin->setLayerNum(layernum); | ||
1985 | } | ||
1966 | } | 1986 | } |
1987 | |||
1967 | } | 1988 | } |
1989 | |||
1968 | } | 1990 | } |
1969 | 1991 | ||
1970 | void FluxboxWindow::setFocusHidden(bool value) { | 1992 | void FluxboxWindow::setFocusHidden(bool value) { |