X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fopenbox.cc;h=4e098cb839d0f501c66ada6728806914b21054e5;hb=eccab56a6c06c9c2f5764d7913fd794961f60214;hp=7cee8a9aa578f261fef566f261f8603336a26686;hpb=a5df374fbd412bb8540448bc4a437492b505d39a;p=chaz%2Fopenbox diff --git a/src/openbox.cc b/src/openbox.cc index 7cee8a9a..4e098cb8 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -58,17 +58,19 @@ Openbox *Openbox::instance = (Openbox *) 0; void Openbox::signalHandler(int signal) { switch (signal) { - case SIGHUP: - printf("Caught HUP signal. Restarting.\n"); + case SIGUSR1: + printf("Caught SIGUSR1 signal. Restarting.\n"); instance->restart(); break; - + + case SIGHUP: case SIGINT: case SIGTERM: case SIGPIPE: printf("Caught signal %d. Exiting.\n", signal); instance->shutdown(); break; + case SIGFPE: case SIGSEGV: printf("Caught signal %d. Aborting and dumping core.\n", signal); @@ -108,6 +110,7 @@ Openbox::Openbox(int argc, char **argv) action.sa_handler = Openbox::signalHandler; action.sa_mask = sigset_t(); action.sa_flags = SA_NOCLDSTOP | SA_NODEFER; + sigaction(SIGUSR1, &action, (struct sigaction *) 0); sigaction(SIGPIPE, &action, (struct sigaction *) 0); sigaction(SIGSEGV, &action, (struct sigaction *) 0); sigaction(SIGFPE, &action, (struct sigaction *) 0); @@ -356,6 +359,13 @@ void Openbox::setFocusedClient(OBClient *c) otk::OBProperty::Atom_Window, (c && _focused_screen == *it) ? c->window() : None); } + + // call the python Focus callbacks + EventData *data = new_event_data(_focused_screen->number(), + c ? c->window() : 0, + EventFocus, 0); + Openbox::instance->bindings()->fireEvent(data); + Py_XDECREF((PyObject*)data); } void Openbox::execute(int screen, const std::string &bin)