don't change a fullscreen window's layer when its transient takes the focus
This commit is contained in:
parent
82047e6a39
commit
920cb81caf
1 changed files with 8 additions and 11 deletions
|
@ -475,21 +475,16 @@ void FluxboxWindow::init() {
|
||||||
if (m_workspace_number >= screen().numberOfWorkspaces())
|
if (m_workspace_number >= screen().numberOfWorkspaces())
|
||||||
m_workspace_number = screen().currentWorkspaceID();
|
m_workspace_number = screen().currentWorkspaceID();
|
||||||
|
|
||||||
// if we're a transient then we should be on the same layer as our parent
|
// if we're a transient then we should be on the same layer and workspace
|
||||||
if (m_client->isTransient() &&
|
if (m_client->isTransient() &&
|
||||||
m_client->transientFor()->fbwindow() &&
|
m_client->transientFor()->fbwindow() &&
|
||||||
m_client->transientFor()->fbwindow() != this)
|
m_client->transientFor()->fbwindow() != this) {
|
||||||
layerItem().setLayer(m_client->transientFor()->fbwindow()->layerItem().getLayer());
|
layerItem().setLayer(m_client->transientFor()->fbwindow()->layerItem().getLayer());
|
||||||
else // if no parent then set default layer
|
m_state.layernum = m_client->transientFor()->fbwindow()->layerNum();
|
||||||
moveToLayer(m_state.layernum, m_state.layernum != ::Layer::NORMAL);
|
|
||||||
|
|
||||||
// transients should be on the same workspace as parent
|
|
||||||
if (m_client->isTransient() &&
|
|
||||||
m_client->transientFor()->fbwindow()) {
|
|
||||||
m_workspace_number =
|
m_workspace_number =
|
||||||
m_client->transientFor()->fbwindow()->workspaceNumber();
|
m_client->transientFor()->fbwindow()->workspaceNumber();
|
||||||
}
|
} else // if no parent then set default layer
|
||||||
|
moveToLayer(m_state.layernum, m_state.layernum != ::Layer::NORMAL);
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
cerr<<"FluxboxWindow::init("<<title()<<") transientFor: "<<
|
cerr<<"FluxboxWindow::init("<<title()<<") transientFor: "<<
|
||||||
|
@ -1472,7 +1467,9 @@ void FluxboxWindow::setFullscreenLayer() {
|
||||||
FluxboxWindow *foc = FocusControl::focusedFbWindow();
|
FluxboxWindow *foc = FocusControl::focusedFbWindow();
|
||||||
// if another window on the same head is focused, make sure we can see it
|
// if another window on the same head is focused, make sure we can see it
|
||||||
if (isFocused() || !foc || &foc->screen() != &screen() ||
|
if (isFocused() || !foc || &foc->screen() != &screen() ||
|
||||||
getOnHead() != foc->getOnHead()) {
|
getOnHead() != foc->getOnHead() ||
|
||||||
|
(foc->winClient().isTransient() &&
|
||||||
|
foc->winClient().transientFor()->fbwindow() == this)) {
|
||||||
moveToLayer(::Layer::ABOVE_DOCK);
|
moveToLayer(::Layer::ABOVE_DOCK);
|
||||||
} else {
|
} else {
|
||||||
moveToLayer(::Layer::DESKTOP);
|
moveToLayer(::Layer::DESKTOP);
|
||||||
|
|
Loading…
Reference in a new issue