diff options
author | rathnor <rathnor> | 2003-07-20 18:05:40 (GMT) |
---|---|---|
committer | rathnor <rathnor> | 2003-07-20 18:05:40 (GMT) |
commit | 037bd174bfb107fef4657c949ce49c188090f3e7 (patch) | |
tree | 35d56080c76f4751946be2ddf95e4ce18e2a5bf2 /src/fluxbox.cc | |
parent | 8500132b0a05d22470e63cee1d16191ecb138ecf (diff) | |
download | fluxbox-037bd174bfb107fef4657c949ce49c188090f3e7.zip fluxbox-037bd174bfb107fef4657c949ce49c188090f3e7.tar.bz2 |
fix focus and raising for transient windows in particular
Diffstat (limited to 'src/fluxbox.cc')
-rw-r--r-- | src/fluxbox.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/fluxbox.cc b/src/fluxbox.cc index 027da76..b7a4d5b 100644 --- a/src/fluxbox.cc +++ b/src/fluxbox.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: fluxbox.cc,v 1.171 2003/07/18 15:40:55 rathnor Exp $ | 25 | // $Id: fluxbox.cc,v 1.172 2003/07/20 18:05:39 rathnor Exp $ |
26 | 26 | ||
27 | #include "fluxbox.hh" | 27 | #include "fluxbox.hh" |
28 | 28 | ||
@@ -891,11 +891,13 @@ void Fluxbox::handleEvent(XEvent * const e) { | |||
891 | break; | 891 | break; |
892 | 892 | ||
893 | FluxboxWindow *win = searchWindow(e->xfocus.window); | 893 | FluxboxWindow *win = searchWindow(e->xfocus.window); |
894 | if (win && ! win->isFocused()) | 894 | if (win && ! win->isFocused()) { |
895 | setFocusedWindow(win); | 895 | setFocusedWindow(win); |
896 | } | ||
896 | 897 | ||
897 | } break; | 898 | } break; |
898 | case FocusOut:{ | 899 | case FocusOut:{ |
900 | |||
899 | if (e->xfocus.mode == NotifyUngrab || | 901 | if (e->xfocus.mode == NotifyUngrab || |
900 | e->xfocus.detail == NotifyPointer) | 902 | e->xfocus.detail == NotifyPointer) |
901 | break; | 903 | break; |
@@ -904,8 +906,7 @@ void Fluxbox::handleEvent(XEvent * const e) { | |||
904 | #ifdef DEBUG | 906 | #ifdef DEBUG |
905 | cerr<<__FILE__<<"("<<__FUNCTION__<<") Focus out is not a FluxboxWindow !!"<<endl; | 907 | cerr<<__FILE__<<"("<<__FUNCTION__<<") Focus out is not a FluxboxWindow !!"<<endl; |
906 | #endif // DEBUG | 908 | #endif // DEBUG |
907 | if (getFocusedWindow()) | 909 | |
908 | getFocusedWindow()->setInputFocus(); | ||
909 | } | 910 | } |
910 | } | 911 | } |
911 | break; | 912 | break; |
@@ -1084,8 +1085,9 @@ void Fluxbox::handleClientMessage(XClientMessageEvent &ce) { | |||
1084 | 1085 | ||
1085 | } else if (ce.message_type == m_fbatoms->getFluxboxChangeWindowFocusAtom()) { | 1086 | } else if (ce.message_type == m_fbatoms->getFluxboxChangeWindowFocusAtom()) { |
1086 | FluxboxWindow *win = searchWindow(ce.window); | 1087 | FluxboxWindow *win = searchWindow(ce.window); |
1087 | if (win && win->isVisible() && win->setInputFocus()) | 1088 | if (win && win->isVisible() && win->setInputFocus()) { |
1088 | win->installColormap(true); | 1089 | win->installColormap(true); |
1090 | } | ||
1089 | } else if (ce.message_type == m_fbatoms->getFluxboxCycleWindowFocusAtom()) { | 1091 | } else if (ce.message_type == m_fbatoms->getFluxboxCycleWindowFocusAtom()) { |
1090 | BScreen *screen = searchScreen(ce.window); | 1092 | BScreen *screen = searchScreen(ce.window); |
1091 | 1093 | ||