#include "Workspace.hh"
#include "Workspacemenu.hh"
#include "XAtom.hh"
+#include "Input.hh"
#ifndef FONT_ELEMENT_SIZE
#define FONT_ELEMENT_SIZE 50
// call this again just in case a window we found updates the Strut list
updateAvailableArea();
+ updateFocusModel();
}
// desktop windows cant do anything, so we remove all the normal window
// stuff from them, they are only kept around so that we can keep them on
// the bottom of the z-order
- addDesktopWindow(win->getClientWindow());
win->restore(True);
+ addDesktopWindow(win->getClientWindow());
delete win;
return;
}
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();
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));
}