aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrathnor <rathnor>2004-03-08 12:20:31 (GMT)
committerrathnor <rathnor>2004-03-08 12:20:31 (GMT)
commitbc8a31d40552a3886df695557277b2fc013799bb (patch)
tree8e01b56ebb1ca63aebf21b664610577e3907ab0d /src
parent206a7ca10d0747acaab1f00975ff519badf61600 (diff)
downloadfluxbox-bc8a31d40552a3886df695557277b2fc013799bb.zip
fluxbox-bc8a31d40552a3886df695557277b2fc013799bb.tar.bz2
fix passing of focus when grouping
Diffstat (limited to 'src')
-rw-r--r--src/Window.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/Window.cc b/src/Window.cc
index 7638306..6d9a344 100644
--- a/src/Window.cc
+++ b/src/Window.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: Window.cc,v 1.269 2004/03/03 12:29:31 rathnor Exp $ 25// $Id: Window.cc,v 1.270 2004/03/08 12:20:31 rathnor Exp $
26 26
27#include "Window.hh" 27#include "Window.hh"
28 28
@@ -601,6 +601,8 @@ void FluxboxWindow::attachClient(WinClient &client) {
601 // reparent client win to this frame 601 // reparent client win to this frame
602 frame().setClientWindow(client); 602 frame().setClientWindow(client);
603 FbTk::EventManager &evm = *FbTk::EventManager::instance(); 603 FbTk::EventManager &evm = *FbTk::EventManager::instance();
604 WinClient *was_focused = 0;
605 WinClient *focused_win = Fluxbox::instance()->getFocusedWindow();
604 606
605 // get the current window on the end of our client list 607 // get the current window on the end of our client list
606 Window leftwin = None; 608 Window leftwin = None;
@@ -621,6 +623,9 @@ void FluxboxWindow::attachClient(WinClient &client) {
621 623
622 // reparent window to this 624 // reparent window to this
623 frame().setClientWindow(**client_it); 625 frame().setClientWindow(**client_it);
626 if ((*client_it) == focused_win)
627 was_focused = focused_win;
628
624 moveResizeClient(**client_it, 629 moveResizeClient(**client_it,
625 frame().clientArea().x(), 630 frame().clientArea().x(),
626 frame().clientArea().y(), 631 frame().clientArea().y(),
@@ -678,6 +683,8 @@ void FluxboxWindow::attachClient(WinClient &client) {
678 btn->setOnClick(set_client_cmd); 683 btn->setOnClick(set_client_cmd);
679 evm.add(*this, btn->window()); // we take care of button events for this 684 evm.add(*this, btn->window()); // we take care of button events for this
680 685
686 if (&client == focused_win)
687 was_focused = focused_win;
681 client.m_win = this; 688 client.m_win = this;
682 689
683 client.saveBlackboxAttribs(m_blackbox_attrib); 690 client.saveBlackboxAttribs(m_blackbox_attrib);
@@ -691,6 +698,12 @@ void FluxboxWindow::attachClient(WinClient &client) {
691 m_workspacesig.notify(); 698 m_workspacesig.notify();
692 m_layersig.notify(); 699 m_layersig.notify();
693 700
701 if (was_focused != 0) {
702 // already has focus, we're just assuming the state of the old window
703 setCurrentClient(*was_focused, false);
704 frame().setFocus(true);
705 }
706
694 frame().reconfigure(); 707 frame().reconfigure();
695 708
696 // keep the current window on top 709 // keep the current window on top