aboutsummaryrefslogtreecommitdiff
path: root/src/Ewmh.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ewmh.cc')
-rw-r--r--src/Ewmh.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/Ewmh.cc b/src/Ewmh.cc
index 51f7fa8..96ba209 100644
--- a/src/Ewmh.cc
+++ b/src/Ewmh.cc
@@ -766,23 +766,31 @@ bool Ewmh::checkClientMessage(const XClientMessageEvent &ce,
766 return true; 766 return true;
767 // ce.window = window to focus 767 // ce.window = window to focus
768 768
769 winclient->focus();
770 if (winclient->fbwindow()) { 769 if (winclient->fbwindow()) {
771 770
772 FluxboxWindow* fbwin = winclient->fbwindow(); 771 FluxboxWindow* fbwin = winclient->fbwindow();
773 fbwin->raise();
774 772
775 // if the raised window is on a different workspace 773 // if the raised window is on a different workspace
776 // we do what the user wish: 774 // we do what the user wish:
777 // either ignore|go to that workspace|get the window 775 // either ignore|go to that workspace|get the window
778 if (fbwin->screen().currentWorkspaceID() != fbwin->workspaceNumber()) { 776 if (fbwin->screen().currentWorkspaceID() != fbwin->workspaceNumber()) {
779 if (fbwin->screen().getFollowModel() == BScreen::FOLLOW_ACTIVE_WINDOW) { 777 BScreen::FollowModel model = (ce.data.l[0] == 2) ?
778 fbwin->screen().getUserFollowModel() :
779 fbwin->screen().getFollowModel();
780 if (model == BScreen::FOLLOW_ACTIVE_WINDOW) {
780 fbwin->screen().changeWorkspaceID(fbwin->workspaceNumber()); 781 fbwin->screen().changeWorkspaceID(fbwin->workspaceNumber());
781 } else if (fbwin->screen().getFollowModel() == BScreen::FETCH_ACTIVE_WINDOW) { 782 } else if (model == BScreen::FETCH_ACTIVE_WINDOW) {
782 fbwin->screen().sendToWorkspace(fbwin->screen().currentWorkspaceID(), fbwin); 783 fbwin->screen().sendToWorkspace(fbwin->screen().currentWorkspaceID(), fbwin);
784 } else if (model == BScreen::SEMIFOLLOW_ACTIVE_WINDOW) {
785 if (fbwin->isIconic())
786 fbwin->screen().sendToWorkspace(fbwin->screen().currentWorkspaceID(), fbwin);
787 else
788 fbwin->screen().changeWorkspaceID(fbwin->workspaceNumber());
783 } // else we ignore it. my favourite mode :) 789 } // else we ignore it. my favourite mode :)
784 } 790 }
791 fbwin->raise();
785 } 792 }
793 winclient->focus();
786 return true; 794 return true;
787 } else if (ce.message_type == m_net_close_window) { 795 } else if (ce.message_type == m_net_close_window) {
788 if (winclient == 0) 796 if (winclient == 0)