X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FScreen.cc;h=88cba6733fbc24e2df1fabfc56c6e2294dbf7ff7;hb=ffa4c7f3414944869016497a4f560c24b9d8b3e9;hp=73dfeaf1bd71d91d4adac0490657c83e7fe5cd85;hpb=871602208a1874dcb3a8bfc4abdfc4d100a0ec57;p=chaz%2Fopenbox diff --git a/src/Screen.cc b/src/Screen.cc index 73dfeaf1..88cba673 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -88,6 +88,7 @@ using std::string; #include "Workspace.hh" #include "Workspacemenu.hh" #include "XAtom.hh" +#include "Input.hh" #ifndef FONT_ELEMENT_SIZE #define FONT_ELEMENT_SIZE 50 @@ -313,6 +314,7 @@ BScreen::BScreen(Blackbox *bb, unsigned int scrn) : ScreenInfo(bb, scrn) { // call this again just in case a window we found updates the Strut list updateAvailableArea(); + updateFocusModel(); } @@ -2170,9 +2172,10 @@ void BScreen::toggleFocusModel(FocusModel model) { if (model == SloppyFocus) { saveSloppyFocus(True); } else { + // we're cheating here to save writing the config file 3 times + resource.auto_raise = False; + resource.click_raise = False; saveSloppyFocus(False); - saveAutoRaise(False); - saveClickRaise(False); } updateFocusModel(); @@ -2181,8 +2184,31 @@ void BScreen::toggleFocusModel(FocusModel model) { void BScreen::updateFocusModel() { - std::for_each(workspacesList.begin(), workspacesList.end(), - std::mem_fun(&Workspace::updateFocusModel)); + std::for_each(iconList.begin(), iconList.end(), + std::mem_fun(&BlackboxWindow::ungrabButtons)); + std::for_each(windowList.begin(), windowList.end(), + std::mem_fun(&BlackboxWindow::ungrabButtons)); + + if (! resource.sloppy_focus) { + blackbox->getInput()->add(Button1, 0, BInput::WindowClientPress, + BInput::Raise); + blackbox->getInput()->add(Button1, 0, BInput::WindowClientPress, + BInput::Focus); + } else { + if (resource.click_raise) + blackbox->getInput()->add(Button1, 0, BInput::WindowClientPress, + BInput::Raise); + else + blackbox->getInput()->remove(Button1, 0, BInput::WindowClientPress, + BInput::Raise); + blackbox->getInput()->remove(Button1, 0, BInput::WindowClientPress, + BInput::Focus); + } + + std::for_each(iconList.begin(), iconList.end(), + std::mem_fun(&BlackboxWindow::grabButtons)); + std::for_each(windowList.begin(), windowList.end(), + std::mem_fun(&BlackboxWindow::grabButtons)); }